Проблема с применением фильтров git для отмены изменений определенных строк в файле - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть хранилище git со следующим содержимым в каталоге root хранилища:

 .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

Однако это не так, и я все еще вижу изменения для 2 строк в моем git.

Я подозреваю, что некоторые пути не верны, и фильтры работают неправильно. Может кто-нибудь указать, что мне здесь не хватает? Спасибо!

...