git サーバーによるファイルの除外を強制したい。ユーザーは、ルールに一致しないファイルを中央リポジトリにプッシュできないようにする必要があります。git サーバー側で /info/exclude にルールを設定しようとしましたが、無視されます。
それを行う方法はありますか?(フックソリューションを除く)。
ご協力いただきありがとうございます
ユーザーにシステム構成を追加するように依頼できます。
git config --system core.excludesfile /share/path/to/system/wide/gitignore
このようにして、ユーザーは共有 (gitignore) ファイルを参照しています。
フック ソリューションの除外
いいえ。Git サーバーは、どこかに存在し、対話するだけのベア リポジトリであり、プッシュ先のオブジェクトの種類を気にしません。オブジェクトを独自のオブジェクトデータベースにコピーし、いくつかの参照ポインターを時々変更するだけです。ツリーオブジェクトを見て、除外したいパスと一致するパスがあるかどうかを確認するものは何もありません。
これを行う唯一の方法は、pre-receive または update フックのいずれかのフックを使用することです。新しい参照を取得し、除外するパスが新しいコミット内で触れられているかどうかを確認します。そうであれば、プッシュを中止できます。