这背后的动力是管理GitHub的源代码库和维基库,并且能够git tag
发布整个项目的状态。如果有更简单的方法可以解决这个问题,我会在评论中全力以赴:)
我需要能够在标记中包含某种子模块状态的标识符(例如,返回为git submodule status
)。我不真的需要能够将所有打包(如Include a GitHub submodule automatically in download中所述) - 我只需要的能力包含此标识符 - 但我可以使用的任何其他功能 awesome 。
顺便说一句,我很惊讶这在.gitmodules
没有跟踪。我理解它在.git
中的某个地方,但似乎并没有跟踪其中的任何信息(这是不合理的。)
答案 0 :(得分:0)
与子模块关联的提交ID作为commit
对象存储在包含子模块的目录的tree
对象中。例如,我在packstack本地检出了packstack/puppet/modules
中有多个子模块;我们可以看到这样的提交:
$ git ls-tree HEAD | awk '/packstack/ {print $3}'
e7f8ff02ee9ceb26df165439fdffdad13e7ffe63
$ git ls-tree e7f8ff02ee9ceb26df165439fdffdad13e7ffe63 | awk '/puppet/ {print $3}'
0f710acfee985c3f8c3e559425a76194a4a809ea
$ git ls-tree 0f710acfee985c3f8c3e559425a76194a4a809ea | awk '/modules/ {print $3}'
1ccbe1d23c3ae2f2fe6aab987dd8d84d634012ef
$ git ls-tree 1ccbe1d23c3ae2f2fe6aab987dd8d84d634012ef
160000 commit 6d2dc044e12c4c687647cff8bc60c981d9ed5312 heat
160000 commit 17ba6a73cec7f386922e6a914a120a829e225efc horizon
160000 commit fe9b0d5229ea37179a08c4b49239da9bc950acd1 inifile
160000 commit bb67ef3e0a7c605cee97f9a8ccd13000290f9b39 keystone
.
.
.
当然,您可以通过从HEAD
以外的其他位置开始查看存储库以前版本的提交ID。