何らかの理由で、リポジトリに空のファイルが必要です。ファイルが存在する必要がありますが、ビルド プロセスによって変更されるため、それらの変更をコミットしたくありません。私のリポジトリを複製するユーザーも、このファイルの変更を無視する必要があります。
git update-index --assume-unchanged
良さそうですが、ローカルでしか機能しません。
どうすればこれを解決できるか知っていますか?
何らかの理由で、リポジトリに空のファイルが必要です。ファイルが存在する必要がありますが、ビルド プロセスによって変更されるため、それらの変更をコミットしたくありません。私のリポジトリを複製するユーザーも、このファイルの変更を無視する必要があります。
git update-index --assume-unchanged
良さそうですが、ローカルでしか機能しません。
どうすればこれを解決できるか知っていますか?
ファイルの特定のコミットされた状態を保持するようにリポジトリを設定するのは簡単で、気に入らない受信はすべて拒否できます。
ファイルの特定のコミット状態を保持するには:
# do this once when the committed path/to/file is in the state you want
x=`git rev-parse master:path/to/file`
echo path/to/file filter=wired-to-$x >>.gitattributes
# then in each repo that wants it
git config filter.wired-to-$x.clean "git show $x"
pre-receive フックはインバウンド プッシュをテストします。これは単純なものです。
#!/bin/sh
set -e
while read old new ref; do
git ls-tree $new path/to/file \
| awk '$3 != "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" {
print "path/to/file is not empty"; exit 1; }'
done
空でないパス/to/ファイルを持つインバウンド ブランチ ヒントを含むプッシュは拒否されます。"$x" をサブインして、目的の状態を確認します。完全性を高めるために、ls-tree にフィードする内部の rev-list ループを使用して、すべてのインバウンドを実行できます。