如何知道分支中的子模块而不检查它

时间:2014-10-08 15:20:20

标签: git git-submodules

是否有任何编程方式可以找出非删除提交中的子模块?基本上,我希望能够做git submodule status <commit>(遗憾的是,该选项不存在,至少在1.9.7.5中)

我可以想到两种选择;没有一个看起来很优雅:

  1. git submodule summary -n 1 commit;然后使用git submodule status

  2. 解析输出并推断子模块的差异
  3. 获取文件的内容&#34; .gitmodules&#34;在该特定提交,然后解析它

  4. 任何更简单的解决方案?

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

git ls-tree -r <commit> | awk '$2 == "commit"'

虽然它只告诉你子模块附加的路径以及应该检查的相应提交。如果您想获取URL或其他信息,您可能必须解析该提交中的.gitmodules文件,如您所述。

答案 1 :(得分:0)

你可以使用GIT_INDEX_FILE的第二个索引,然后运行git submodule status --cached吗?

我不使用子模块,因此不能100%确定语法是否可行

git read-tree --index-output=$tmp_index $branch
GIT_INDEX_FILE=$tmp_index git submodule status --cached