0

リポジトリのルート ディレクトリに次の内容の git リポジトリがあります。

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

MyFile.txtコンテンツが次のような特定の行に加えられた変更をオーバーライドするフィルターを追加したいと考えています。

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

parameter1作業ディレクトリで変更されたときにとの行がparameter2git に反映されないようにします。

.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