リポジトリのルート ディレクトリに次の内容の git リポジトリがあります。
.git
.gitattributes
.gitconfig
gitfilters.py
MyFile.txt
MyFile.txt
コンテンツが次のような特定の行に加えられた変更をオーバーライドするフィルターを追加したいと考えています。
parameter1 = value1
parameter2 = value2
parameter3 = value3
parameter4 = value4
parameter5 = value5
parameter1
作業ディレクトリで変更されたときにとの行がparameter2
git に反映されないようにします。
.gitattributes
これを実現するために、ファイルにフィルターを追加しました。
MyFile.txt filter=MyFilter
ファイルで次のように定義MyFilter
しました。.gitconfig
[filter "MyFilter"]
clean = python ../gitfilters.py
smudge = cat
gitfilters.py
変更したくない行を置き換えるスクリプト:
import sys
OVERRIDE_PARAMS = {'parameter1': 'value1','parameter2': 'value2'}
for line in sys.stdin:
for param, value in OVERRIDE_PARAMS.items():
if param in line:
line = f'{param} = {value}\n'
sys.stdout.write(line)
exit()
次に.gitconfig
、.git/CONFIG
ファイルに次のように含めました。
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[include]
path = ../.gitconfig
これらすべての変更により、以下のように変更MyFile.txt
しても、私の git ステージング領域はまだクリーンであると期待しています
parameter1 = value1NEW
parameter2 = value2NEW
parameter3 = value3
parameter4 = value4
parameter5 = value5
ただし、そうではなく、git の 2 行の変更がまだ表示されます。
一部のパスが正しくなく、フィルターが正しく実行されていないと思われます。誰かが私がここで見逃しているものを指摘してもらえますか? ありがとう!