Löschen, Verschieben und Umbenennen

Subversion erlaubt es, Dateien und Ordner umzubenennen oder zu verschieben. Deshalb gibt es im Kontextmenü Befehle für diese Operationen.

Abbildung 4.34. Explorer Kontextmenü für Dateien unter Versionskontrolle

Explorer Kontextmenü für Dateien unter Versionskontrolle


Löschen von Dateien und Ordnern

Verwenden Sie TortoiseSVNLöschen, um Dateien oder Ordner aus der Versionskontrolle zu entfernen.

Wenn Sie mittels TortoiseSVNLöschen eine Datei oder einen Ordner löschen, wird das Objekt sofort aus Ihrer Arbeitskopie entfernt und markiert, dass es beim nächsten Übertragen aus dem Projektarchiv gelöscht wird. Der überlagerte Symbol des Elternordner zeigt den Status Verändert an. Solange Sie das Löschen noch nicht übertragen haben, können Sie das Objekt mittels TortoiseSVNRückgängig auf dem Elternordner wieder herstellen.

Wenn Sie eine Datei oder einen Ordner aus dem Projektarchiv löschen, aber lokal noch als unversioniertes Objekt beibehalten wollen, wählen Sie Erweitertes KontextmenüLöschen (lokal erhalten). Sie müssen die Umsch-Taste gedrückt halten, während Sie einen Rechtsklick auf ein Objekt im rechten Fenster des Explorers machen, um das erweiterte Kontextmenü zu sehen.

Wenn ein Objekt über den Explorer anstelle des TortoiseSVN Menüs gelöscht wird, zeigt Ihnen der Übertragen-Dialog die fehlenden Objekte an und erlaubt Ihnen, diese aus der Versionskontrolle zu entfernen. Wenn Sie allerdings vorher Ihre Arbeitskopie aktualisieren, wird Subversion die fehlenden Objekte erkennen und durch die aktuelle Version aus dem Projektarchiv ersetzen. Falls Sie ein Objekt, das sich in der Versionskontrolle befindet, löschen wollen, müssen Sie dazu TortoiseSVNLöschen verwenden, damit Subversion nicht raten muss, was Sie wirklich tun wollten.

Eine gelöschte Datei/Ordner zurückholen

Wenn Sie eine Datei oder einen Ordner gelöscht und die Löschung bereits ins Projektarchiv übertragen haben, wird ein normaler TortoiseSVNRückgängig Befehl diese nicht wieder zurückbringen können. Aber die Datei oder der Ordner ist nicht verloren. Wenn Sie die Revisionsnummer kennen, in der sie gelöscht wurde (Benutzen Sie den Log-Dialog um das herauszufinden) öffnen Sie den Projektarchivbetrachter. Wechseln Sie dann zu der Revisionsnummer, selektieren Sie die Datei oder den gelöschten Ordner, Rechtsklick und wählen Sie den Befehl KontextmenüKopieren zu.... Als Ziel für diesen Kopierbefehl geben Sie den Pfad zu Ihrer Arbeitskopie an.

Dateien und Ordner verschieben

Wenn Sie eine Datei oder einen Ordner an Ort und Stelle umbenennen wollen, wählen Sie KontextmenüUmbenennen.... Sie müssen nur noch den neuen Namen angeben.

Wenn Sie Dateien innerhalb Ihrer Arbeitskopie, zum Beispiel in einen anderen Ordner, verschieben möchten, können Sie ebenfalls die Ziehen und Ablegen Funktion mit der rechten Maustaste verwenden:

  1. Wählen Sie die Dateien aus welche Sie verschieben möchten.

  2. Ziehen Sie die Dateien mit gedrückter rechter Maustaste an den neuen Ort.

  3. Lassen Sie die rechte Maustaste los.

  4. Wählen Sie den Befehl KontextmenüSVN Dateien hierher verschieben

Den übergeordneten Ordner übertragen

Da Umbenennen beziehungsweise Verschieben intern in zwei Schritten als Löschen und Hinzufügen implementiert sind, müssen Sie den übergeordneten Ordner des verschobenen/umbenannten Objektes übertragen, damit die Löschung zum Projektarchiv übertragen wird. Wenn Sie das nicht tun, bleiben die lokal gelöschten Objekte im Projektarchiv erhalten und die Arbeitskopien Ihrer Kollegen werden beim Aktualisieren von der Löschung nichts mitbekommen. Das führt dazu, dass sie dann beide, die alte und die neue, Kopie des Objektes enthalten.

Sie müssen einen umbenannten Ordner übertragen, bevor Sie Dateien innerhalb des Ordners bearbeiten. Andernfalls kann Ihre Arbeitskopie sehr durcheinander kommen.

