2012-04-20 5 views
1

作成中のコミットを検出する方法があります。 Imはcommit-msgフックの中にあります。コミットメッセージの最後にshaを追加して、git guiが私のためにGitHubへのリンクを構築できるようにしたいと思います。commit-msgフックで生成されたgit commitのshaを取得するにはどうすればよいですか?

+1

「あなたのgit gui」はどういう意味ですか? –

+0

"あなたのgit gui"にコミットの参照がある場合、ハッシュ*はコミットへの参照であるため、すでにコミットのハッシュを持っています。コミットメッセージ。水を得るために川を渡りたいと思うようなものです。 –

+0

私はSourceTreeを使用することがあります – wprater

答えて

7

SHA1ハッシュ生成はコミットメッセージに依存するため、ハッシュをコミットメッセージに追加するとハッシュが異なる原因になります。あなたは鶏や卵の問題があります。

2

SHA1はまだ生成されていません(フックによって防止されるため、コミットはまだ発生していません)。メッセージの内容によって異なります。だからあなたのフックが "それが何であるか"を計算してからメッセージを修正するのであれば、結果は計算されたSHA1とは異なるでしょう。

したがって、「SHA1がどのようになるか」を計算することは可能ですが、コミットメッセージにダンプすることはできません。あなたがtreeを知っていれば、すべて、

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

したがって:

は、ここでそれを参照するコミット:-)や名前のSHA1与えられた、しかし、実際のコミットのSHA1を計算する方法を説明しますparents、authorcommitterという文字列があり、メッセージテキストがある場合は、SHA1がどのようになるかを知ることができます。

関連する問題