测试URL已知的远程存储库是否包含哈希提交

时间:2015-07-16 04:43:50

标签: git

给定远程存储库URL和SHA哈希,是否可以测试哈希是否代表存储库中的提交:

  1. 根本没有取物?
  2. 如果没有,尽可能少提取(浅,不是所有分支)?
  3. 我认为最接近的答案是git fetch cannot fetch a commit by hash,这不是很有希望的。 ls-remote也适用于refs。我找不到任何看起来有帮助的相关命令。

    背景:构建/打包工具需要验证包含提交的SHA哈希的构建是否可以在特定的“黄金”存储库中进行跟踪 - 而不是在的法律或加密声音方面可跟踪的,而不仅仅是为了防止在将二进制文件投入生产之前不共享代码的常见人为错误。任何关于解决这个问题的想法都会受到赞赏。

    实际上,本地git存储库几乎肯定存在,并且具有给定URL的远程也很可能存在于其中(或者如何将提交推送到黄金存储库中?),但我宁愿避免,如果可能,使用fetch更改该用户存储库的状态。

1 个答案:

答案 0 :(得分:2)

“无法通过哈希获取提交”。

嗯......关于那个:Git 2.5将允许你获取一个特定的提交!
请参阅“Pull a specific commit from a remote git repository” Git 2.5将于本月底(7月27日)发布

git fetch --depth=1 ../testrepo/.git $SHA1
git cat-file commit $SHA1

如果可以从远程仓库的其中一个分支提示访问SHA1,您就可以获取它,这将验证您的测试。

警告:您需要一个Git 2.5远程仓库服务器,它将处理uploadpack.allowReachableSHA1InWant配置(并且您需要将该配置设置为true ,为了允许单次提交获取)。

因此,对于现有的Git服务器,答案是“可能不可能”(至少没有获取所有内容,因为您不知道要获取哪个分支)。