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

标签 git git-submodules gitweb

我想在不克隆任何东西的情况下确定子模块的关联 SHA-1 - 即远程。 git-ls-remote 不显示此信息,所以我最初的方法是从 gitweb 中抓取 XHTML 并从那里提取 SHA-1。

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

-Subproject commit 706187649544cb029b617548771fe96c1693be39
+Subproject commit f05b9854fca9a2e1f47449e563a33156c1085646

不幸的是,gitweb 的子模块太多了,我无法找到一种方法来确定哪个提交包含这个差异,所以除非我对每个提交进行详尽的搜索,否则这是不行的。

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

任何人都可以想到一个解决方案,或者一个替代方法来执行此操作而无需克隆每个存储库。你看,我想对我们组织中的所有存储库以及每个存储库中的每个分支执行此操作,这是很多分支。我这样做是为了获取所有子模块提交的列表,并确定是否有任何内容已过时。

如果唯一的解决方案是单独克隆每个存储库并在其中运行查询,那么就只能这样了。不幸的是,我们的一些存储库非常大,因此这会使整个操作非常缓慢。

最佳答案

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

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

我认为 gitweb 中缺乏更好的子模块支持是因为很难检测子模块的存储库(git_dir)在哪里。

HTH

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

关于git - 如何使用 gitweb 确定子模块 SHA-1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204415/

相关文章:

windows - git编辑我的文件

git - 仅从 'git diff' 获取静态代码分析器消息?

git - 提交到 GIT 之前的代码格式化

git - 如何恢复使用 `git rm .` 意外删除的文件?

git - 在一个命令中添加具有特定标记而不是分支的子模块

gitweb 变慢了

file-permissions - apache 权限被拒绝 : exec of '/usr/sbin/suexec2' failed

c++ - 如何使用 Git 子模块和 CMake 处理传递依赖冲突?

Git - 如何更改子模块的 url/路径

gitweb 和每个项目的 http 身份验证