Ich habe eine Datei wie unten in einem SVN-Repo gezeigt, die ich auf eine frühere Version zurücksetzen möchte. Wie geht das in SVN? Ich möchte nur diese bestimmte Datei auf eine ältere Version herunterstufen, nicht das gesamte Repo.
Vielen Dank.
$ svn log myfile.py
----------------------
r179 | xx | 2010-05-10
Change 3
----------------------
r175 | xx | 2010-05-08
Change 2
----------------------
r174 | xx | 2010-05-04
Initial
Antworten:
Wenn Sie nur die alte Datei in Ihrer Arbeitskopie haben möchten:
Wenn Sie einen Rollback durchführen möchten, lesen Sie den Abschnitt " Wie kann ich in Subversion zu einer älteren Version unseres Codes zurückkehren? ".
quelle
svn cat nimmt auch ein revisionsarg!
svn cat -r 175 mydir/myfile > mydir/myfile
quelle
Dies sollte eine einzelne Datei zurücksetzen.
quelle
Für eine einzelne Datei können Sie Folgendes tun:
svn export -r <REV> svn://host/path/to/file/on/repos file.ext
Sie können dies tun,
svn revert <file>
aber dadurch wird nur die letzte Arbeitskopie wiederhergestellt.quelle
Bisher scheinen alle Antworten hier erhebliche Nachteile zu haben, sind kompliziert (müssen den Repo-URI finden) oder sie tun nicht das, was die Frage wahrscheinlich gestellt hat: Wie man das Repo mit dieser älteren Version des wieder in einen funktionierenden Zustand versetzt Datei .
svn merge -r head:[revision-number-to-revert-to] [file-path]
ist IMO der sauberste und einfachste Weg, dies zu tun. Bitte beachten Sie, dass das Zurückbringen einer gelöschten Datei auf diese Weise nicht zu funktionieren scheint [1]. Siehe auch die folgende Frage: Besserer Weg, um zu einer früheren SVN-Revision einer Datei zurückzukehren?[1] Informationen dazu finden Sie
svn cp -r [rev-number] [repo-URI/file-path]@[rev-number] [repo-URI/file-path] && svn up
auch unter Wie kann eine gelöschte Datei aus SVN korrekt wiederhergestellt werden?quelle
svn merge
aus irgendeinem Grund nicht mehrere Dateien als Argument verwendet werden. In diesem Fall scheint es einfach nichts zu tun (ohne eine Fehlermeldung).Der beste Weg ist:
Dadurch werden alle Dateien der Revision rückgängig gemacht, anstatt nur die Dateien zurückzusetzen, die Sie nicht rückgängig machen möchten. Vergiss den Bindestrich nicht (
-
) als Präfix für die Revision.Übernehmen Sie nun die Änderungen zurück.
quelle
Du willst machen
svn merge -r [revision to revert from]:[revision to revert to] [path/filename]
Sobald Sie dies tun, haben Sie diese Revision der Datei in einem festschreibbaren Zustand. Übernehmen Sie die Datei.
quelle
Ich fand es einfach, dies über den
svn cat
Befehl zu tun, so dass Sie nicht einmal eine Revision angeben müssen.Dadurch werden die Inode-Daten (Metadaten) wie Zeitstempel wahrscheinlich nicht zurückgesetzt.
quelle
überrascht, dass niemand dies erwähnte
Ohne die Revisionsnummer herauszufinden, könnten Sie dies schreiben. Wenn Sie nur etwas festgeschrieben haben, das Sie zurücksetzen möchten, funktioniert dies nicht, wenn Sie eine andere Datei geändert haben und die Zieldatei nicht die zuletzt geänderte Datei ist
quelle
svn merge -r HEAD:PREV file
wie @Nick Russo sagteWenn es sich nur um ein paar Dateien handelt und Sie Tortoise SVN verwenden, können Sie den folgenden Ansatz verwenden:
quelle
Ich füge nur die Antwort von @Mitch Dempsy hinzu, da ich noch nicht genug Repräsentanten habe, um einen Kommentar abzugeben.
Durch Hinzufügen von --force wird die lokale Kopie beim Export überschrieben. Anschließend können Sie ein SVN-Commit ausführen, um sie in das Repository zu übertragen.
quelle
Eine alternative Option für eine einzelne Datei besteht darin, die aktuelle Version der Datei durch die ältere Version zu "ersetzen":
Dies hat die zusätzliche Funktion, dass die unerwünschten Änderungen nicht im Protokoll für diese Datei angezeigt werden (dh svn log file.ext).
quelle
Wenn Sie eine einzelne Datei aus einer bestimmten Revision zurücksetzen und festschreiben möchten, gehen Sie wie folgt vor:
svn merge -c - [OldRev #] [Dateiname]
dh.
svn merge -c -150 myfile.py
Beachten Sie das Negativ auf der Versionsnummer
quelle
quelle