Ignorieren von Dateien und Ordnern

Abbildung 5.27. Explorer Kontextmenü für nicht versionierte Dateien

Explorer Kontextmenü für nicht versionierte Dateien


In den meisten Projekten werden Sie Dateien und Ordner haben, die nicht der Versionskontrolle unterstellt sein sollen. Dabei kann es sich um compilergenerierte Dateien *.obj, *.lst oder um einen Ausgabeordner für die ausführbaren Dateien handeln. Jedes Mal, wenn Sie Änderungen zum Projektarchiv übertragen, zeigt Ihnen TortoiseSVN nicht versionierte Dateien, die die Liste im Übertragen-Dialog füllen. Sie könnten natürlich die Anzeige der nicht versionierten Dateien abschalten aber dann übersehen Sie eventuell eine neue Datei, die Sie eigentlich zur Versionskontrolle hinzufügen wollten.

Die beste Möglichkeit diese Probleme zu vermeiden besteht darin, die generierten Dateien zur Ignorieren-Liste des Projekts hinzuzufügen. Auf diese Weise werden sie im Übertragen-Dialog niemals auftauchen, wogegen Quelldateien weiterhin angezeigt werden.

Wenn Sie mit der rechten Maustaste auf eine einzelne, nicht versionierte Datei klicken und TortoiseSVNIgnorieren aus dem Kontextmenü wählen, wird Ihnen ein Untermenü angezeigt, das Ihnen erlaubt, nur diese Datei oder alle Dateien mit dieser Endung zu ignorieren. Wenn Sie mehrere Elemente wählen, erscheint kein Untermenü und es werden genau diese Dateien / Ordner zur Ignorieren-Liste hinzugefügt.

Wenn Sie einen oder mehrere Einträge aus der Ignorieren Liste entfernen wollen, machen Sie einen Rechtsklick und wählen Sie TortoiseSVNAus Ignorieren Liste entfernen. Sie können auch die svn:ignore Eigenschaft des Ordners direkt bearbeiten. Dies ermöglicht Ihnen, wie im folgenden Abschnitt beschrieben, mittels Platzhalterzeichen allgemeinere Definitionen vorzunehmen. Lesen Sie „Projekt-Einstellungen“ für weitere Information darüber, wie man Eigenschaften direkt setzt. Bitte beachten Sie, dass jeder Eintrag auf einer eigenen Zeile stehen muss. Es genügt nicht, die Einträge durch Leerzeichen zu trennen.

Die globale Ignorier-Liste

Eine weiter Möglichkeit Dateien zu ignorieren ist, diese in die globale ignorieren Liste einzutragen. Der große Unterschied besteht darin, dass die globale Liste eine Client Eigenschaft ist. Sie gilt für alle Subversion Projekte, aber nur auf dem jeweiligen Anwender PC. Im allgemeinen ist es besser, die svn:ignore Eigenschaft zu verwenden, weil diese für einzelne Projektbereiche gesetzt werden kann und weil sie für jeden, der das Projekt auscheckt, gültig ist. Lesen Sie „Allgemeine Einstellungen“ für weitere Information.

Versionierte Objekte ignorieren

Versionierte Dateien und Ordner können niemals ignoriert werden - das ist eine Eigenschaft von Subversion. Wenn Sie versehentlich eine Datei zur Versionskontrolle hinzugefügt haben, lesen Sie „Dateien ignorieren, die bereits unter Versionskontrolle sind“, um zu erfahren, wie Sie das rückgängig machen können.

Platzhalter in der Ignorieren-Liste

Die Ausschluss-Muster von Subversion verwenden Platzhalter, eine Technik die ursprünglich aus der Unix Welt stammt, um Dateien oder Ordner zu spezifizieren. Folgende Zeichen haben eine besondere Bedeutung:

*

Steht für eine beliebige (auch leere) Zeichenfolge.

?

Steht für ein beliebiges einzelnes Zeichen.

[...]

Steht für eines der Zeichen innerhalb der eckigen Klammern. Zwei durch „-“ getrennte Zeichen innerhalb der Klammern stehen für alle Zeichen innerhalb dieses Bereichs. Zum Beispiel steht [AGm-p] für A, G, m, n, o oder p.

Subversion verwendet das / Zeichen als Trenner in allen internen Pfadnamen und sämtliche Mustervergleiche werden mit dieser Art der Pfaddarstellung durchgeführt. Wenn Sie ein Pfadtrennzeichen in Ihrem Ausschlussmuster verwenden möchten, stellen Sie sicher, dass Sie /, und nicht das Windows \ Trennzeichen verwenden.

Die Platzhaltersuche beachtet Groß-/Kleinschreibung, was unter Windows zu Problemen führen kann. Sie können auf die harte Tour erzwingen, dass Groß-/Kleinschreibung ignoriert wird, indem Sie Buchstabenpaare angeben Um z.B. *.tmp auszuschließen *.[Tt][Mm][Pp].

Subversion benutzt diesen Mustervergleich für jeden Pfad, der für eine Aktion verwendet wird. Diese Pfade sind im Allgemeinen relativ zu dem Verzeichnis, das importiert, hinzugefügt oder übertragen wird. Der Mustervergleich muss demzufolge berücksichtigen, dass Pfade vor dem Dateinamen stehen können.

Falls Verzeichnisnamen in einem Pfad vorkommen, werden sie durch die Platzhaltersuche nicht abgeschnitten. Das Muster Fred.* stimmt mit Fred.c überein, aber nicht mit subdir/Fred.c. Dies spielt dann eine Rolle, wenn Sie einen Ordner hinzufügen, der zu ignorierende Dateien enthält, weil den Dateinamen beim Vergleich der Ordnername vorangestellt wird.

Das / Zeichen wird beim Mustervergleich nicht gesondert behandelt. Auf das Muster abc*xyz würde sowohl abcdxyz, als auch abcdir/subdir/anything/morexyz passen.

Um z.B. alle CVS Ordner zu ignorieren, sollten Sie entweder das Muster *CVS oder noch besser, das Paar CVS */CVS angeben. Die erste Variante funktioniert, würde aber auch ThisIsNotCVS ausschließen. */CVS alleine schließt direkte CVS Unterordner nicht aus, und CVS alleine würde nur diese, aber keine weiteren Unterordner ausschließen.

Eine offizielle Definition für Platzhalterzeichen findet sich in der IEEE für die „Shell Command Language“ im Abschnitt Pattern Matching Notation.