347 Stimmen

Wie kann ich eine SVN-Übertragung rückgängig machen?

Ich habe verschiedene Beispiele dafür gefunden, wie man einen SVN-Commit rückgängig machen kann

svn merge -r [current_version]:[previous_version] [repository_url]

oder

svn merge -c -[R] .

Aber keines von beiden scheint zu funktionieren. Ich habe diese Befehle ausprobiert und die Dateien, die geändert wurden, von Hand überprüft.

Wie kann ich einen Commit mit der Revisionsnummer 1944 rückgängig machen? Wie kann ich überprüfen, ob die Rückgängigmachung erfolgt ist (ohne in der eigentlichen Datei nachzusehen, ob die Änderungen rückgängig gemacht worden sind)?

10voto

BentheFolker Punkte 301

Im Folgenden wird ein Trockenlauf durchgeführt, wie es heißt. HEAD steht für die aktuelle Version, PREV für die vorherige, dann der Pfad zu Ihrer Datei oder dem übergebenen Objekt:

svn merge --dry-run -rHEAD:PREV https://example.com/svn/myproject/trunk

Wenn der Trockenlauf gut aussieht, führen Sie den Befehl ohne die Option --dry-run

Überprüfen Sie die Änderung in der Revision und geben Sie sie erneut ein. Um nach Versionsnummern zu suchen, versuchen Sie es:

svn log

5voto

jmullee Punkte 350
F=code.c
REV=123
svn diff -c $REV $F | patch -R -p0 \
    && svn commit -m "undid rev $REV" $F

2voto

Nikita Punkte 422

Alex, versuch das: svn merge [WorkingFolderPath] -r 1944:1943

2voto

droxxodia Punkte 21

Die bereits gemachten Vorschläge mögen zwar für manche Menschen funktionieren, in meinem Fall jedoch nicht. Bei der Durchführung der Zusammenführung werden die Benutzer bei rev 1443 die aktualisieren auf rev 1445 synchronisieren Sie dennoch alle Dateien, die in 1444 auch wenn sie gleich sind mit 1443 aus der Verschmelzung. Ich wollte, dass die Endbenutzer die Aktualisierung überhaupt nicht sehen.

Wenn Sie die Übergabe komplett ausblenden wollen, können Sie einen neuen Zweig mit der richtigen Revision erstellen und dann die Zweige vertauschen. Das Einzige, was Sie tun müssen, ist alle Sperren zu entfernen und neu hinzuzufügen.

copy -r 1443 file:///<your_branch> file:///<your_branch_at_correct_rev>
svn move file:///<your_branch> file:///<backup_branch>
svn move file:///<your_branch_at_correct_rev> file:///<your_branch>

Das hat bei mir funktioniert, vielleicht hilft es ja auch jemand anderem da draußen =)

2voto

amit ghosh Punkte 31
svn merge -c -M PATH

Das hat mir das Leben gerettet.

Ich hatte das gleiche Problem, nach der Rückgängigmachung auch ich war nicht sehen, alten Code. Nachdem ich den obigen Befehl ausgeführt hatte, erhielt ich einen sauberen Code der alten Version.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X