Ich muss ein Git Repo in ein bestehendes Verzeichnis klonen ($HOME
, für die Verwaltung von dotfiles). Ich mache einen nackten Klon und rekonfiguriere ihn, weil ich in ein vorhandenes unsauberes Arbeitsverzeichnis klonen muss. Es funktioniert, aber ich finde, dass git status
versucht, Filter bei der ersten Verwendung auszuführen. Warum macht es das und wie kann ich es verhindern?Warum gibt 'git status' Filter aus?
Try this:
# 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
Diese 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
Dies gilt nicht
$ git status
On branch master
nothing to commit, working tree clean
Auch zunächst git status
mehrmals kurz hintereinander zu tun (dh git status; git status; git status)
können mehrere Ausbeute Fehler Manchmal
Soweit ich durch much reading bestätigen kann, sollten die Filter nur beim Ein- und Auschecken von Dateien ausgeführt werden.
Warum funktioniert git status
sie?
was ist deine 'git --version'? –
git version 2.11.0 – starfry
Übrigens würde ich dot-files auf diese Weise nicht verwalten (und nicht). Stattdessen habe ich ein Git-Verzeichnis mit dem Namen 'Dotfiles' in meinem Home-Verzeichnis, das eine gewöhnliche, nicht-bare Struktur ist, und dann symbole ich' 'was auch immer 'auf' Dotfiles/was auch immer'. – torek