如何用gitweb确定子模块SHA-1?

时间:2010-02-05 01:07:03

标签: git git-submodules gitweb

我想确定子模块的关联SHA-1而不克隆任何东西 - 即远程。 git-ls-remote没有显示这些信息,所以我最初的方法是从gitweb中删除XHTML并将SHA-1从那里拉出来。

不幸的是,gitweb对子模块的支持似乎很差,在尝试查看关联路径的历史记录时显示404和500“未知对象”错误。因此,我似乎无法确定子模块的关联SHA-1,除非我能够识别修改git-link的确切提交,然后解析diff之类的内容:

-Subproject commit 706187649544cb029b617548771fe96c1693be39
+Subproject commit f05b9854fca9a2e1f47449e563a33156c1085646

不幸的是,gitweb被子模块破坏了,我找不到一种方法来确定哪个提交包含这个差异,所以除非我通过每次提交进行详尽的搜索,否则它是不行的。

我尝试过与git 1.6.4.2和1.6.6.1(最新稳定版)捆绑在一起的gitweb。

任何人都可以想到一个解决方案,或者可能是另一种方法,无需克隆每个存储库。你看,我想为我们组织中的所有存储库以及每个存储库中的每个分支执行此操作,这就是很多分支。我这样做是为了得到所有子模块提交的列表,并确定是否有任何过期。

如果唯一的解决方案是单独克隆每个存储库并在其中运行查询,那么必须是它。不幸的是,我们的一些存储库非常大,所以这会使整个操作非常慢。

1 个答案:

答案 0 :(得分:1)

我不确定它是否会给你你想要的答案:

查看gitweb 1 中的“树”视图,查看包含子模块的目录(这可能是您的存储库的顶级目录)。您可以通过将m---------作为模式字符串来识别子模块。对于每个子模块,您应该具有“历史记录”链接,其中您将获得在给定子模块下更改的所有提交的列表。 (这至少需要git 1.5.3版本的gitweb。)

我认为,在gitweb中缺少更好的子模块支持是由于很难检测到子模块的存储库(git_dir)的位置。

HTH

脚注:
1.如果你提供了gitweb安装的链接,如果它可以公开,那将会有所帮助。

相关问题