3

希望有一种方法可以发现正在生成的提交的 sha。我在一个 commit-msg 钩子里。我想将 sha 附加到提交消息的末尾,以便我的 git gui 可以为我建立到 GitHub 的链接。

4

2 回答 2

8

SHA1 哈希生成取决于提交消息,因此将哈希附加到提交消息会导致哈希不同。你有鸡或蛋的问题。

于 2012-04-20T08:02:31.623 回答
3

SHA1 尚未生成(提交尚未发生,因为钩子可以阻止它)并且取决于消息的内容。因此,如果您的钩子要计算“它将是什么”然后修改消息,则结果将与计算的 SHA1 不同。

因此,虽然可以计算“SHA1 将是什么”,但您不能将其转储到提交消息中。

下面是计算实际提交的 SHA1 的方法,但是,给定提交的 SHA1 :-) 或引用它的名称:

$ git cat-file -p HEAD > /tmp/t
$ git hash-object -t commit /tmp/t
ea5670c9d18fb1482ea2f3022c96e287afb3e906
$ git rev-parse HEAD
ea5670c9d18fb1482ea2f3022c96e287afb3e906

因此,如果您知道tree、所有的parents、theauthorcommitter字符串并拥有消息文本,您就可以计算出 SHA1 将是什么。

于 2012-04-20T08:05:09.757 回答