Zu wissen, welche Dateien, Dokumente und Informationen in ein Repository eingecheckt werden sollen, ist essentiell. Davon hängt in der Regel ab, ob ein Projekt, das frisch ausgecheckt wurde, auch erzeugt werden kann. Zudem kann die Größe des Repositories verringert werden, da unwichtige Dateien gar nicht erst in diesem landen.
Mindestens genau so wichtig ist aber das Wissen, welche Dateien nicht in das Repository gehören. Beispielsweise automatisch erzeugte Dateien vom Betriebssystem, Schlüssel und Signaturen, sowie oftmals auch alles was durch einen Prozess erzeugt werden kann.
Bei Git ist dafür die Datei .gitignore zuständig. Sie enthält Dateien und Verzeichnisse, die nicht mit eingecheckt werden sollen. Oder auch explizit erlaubt sind.
Einige Anbieter, wie beispielsweise GitHub, bieten die Möglichkeit, je nach gewählter Sprache für ein Repository, eine gitignore-Datei direkt automatisch zu erzeugen und auch automatisch im Repository zu speichern. Das nimmt viel Arbeit ab. Manchmal müssen diese Dateien aber auch manuell erstellt werden. Auch eine nachträgliche Pflege ist – in der Regel – erforderlich und eine manuelle Tätigkeit.
Das Projekt gitignore.io
Eine Alternative ist die Seite http://gitignore.io/, die auf Anfrage eine .gitignore-Datei erzeugt. Die Website ist denkbar einfach gestaltet (siehe Abbildung 1). Das Textfeld nimmt Stichwörter entgegen und zeigt an, ob diese dem System bekannt sind.
Auf Basis dieser Schlüsselwörter wird eine .gitignore-Datei generiert und im Browser angezeigt, beziehungsweise alternativ zum Download angeboten. Darin sind die wichtigsten Einstellungen für Dateien und Verzeichnisse enthalten, die nicht in ein Repository eingecheckt werden dürfen.
Sehr gut ist, dass diese Schlüsselwörter kombiniert werden können. Für Java wird beispielsweise die folgende Datei generiert:
# Created by http://gitignore.io
### Java ###
*.class# Package Files #
*.jar
*.war
*.ear
Bei der Eingabe von Windows sieht die Datei dagegen so aus:
# Created by http://gitignore.io
### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db# Folder config file
Desktop.ini# Recycle Bin used on file shares
$RECYCLE.BIN/
Sind beide Schlüsselwörter angegeben, enthält die generierte .gitignore-Datei die kombinierten Zeilen. Das kann viel Arbeit abnehmen. Es gibt auch Schlüsselwörter, die schon eine automatische Verknüpfung von Daten enthalten. Beispielsweise für Visual Studio. Dort werden nicht nur die Dateien und Verzeichnisse im Zusammenhang mit Visual Studio vom Repository ausgeschlossen, sondern eben auch die von Windows.
Zugriff über die Kommandozeile
Aber es ist nicht nur der Zugriff über die Website möglich. Auf der Website werden auch Skripte für die Kommandozeile vieler Betriebssysteme angeboten. Beispielsweise auch für die PowerShell, wie das folgende Gist zeigt. Die Skriptdatei stelle ich auch als Download zur Verfügung. Allerdings als txt-Datei, da ps1-Dateien bei WordPress blockiert sind.
[gist id=7483169 file=gitignore.ps1]
Als Beispiel habe ich das Skript für die PowerShell 3.0 gewählt. Das Beispiel auf der Website enthält noch Escape-Zeichen vor den Gleichheitszeichen. Die müssen zwingend entfernt werden. Zudem ist der Funktionsname gi
im Skript unglücklich gewählt. Dieser Name scheint schon als Alias für die Funktion Get-Items
belegt zu sein.
Um die Funktion nutzen zu können, muss sie zunächst über das spezielle PowerShell-Kommando . .\gi.ps1
bekannt gemacht werden. Der Punkt am Anfang ist wichtig. Ansonsten wird lediglich das Skript ausgeführt und nichts passiert, da die Funktion nicht aufgerufen wird. Ob das geklappt hat kann mittels dir function:\git*
überprüft werden. Ist die Funktion gitignore
vorhanden, wird sie aufgelistet.
Jetzt kann ebendiese mit Parametern aufgerufen werden. Als spezieller Parameter gilt list
, dass alle möglichen Schlüsselwörter auflistet, leider aber in eine .gitignore-Datei schreibt. Hier ist die Ausgabe auf der Kommandozeile sicherlich sinnvoller. Ansonsten sind alle Schlüsselwörter, auch in beliebigen Kombinationen, möglich, die durch list
zurückgegeben werden. gitignore windows,java
erzeugt beispielsweise eine .gitignore-Datei für eben Windows und Java. Die Schlüsselwörter sind case-sensitiv! Windows
wird demnach als Schlüsselwort nicht erkannt. Eine Fehlermeldung wird aber leider auch in eine .gitignore-Datei geschrieben und nicht auf der Kommandozeile ausgegeben.
Fazit
Schöner Service, der einfach zu nutzen ist. Gerade bei umfangreichen .gitignore-Dateien, zum Beispiel für Visual Studio, nimmt das Projekt viel Arbeit ab. Auch wenn schon ein Anbieter wie GitHub im Spiel ist, kann die automatisch erzeugte .gitignore-Datei durch die Website angereichert werden.
Die Skripte, speziell die beiden Beispiele für die PowerShell, sollten in zukünftigen Versionen allerdings noch erweitert werden. Eine bessere Fehlerbehandlung und etwas mehr Komfort wären sicherlich nicht schlecht.
Ansonsten ist der Service eine sehr gute Idee!
[…] Viel mehr gibt es zu diesem Plugin auch schon nicht zu sagen. Es ist sehr wartungsfreundlich und funktionierte auf Anhieb. Die Gists werden mit einer von GitHub bekannten Formatierung übernommen, so dass der Code gut lesbar ist. Abbildung 9 zeigt ein kleines Beispiel aus dem Beitrag Git: Vorgefertigte .gitignore-Dateien. […]