11

Git コミット後のフックでコミットに費やされた時間を把握しようとしています。

コミットに関する API を介して情報を送信するコミット後の git フックがあります。私がやりたいことは、コミットに費やされた時間を把握することです。だいたい。

関連するすべてのファイルの作成時間と変更時間の最小値を見つけ、最大の作成時間と変更時間と比較することで、大まかな値を計算できると思います。

これは、Python スクリプトで簡単に実行できます。「foo.txt」、「bar.txt」、「path/bla.txt」というファイルだと誰かに言われたら、これらのファイルに基づいてスクリプトで簡単に計算を行うことができます。

では、git post-commit フックでは、変更されたファイルのリストを取得するにはどうすればよいでしょうか?

4

2 に答える 2

12

git を中心にスクリプトを作成するときは、配管コマンドに固執するようにしてください— それらの形式は変更される可能性が低く、解析が容易です。コミットで変更されたパスの名前を出力するコマンドは次のとおりです。

git diff-tree -r --name-only --no-commit-id <tree-ish>

それはさておき、ファイルがステージングされたときのタイムスタンプが含まれているため、インデックスを調べたい場合があります。これにより、さらに有利になる可能性があります。ただし、この情報にアクセスする方法はないと思います。

于 2010-11-17T15:49:49.070 に答える
0

いくつかの調査を行っており、それgit log --name-only -n1が最善のアプローチであることがわかりました。分を取得することは難しくありません。と最大。文字列照合を少し行い、Pythonos.statモジュールを使用して、ファイルからタイムスタンプを取得します。

一般的な解決策としては、ファイルの変更時間は実際に費やされた時間の現実を実際には反映していないため、それでもあまり良くありません。

于 2010-11-17T15:10:39.620 に答える