Я определил фильтры smudge и clean для моего репозитория git. Я тестировал сценарии отдельно, и я уверен, что они работают правильно.
Но когда я git commit && git push
, удаленная версия не фильтруется.
Что я делаю неправильно? Кроме того, есть ли способ проверить, работает ли фильтр, не нажимая его в удаленный репозиторий?
Репозиторий выглядит следующим образом:
zsh/
|- zshrc
git/
|- gitconfig
.gitattributes
.gitconfig
config
zshrc-clean.zsh
zshrc-smudge.zsh
gitconfig-clean.zsh
gitconfig-smudge.zsh
zsh/zshrc
export HOMEBREW_GITHUB_API_TOKEN = abcdefg
git/gitconfig
[user]
email = [email protected]
.gitattributes
zsh/zshrc filter=zshrc
git/gitconfig filter=gitconfig
.gitconfig
[filter "zshrc"]
clean = zsh zshrc-clean.zsh
smudge = zsh zshrc-smudge.zsh
[filter "gitconfig"]
clean = zsh gitconfig-clean.zsh
smudge = zsh gitconfig-smudge.zsh
config
git:user:email = [email protected]
zsh:HOMEBREW_GITHUB_API_TOKEN = abcdefg
configuration-scripts/gitconfig-clean.zsh
sed '/email/ s/= .*/= REPLACEME:git:user:email/' /dev/stdin
gitconfig-smudge.zsh
user_email=$(sed -n '/git:user:email/ { s/.* = //; p; }' ~/dotfiles/config)
sed "s/REPLACEME:git:user:email/$user_email/" /dev/stdin
zshrc-clean.zsh
sed '/export HOMEBREW_GITHUB_API_TOKEN/ s/=.*/=REPLACEME:zsh:HOMEBREW_GITHUB_API_TOKEN/' /dev/stdin
zshrc-smudge.zsh
HOMEBREW_GITHUB_API_TOKEN=$(sed -n '/HOMEBREW_GITHUB_API_TOKEN/ { s/.* = //; p; }' ~/dotfiles/config)
sed "s/REPLACEME:zsh:HOMEBREW_GITHUB_API_TOKEN/$HOMEBREW_GITHUB_API_TOKEN/" /dev/stdin
Проверить фильтры
zsh zshrc-clean.zsh < zsh/zshrc > zshrc-temp
cat zshrc-temp
zsh zshrc-smudge.zsh < zshrc-temp
zsh gitconfig-clean.zsh < git/gitconfig > gitconfig-temp
cat gitconfig-temp
zsh gitconfig-smudge.zsh < gitconfig-temp