2016-11-30 5 views
0

私はpre-commit-hookをファイルのためにいくつかの変更を加えたpythonで書いています。今度は、このファイルを追加して、pre-commit-hookの変更を含めたいと考えています。ファイルを追加するためのgit python pre-commitフック

私はそれが正常にファイルが追加されますが、私のフックはそれが動作しませんPythonの対話セッションでこれをしようとした場合、この

subprocess.check_call(('git', 'add', filename)) 

を行うためにsubprocessを使用しようとしました。
フックの動作が正しいディレクトリを形成していることを確認しました。

ファイルを正しく追加するにはどうすればよいですか?

編集:gitバージョンは2.1.4

+0

まず、フックが実際に動作していることを確認します(たとえば、何かを印刷またはログに記録させる)。それが実行されていない場合、それに何も影響しません!実際に*実行されている場合、次のステップはあなたのGitバージョンに依存します。 (いずれにしても*コミットするものを変更するフック*は一般的には良い考えではありません:これらのフックは*検証して0または0以外で終了してコミットを許可または禁止してください) – torek

+0

私のフック(いくつかのprintステートメントを使用して)実行中です。私がファイルを追加する理由は、フックがファイルを検証した後にバージョン番号を追加するためです。フックは私がこれを行うために知っている唯一の安全な方法です。 – DerWeh

答えて

0

興味深いです:事前にコミットフックが本当に実行されている限り、git addが1.5.4より後の任意のGitのバージョンに反映すべきです。 GitのGitリポジトリのthis commitを参照してください。これはあなたの特定のGitのバージョンで壊れている場合

(私はこれはGitリポジトリの一部のバージョンでは正常に動作していないが、それは任意の特定のバージョンに破壊される覚えていません持っ覚えておいてください。)

代替、にありますあなたのプリコミットフックを持っているファイルを追加するには、自身のgit commitを実行して、内部再帰コミットをにしないでください再帰これはあなたに任されます。そして、内部コミットが終了すると、拒否します。コミット。このソリューションは、すべてのコミットが失敗するように見えるので、醜いです。

関連する問題