如何在不克隆容器git repo的情况下获取git子模块的git SHA1

问题描述 投票:0回答:1

假设存在名为“A”的远程仓库,其具有名为“B”的子模块,在分支“Ab”中(“Ab”是“A”仓库的分支)。

我没有在我的机器上克隆A repo,也不想克隆它。我想知道A子模块的“Ab”分支的B子模块的git SHA1,以便git归档它。

我知道A和B的URI(它是一个“ssh:// ....地址,如果有帮助的话)。

那可能吗?怎么样?

顺便说一下,我没有ssh访问具有A和B存储库的机器,所以我不能做“ssh -p port destination command”。如果它有帮助,该机器是一个gerrit服务器。

git
1个回答
0
投票

散列ID嵌入在提交中 - 或者在技术上,在树对象中嵌入包含子模块引用的任何目录。例如,如果超级项目在sub / mod / ule处克隆子模块,则必须读取提交树,找到名为sub的子树,读取该树并找到其名为mod的子树,读取第三个树和找到名为ule的条目。与此条目关联的哈希ID是要在子模块中检出的哈希ID。

在没有克隆存储库的情况下从Git存储库获取树对象的唯一标准方法是使用git archive。但是,只有两种支持的归档格式(tar和zip),对于这两种格式,git archive将子模块写为空目录,省略了散列ID。

这意味着除非你有其他产生它的软件,否则读取哈希ID的唯一方法就是克隆超级项目。

© www.soinside.com 2019 - 2024. All rights reserved.