チームにいくつかのコーディング規則を適用しようとしています。その目的のために、クライアント側のフックをいくつか作成しましたが、これらは問題なく動作しますが、開発者が変更を中央リポジトリにプッシュするときに同じチェックを実行する必要があります。しかし、それらは機能しません。
これが私がやりたいことです:
プッシュされたファイルを 1 行ずつトラバースし、コーディング規則違反をチェックし、見つかった場合はプッシュを拒否し、行番号と違反も表示したいと考えています。
私の pre-commit クライアント側フックではgit diff --cached --name-status --diff-filter=AM
、変更されたファイルのリストをgit cat-file -p :filename
取得するために呼び出し、最初の呼び出しで取得されたファイルごとにファイルのテキスト全体を取得することで、これを行うことができました。
サーバー側のフックで同じことをしようとすると、update
(ファイルのリストに対して) 空の文字列が返されます。
また、呼び出してみgit show --pretty="format:" --name-only newrev
ました (ここで、newrev は更新フックへのパラメーターとして取得する SHA でgit diff-tree -r --name-only --no-commit-id <tree-ish>
あり、ネット上で見つけた他のものですが、何が起こっているのか、何を呼び出す必要があるのか を明確に理解することはできません.
手伝って頂けますか?