Angenommen, ich habe Datei A
mit Windows Explorer in Datei B
umbenannt und eine neue Datei C
erstellt.
In Tortoise SVN verwende ich versehentlich den "Repair Move" in Datei A
und C
anstelle von A
und B
. Gibt es eine einfache Möglichkeit, die Reparatur rückgängig zu machen (und sie mit den richtigen Dateien wiederherzustellen)? Änderungen werden zu diesem Zeitpunkt nicht vorgenommen.
Die einzige Möglichkeit, die mir derzeit bekannt ist, ist das Zurücksetzen von delete und add, wodurch die Datei A
wiederhergestellt wird, die Datei dann manuell gelöscht wird und die Verknüpfungen korrekt wiederhergestellt werden. Bei mehreren Dateien birgt dies die Gefahr, dass lokale Änderungen versehentlich rückgängig gemacht werden. Daher bin ich daran interessiert, ob es einen besseren Weg gibt.
Hinweis: Obwohl TortoiseSVN verwendet wird, um das Problem zu erzeugen, ist auch eine Antwort mit der svn-Konsole akzeptabel.
Hier ist das Beispiel mit den Dateien A.txt
, B.txt
und C.txt
Schritt für Schritt:
Nach A
wurde umbenannt in B
und C
wurde lokal hinzugefügt
Nach der Tortoise SVN "Repair move" wird falsch angewendet A
- & gt; C
Mein Workflow um die Situation zu beheben, mit der ich nicht wirklich glücklich bin:
%Vor%Daraus ergibt sich die Ausgangssituation, aus der ich die Reparatur mit korrekten Dateien wiederherstellen kann
%Vor%Was ich lieben würde, aber das scheint nicht zu existieren
%Vor%in einer Weise, dass es ignoriert, dass A bereits als gelöscht markiert ist und eine Verlaufsübertragung von A nach B zulässt, wobei C als saubere Ergänzung neu interpretiert wird, anstatt den Verlauf von A zu übertragen.
Es gibt einen Weg, der nur 2 Befehle in A.txt anstatt der 4 Befehle in Ihrem aktuellen Workflow beinhaltet (auch in C.txt). Nachdem TortoiseSVN "repair move" falsch angewendet wurde, führen Sie Folgendes aus:
%Vor% svn stat
wird sein:
Von Tortoise SVN können Sie jetzt "repair move" zwischen A.txt und B.txt machen, was zu dem korrekten Zustand führt:
%Vor%Dieselbe Technik kann in der TortoiseSVN UI verwendet werden (a.txt zurücksetzen, dann A.txt aus dem Explorer löschen). Der Grund dafür ist, dass der Verschiebezustand mit der fehlenden Datei und nicht mit der nicht versionierten Datei gekoppelt ist. Die einzige Änderung an C.txt ist, dass es mit dem Befehl repair move hinzugefügt wurde (den Sie wahrscheinlich trotzdem hinzufügen wollten).
Der Befehl "Repair move" funktioniert nur, wenn genau zwei Dateien vorhanden sind ausgewählt, einer mit dem "fehlenden" und der andere mit dem "nicht versionierten" Status. Nur so kann TortoiseSVN herausfinden, welche Datei umbenannt wurde zu welcher Datei.
Nach dem Zurücksetzen & amp; Löschen von A.txt endet mit einer fehlenden Datei (A.txt) und einer nicht versionierten Datei (B.txt) erneut, wie zuvor bei der nicht korrekt angewendeten Reparaturbewegung. So können Sie die Reparatur erneut zwischen diesen beiden Dateien anwenden.
Tags und Links svn tortoisesvn