Ich habe eine Datei aus einem Repo gelöscht und möchte sie jetzt zurücklegen. Das Beste, was ich herausfinden kann, ist:
- Aktualisieren Sie die Version vor dem Löschen
- Kopieren Sie die Dateien an eine andere Stelle
- Update auf Kopf
- Kopieren Sie die Dateien zurück
- füge sie hinzu
- verpflichten
Das riecht nur schlecht und es verliert die gesamte Geschichte, um zu booten. Es muss einen besseren Weg geben, dies zu tun. Ich habe bereits im SVN-Buch nachgesehen , aber nichts gefunden und schaue jetzt in der SVN-Tag-Liste nach.
svn
tortoisesvn
restore
BCS
quelle
quelle
Antworten:
Verwenden Sie svn merge:
Also ein Beispiel:
Für TortoiseSVN (ich denke ...)
Das ist jedoch völlig ungetestet.
Bearbeitet von OP : Dies funktioniert auf meiner Version von TortoiseSVN (die alte Art ohne den nächsten Button)
Der Trick besteht darin, rückwärts zu verschmelzen . Ein großes Lob an sean.bright für den Hinweis in die richtige Richtung!
Bearbeiten: Wir verwenden verschiedene Versionen. Die von mir beschriebene Methode funktionierte perfekt mit meiner Version von TortoiseSVN.
Beachten Sie auch, dass Sie bei mehreren Änderungen am Commit, die Sie rückgängig machen, diese anderen Änderungen rückgängig machen möchten, sobald die Zusammenführung vor dem Commit abgeschlossen ist. Wenn Sie dies nicht tun, werden diese zusätzlichen Änderungen ebenfalls rückgängig gemacht.
quelle
Das Problem bei der Durchführung einer SVN-Zusammenführung, wie von Sean Bright vorgeschlagen, besteht darin, dass andere Änderungen, die in derselben Revision wie beim Löschen vorgenommen wurden, wieder eingeführt werden. Eine SVN-Kopie ist eine gezieltere Operation, die nur die gelöschten Dateien betrifft.
Mit Tortoise SVN können Sie eine Datei, die aus Ihrem Arbeitskopienverzeichnis und aus späteren SVN-Revisionen gelöscht wurde, über eine SVN-Kopie wie folgt wiederbeleben:
Die gelöschte Datei befindet sich jetzt im Arbeitskopienordner. Um es wieder zu SVN hinzuzufügen, klicken Sie mit der rechten Maustaste auf die wiederhergestellte Datei und wählen Sie SVN Commit.
Hinweis: Bei dieser Methode wird der vorherige Verlauf der wiederhergestellten Datei beibehalten. Um jedoch den vorherigen Verlauf im TortoiseSVN-Protokoll anzuzeigen, müssen Sie sicherstellen, dass im Dialogfeld "Protokollnachrichten" die Option "Beim Kopieren / Umbenennen anhalten" deaktiviert ist.
quelle
svn cp -r 1993 http://example.com/svn/trunk/path@1993 http://example.com/svn/trunk/path
merge
, aber ich habe es nicht herausgefunden.Der Vollständigkeit halber hätten Sie dies im SVN-Buch gefunden, wenn Sie gewusst hätten, wonach Sie suchen müssen. Das haben Sie bereits entdeckt:
Änderungen rückgängig machen
Gelöschte Objekte wiederbeleben
Gleiches gilt für die neuere (und detailliertere) Version des Buches:
Änderungen rückgängig machen
Gelöschte Objekte wiederbeleben
quelle
Verwenden Sie die Tortoise SVN-Kopierfunktion, um festgeschriebene Änderungen rückgängig zu machen:
hoffentlich hilft das
quelle
Ich scheine immer svn copy als Serveroperation zu verwenden, bin mir also nicht sicher, ob es mit zwei Arbeitspfaden funktioniert.
Hier ist ein Beispiel für das Wiederherstellen einer gelöschten Datei in einer lokalen Arbeitskopie des Projekts:
Während Sie sich im Projektverzeichnis befinden. Dies funktioniert auch zum Wiederherstellen ganzer Verzeichnisse.
quelle
Wenn Sie Tortoise SVN verwenden, sollten Sie in der Lage sein, Änderungen von nur dieser Revision in Ihre Arbeitskopie zurückzusetzen (effektiv eine umgekehrte Zusammenführung durchzuführen), und dann ein weiteres Commit ausführen, um die Datei erneut hinzuzufügen. Folgende Schritte sind zu befolgen:
quelle
Der einfachste Weg, Dateien wiederherzustellen und den Revisionsverlauf nicht zu verlieren, ist die Verwendung der SVN-Kopie . Das obige Zusammenführungsbeispiel scheint mir ein komplexerer Weg zu sein, um dasselbe zu erreichen. Warum muss zusammengeführt werden, wenn Sie einfach eine Revision wiederherstellen möchten?
Ich benutze das Folgende in diesem Fall und es funktioniert ganz gut.
Ich scheine immer als Serveroperation zu verwenden, bin mir
svn copy
also nicht sicher, ob es mit zwei Arbeitspfaden funktioniert.quelle
Mit Schildkröte SVN :
quelle
Sie sollten in der Lage sein, nur die eine Datei auszuchecken, die Sie wiederherstellen möchten. Versuchen Sie etwas wie
svn co svn://your_repos/path/to/file/you/want/to/restore@rev
worev
ist die letzte Revision, bei der die Datei existierte.Ich musste vor einiger Zeit genau das tun und wenn ich mich richtig erinnere, hat die
-r
Option,svn
nicht zu funktionieren, funktioniert. Ich musste die:rev
Syntax verwenden. (Obwohl ich mich vielleicht rückwärts daran erinnert habe ...)quelle