如何检索在commit-msg钩子中生成的git提交的sha?

时间:2012-04-20 07:47:09

标签: git githooks sha

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

尚未生成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,所有parentauthorcommitter字符串并且有消息文本,那么您可以弄明白SHA1将是。