【问题标题】:How to generate git sha1 of current repository如何生成当前存储库的 git sha1
【发布时间】:2017-12-07 08:33:15
【问题描述】:

我正在尝试生成存储库的当前 git sha1。 我不希望可以使用一组 git 命令生成的最后一次提交 sha1。我想要将在下一次提交中使用的 sha1(显然,如果文件没有更改)。

我希望能够生成一个包含 sha1 存储库定义的头文件。这将允许我将可执行文件与相对 git commit 相匹配,反之亦然。

问题在于并非每个可执行文件都是通过稳定的提交创建的(尤其是在开发阶段)。

出于这个原因,我选择将两者都包括在内: - 最后一次提交 sha1 - 当前存储库 sha1

如果它们匹配,则表示当前可执行文件是使用稳定提交创建的。否则,这意味着您可以只知道可执行文件的起始提交是什么。

有人可以帮我吗?

【问题讨论】:

  • 构造提交对象内容并计算其校验和。
  • 但是,如果没有文件更改,为什么还需要再次提交?提示提交的 SHA 应该足够好?您想在这里解决哪个问题?
  • 但是,您将计算的是 一个可能的提交 sha,而不是 下一个提交 sha。提交的时间与校验和相关,这意味着您必须预测未来才能做到这一点。当你解决了这个问题时告诉我,我们可以解决你提出的问题。请详细说明您想要完成的任务。
  • 也许您可以将git describe--dirty(和--always)标志一起使用?

标签: git hash commit sha1


【解决方案1】:

https://gist.github.com/masak/2415865

我刚刚发现(使用上面的链接)git 中的提交 sha1 取决于提交作者,而不仅仅是存储库文件。所以我认为实现我想要的东西是不可能的。

【讨论】:

  • 正确,它还取决于提交的时间,即使您可以确保知道谁将提交下一次提交,您也无法预测何时提交。此外,该评论也是 SHA 的一部分。简而言之,您需要预测未来。
  • 谢谢拉塞。请阅读我的问题更新。您认为是否有其他方法可以实现我的需求?
  • 是的,设置一个构建服务器,这样您将始终准确地知道您是从哪个提交构建的。
  • 什么是构建服务器?
猜你喜欢
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
  • 2019-04-25
  • 2012-04-27
  • 2016-09-22
  • 1970-01-01
  • 2022-07-05
  • 2015-10-21
相关资源
最近更新 更多