Eine weitere Möglichkeit, Dateien zu kopieren oder zu verschieben, besteht darin, die Kopieren/Ausschneiden Befehle von Windows zu verwenden. Markieren sie die gewünschte(n) Datei(en) und rufen sie per Rechtsklick entweder KontextmenüKopieren oder KontextmenüAusschneiden aus, je nachdem, ob Sie die Objekte kopieren oder verschieben wollen. Dann navigieren Sie zum Zielordner und fügen die Datei(en) per Rechtsklick TortoiseSVNEinfügen an der gewünschten Stelle ein.

Sie können auch mit Hilfe des Projektarchiv-Betrachters Objekte verschieben. Lesen Sie in „Projektarchivbetrachter“ nach, wie man mit dem Betrachter arbeitet.

SVN Externals nicht verschieben

Sie sollten niemals Verzeichnisse, die auf svn:externals zeigen mittels TortoiseSVN Verschieben oder Umbenennen. Dies würde dazu führen, dass das Objekt aus dem externen Projektarchiv gelöscht wird, was voraussichtlich eine Menge Leute verärgern würde. Wenn Sie einen externen Ordner verschieben wollen, sollten Sie dazu den normalen Windows Explorer verwenden und anschließend die svn:externals Eigenschaften des Quell- und des Zielordners anpassen.

Behandeln von Konflikten in der Groß-/Kleinschreibung

Wenn das Projektarchiv bereits zwei Dateien mit dem selben Namen aber unterschiedlicher Groß-/Kleinschreibung (z.B. TEST.TXT und test.txt) enthält, können Sie diesen Ordner unter Windows nicht mehr aktualisieren oder auschecken. Während Subversion bei Dateinamen Groß-/Kleinschreibung beachtet, wird sie von Windows ignoriert.

Dies passiert manchmal, wenn aus verschiedenen Arbeitskopien Dateien mit dem gleichen Namen aber unterschiedlicher Groß-/Kleinschreibung übertragen werden. Eine weitere Möglichkeit sind Übertragungen aus einem Betriebssystem wie Linux, das Groß-/Kleinschreibung berücksichtigt.

In diesem Falle müssen Sie entscheiden, welche der beiden Dateien Sie behalten möchten und die andere Datei aus dem Projektarchiv löschen oder umbenennen.

Zwei Dateien mit dem selben Namen verhindern

Es gibt ein serverseitiges Aktionsskript welches verhindert, dass zwei Dateien mit dem selben Namen aber unterschiedlicher Schreibweise in das Projektarchiv gelangen hier: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/.

Externes Umbenennen reparieren

Manchmal wird Ihre freundliche Entwicklungsumgebung beim Umarbeiten von Projekten Dateien für Sie umbenennen und Subversion nicht davon in Kenntnis setzen. Wenn Sie dann Ihre Änderungen übertragen wollen, zeigt Ihnen Subversion die alte Datei als fehlend und die neue als nicht versioniert an. Sie könnten jetzt einfach die neue Datei übertragen, aber Sie würden dadurch die Historie der Datei verlieren, da Subversion nicht weiß, dass die beiden Dateien zusammenhängen.

Besser ist es, wenn Sie Subversion mitteilen, dass diese Änderung eigentlich eine Umbenennung war. Sie können das in den Übertragen- und Auf Änderung prüfen-Dialogen tun. Markieren Sie einfach beide, die alte (fehlende) und die neue (unversionierte) Datei und wählen Sie KontextmenüUmbenennen reparieren, um die beiden Dateien zu einer Umbenennung zusammenzufassen.

Nicht versionierte Dateien löschen

Meistens tragen Sie in Ihre Ignorieren-Liste sämtliche generierten Dateien ein, da diese normalerweise von der Versionierung ausgeschlossen werden sollen. Aber was ist, wenn Sie all diese ignorierten Dateien löschen wollen, um Ihr Projekt sauber generieren zu können? Meistens gibt es eine entsprechende Funktion im Makefile, aber falls es noch kein Makefile gibt oder dieses gerade überarbeitet wird wäre es nützlich, eine Funktion zum Bereinigen der Arbeitskopie zu haben.

TortoiseSVN stellt eine solche Funktion unter Erweitertes KontextmenüUnversionierte Objekte löschen... zur Verfügung. Sie müssen die Umsch Taste drücken, während Sie einen Rechtsklick auf einen Ordner im rechten Fenster des Explorers machen, um das erweiterte Kontextmenü zu sehen. Daraufhin wird ein Dialog mit sämtlichen nicht versionierten Dateien in Ihrer Arbeitskopie angezeigt, in dem Sie die zu löschenden Objekte auswählen können.

Wenn solche Objekte gelöscht werden, werden sie in den Papierkorb verschoben, so dass Sie eine versehentlich gelöschte Datei, die eigentlich versioniert werden sollte, wieder herstellen können.