我在存储库的根目录中有一个包含以下内容的 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 行的更改。
我怀疑某些路径不正确,过滤器运行不正确。有人可以指出我在这里缺少的东西吗?谢谢!