Jak ustawić wiele `core.excludesfile` w` .gitconfig`?

13

Synchronizuję ~/.gitconfigi ~/.gitignorepliki w Ubuntu i Mac za pomocą dropboksa i utworzyłem dla niego dowiązanie symboliczne.

I excludesfilejest tak zadeklarowane.

[core]
        editor = /usr/bin/vim
        excludesfile = /Users/username/.gitignore

Problem w tym, że katalog domowy różni się w zależności od systemu operacyjnego, dlatego potrzebuję wielu ustawień dla pliku wykluczającego.

Czy można zdefiniować wiele core.excludesfile?

żelazko piaskowe
źródło

Odpowiedzi:

17

Możesz mieć tylko jeden core.excludesfile; ostatnie ustawienie jest używane. Jednak nie potrzebujesz wielu plików: git obsługuje ~jako skrót do twojego katalogu domowego.

[core]
    excludesfile = ~/.gitignore

Ogólnie rzecz biorąc, jeśli naprawdę potrzebujesz wielu plików wykluczeń, najprostszym rozwiązaniem byłoby wygenerowanie jednego pliku, który jest konkatenacją innych plików i aktualizowanie go przy każdej zmianie jednego z plików.

Gilles „SO- przestań być zły”
źródło
Mój .gitconfigjest właściwie pod kontrolą wersji przez git. Niestety, git rozwija ~się jako pełna ścieżka $HOMEi aktualizuje się .gitconfigsamą ścieżką absolutną. Takie zachowanie jest w porządku, ale potem pojawia się jako zmiana bezstopniowa, więc używam git update-index --assume-unchanged .gitconfigdo zignorowania rozszerzenia (wraz z resztą pliku).
Dolph,
2
@Dolph status-norepro Co zrobiłeś, aby spowodować ~rozszerzenie? Dostaję: git config --global core.excludesfile '~/.gitignore'; git config --global core.excludesfile~/.gitignore(git 1.7.9.5)
Gilles 'SO- przestańcie być źli'
1
@Dolph Najprawdopodobniej było to rozszerzenie powłoki; w końcu, jeśli to zrobisz, git config --global core.excludesfile ~/.gitignoreto tak naprawdę jest uruchomione git config --global core.excludesfile /path/to/home/.gitignore.
Radon Rosborough,
1
@Gilles, zauważ również, że zgodnie z git-scm plik, ~/.config/git/ignorejeśli istnieje, jest globalnie ignorowany automatycznie, bez konieczności globalnej konfiguracji.
Acumenus