6

私は中央のgitリポジトリを持っており、私自身と数人の共同作業者が定期的にプッシュおよびプルしています。以前、私は誤って大きなバイナリブロブをコミットしましたが、これは完全に削除するにはリベースが必要であり、誰にとっても苦痛です。今後、これを防止したいと思います。プッシュされるファイルのファイルサイズをチェックし(ファイルが新しく追加されているか、既存のファイルが更新されているかどうか)、しきい値サイズ(2MBなど)を超えるファイルのプッシュを拒否するフックをリモートリポジトリに設定することは可能ですか?

重要なのは、手付かずの2MBを超える既存のファイルを許容できるようにすることです(したがって、プッシュによって2MBのファイルが追加されるか、既存のファイルが2MBに拡張される場合にのみ、2MBのファイルが既にリポジトリにある場合にプッシュが拒否されないようにする必要があります。 )。また、フックをリモート側で実行したいので、クライアントがフックを設定する必要がないことを心配する必要はありません。

編集:プッシュには複数のコミットを含めることができ、大きなファイルを含む1つのコミットでもリポジトリにスタックするため、/ anycommit/を含むプッシュから保護したいと思います。

4

1 に答える 1

5

事前受信フックがこのチェックの正しい場所であるように思われます。このフックはプッシュのサーバー側で実行され、ファイルサイズチェックを実装するのに十分な情報にアクセスできます。

このフックは、リモートリポジトリのgit-receive-packによって呼び出されます。これは、ローカルリポジトリでgitpushが実行されたときに発生します。リモートリポジトリの参照の更新を開始する直前に、pre-receiveフックが呼び出されます。その終了ステータスによって、更新の成功または失敗が決まります。

于 2012-07-18T20:09:07.093 に答える