0

我在存储库的根目录中有一个包含以下内容的 git 存储库:

 .git
 .gitattributes
 .gitconfig
 gitfilters.py
 MyFile.txt

我想添加一个过滤器来覆盖对其MyFile.txt内容如下所示的某些行所做的任何更改:

parameter1 = value1
parameter2 = value2
parameter3 = value3
parameter4 = value4
parameter5 = value5

我希望在工作目录中更改时带有parameter1parameter2不反映 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 行的更改。

我怀疑某些路径不正确,过滤器运行不正确。有人可以指出我在这里缺少的东西吗?谢谢!

4

0 回答 0