假设在分支“ Ab”中存在一个名为“ A”的远程仓库,该仓库具有一个名为“ B”的子模块(“ Ab”是“ A”仓库的分支)。
我的计算机中没有克隆A repo,也不想克隆。 我想知道A子模块的“ Ab”分支的B子模块的git SHA1,以便对其进行git归档。
我知道A和B的URI(如果有帮助,它是一个“ ssh:// ....地址”。)
有可能吗? 怎么样?
顺便说一句,我没有对具有A和B存储库的计算机的ssh访问权限,因此我无法执行“ ssh -p port destination command”。如果有帮助,则该计算机是Gerrit服务器。
答案 0 :(得分:0)
哈希ID嵌入在提交中,或更确切地说,嵌入在树对象中,无论包含子模块引用的目录如何。例如,如果超级项目在sub / mod / ule中克隆了子模块,则必须读取提交的树,找到名为localhost:8080/hello/hey
Output: hey null
localhost:8080/hellodiff?key="cool"
Output: null "cool"
的子树,读取那个树并找到其树。子树sub
,请阅读这棵第三树并找到名为mod
的条目。与此条目关联的哈希ID是要在子模块中签出的哈希ID。
从Git存储库获取树对象而不复制存储库的唯一标准方法是使用ule
。但是,只有两种受支持的存档格式(tar和zip),对于这两种格式,git archive
都将一个子模块写为空目录,省略了哈希ID。
这意味着,除非您使用其他生成散列ID的软件,否则 only 读取散列ID的方法就是克隆超级项目。