Мне нужно клонировать git repo в существующий каталог ($HOME
, для управления dotfiles). Я делаю голый клон и реконфигурирую его, потому что мне нужно клонировать в существующий рабочий стол unclean. Это работает, однако я обнаружил, что git status
пытается запустить фильтры при первом использовании. Почему это так и как я могу предотвратить это?Почему «git status» запускает фильтры?
Попробуйте это:
# create a test repo
mkdir test && cd test
git init
echo hello > hello.txt
git add .
git commit -m 1
echo 'hello.txt filter=foo diff=bar' > .gitattributes
git add .
git commit -m 2
# clone it bare and configure it
mkdir ../test2 && cd ../test2
git clone --bare ../test .git
git config core.bare false
git config core.logallrefupdates true
git reset
git checkout .
git config filter.foo.clean foo
git config filter.foo.smudge foo
git config diff.bar.textconv bar
Это borks
$ git status
error: cannot run foo: No such file or directory
error: cannot fork to run external filter 'foo'
error: external filter 'foo' failed
On branch master
nothing to commit, working tree clean
Это не
$ git status
On branch master
nothing to commit, working tree clean
Кроме того, первоначально делать git status
несколько раз в быстрой последовательности (т.е. git status; git status; git status)
может дать многократный Иногда.
Насколько я могу подтвердить, much reading, фильтры должны запускаться только при проверке файлов.
Почему именно git status
ими управляют?
что такое 'git -version'? –
git version 2.11.0 – starfry
Кстати, я не буду (и не буду) управлять dot-файлами таким образом. Вместо этого у меня есть каталог Git с именем 'Dotfiles' в моем домашнем каталоге, который является обычным не-голым деревом, а затем я ссылаюсь на' .whatever' на 'Dotfiles/whatever'. – torek