Skip to content

Globales gitignore ...

Wenn man Dateien aus der Versionskontrolle mit git ausschliessen möchte, kann man im Repository eine Datei .gitignore anlegen. Das ist sinnvoll, wenn es Dateien gibt, die in nur einem Repository ausgeschlossen werden sollen.

Anders ist es, wenn man Backupdateien des Editors ausschliessen möchte. Da in der Regel mehrere Menschen an einem Projekt arbeiten und vielleicht sogar jeder einen anderen Editor benutzt, ist es sinnvoller, dass jeder die Dateien ausschliesst, die seinem Editor entsprechen.

Dazu kann mit dem folgenden Kommando die globale Variable core.excludesfile gesetzt werden, die einen Dateinamen beinhaltet, in der die globalen Ausschlusskriterien zu finden sind.
git config --global core.excludesfile ~/.gitignore_global


Bei mir enthält sie derzeit nur:
*~
Das sind die Backupdateien von vim.

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Florian Bruhin am :

*Ich hab das so gelöst, dass ich vim einfach gesagt habe, es soll die backup- und temporäre Files in einem zentralen Ordner anlegen:

CODE:
let vimfiles = expand("$HOME/.vim")
let &backupdir=vimfiles . "/bak"
let &dir=vimfiles . "/tmp"

Florian Bruhin am :

*Hm, das Kommentarsystem scheint offensichtlich ampersands (zumindest in code-Blöcken) kaputt zu machen.

foo & bar

CODE:
foo & bar

Dirk Deimeke am :

*Das ist auch eine nette Idee, ich hätte aber gerne die Backups in Nähe der Originaldatei. Wobei ich mich gerade nicht erinnern kann, wann ich die jemals gebraucht habe ... (auch) dafür gibt es Versionskontrolle.

In anderen Editoren lässt es sich vielleicht nicht so einfach konfigurieren.

Patrick Koetter am :

*Wenn ich es lokal setze ist es Teil des Repos und ich kontrolliere zentral, dass das ignore-File für alle gilt und umgesetzt wird. Sozusagen ein convenience setting.

Wenn ich es global setze, gebe ich die Kontrolle an die einzelnen Teammitglieder ab. Ich muss darauf vertrauen, dass sie sich an die Konvention halten.

Das kann fallweise schwierige sein…

Dirk Deimeke am :

*Ich gebe Dir absolut Recht. Man muss das sorgsam abwägen.

Ein LaTeX-Projekt beispielsweise wird eine ignore-Datei im Repository haben, die alle temporären LaTeX-Dateien ausschliesst. Die könnten aber in einem anderen Kontext bedeutsam und keine temporär-Dateien sein.

Die globale Datei trägt eher dem Rechnung, dass jeder unterschiedliche Tools benutzt, um seine Arbeit zu tun. Bei dem Einen enden Backup-Dateien auf ~, bei dem Anderen auf .bak.

Es ist ja kein "entweder / oder".

Daniel am :

*Wenn man die Dateien nicht global ausschließen will, kann man das Pattern auch im Repo unter .git/info/exclude eintragen, dann sehen andere nichts davon und man hat trotzdem per Repo die Kontrolle.

Dirk Deimeke am :

*Ja, genau, das ist die dritte Variante, die allerdings sehr selten benutzt wird.

Für mich ist es so, dass ich den Editor in allen Projekten benutze, daher ist die globale Datei für mich der richtige Ort.

Denny am :

*Entschuldigung fürs Klugscheißen

Die gitignore von Github ist ein wenig länger :-)

Vim.gitignore

Ich bin noch unentschlossen welcher Weg besser ist. Auf der einen Seite gebe ich die Kontrolle ab aber auf der anderen Seite erhalte ich eine .gitignore Datei die wirklich nur die Projekt relevanten Dinge enthält (z.B docker macht das so).

Dirk Deimeke am :

*Vielen Dank für den Link, Denny!

Es gibt eine Reihe an Empfehlungen in "best practises" und in grosser Übereinstimmung beschreiben sie das, was Du schreibst:

Projekt relevante Dinge, die alle betreffen in die .gitignore des Repositories (oft auch mit dem Hinweis, dass generierte Dateien nicht unter Versionskontrolle stehen sollen, wobei man da geteilter Meinung sein kann).

Projekt relevante Dinge, die nur mich betreffen (weil ich nur in dem Projekt eine bestimmte IDE verwende): .git/info/exclude

Projekt übegreifende Dinge, die nur mich betreffen, in das im Blogartikel beschriebene core.excludesfile.

Frakturfreund am :

*Git unterstützt schon seit einiger Zeit die XDG-Richtlinien für Konfigurationsdateien:

CODE:
mkdir -p ~/.config/git
mv ~/.gitconfig ~/.config/git/config
echo '*~' > ~/.config/git/ignore # bzw. mv ~/.gitignore_global ~/.config/git/ignore
touch ~/.config/git/attributes


So kann man sich den expliziten Eintrag in der config sparen (Konvention vor Konfiguration), bekommt trotzdem eine (Benutzer-)globale ignore-Datei und das Homeverzeichnis wird etwas ordentlicher :-).

Der touch-Befehl ist natürlich erst mal überflüssig, aber eine globale attribute-Datei hat für den ein- oder anderen vielleicht auch seine Reize :-).

Kommentar schreiben

Gravatar, Favatar, Pavatar, Identica, Twitter, MyBlogLog Autoren-Bilder werden unterstützt.
BBCode-Formatierung erlaubt
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
:'(  :-)  :-|  :-O  :-(  8-)  :-D  :-P  ;-) 
Formular-Optionen