Mein SVN-Repository war bei Revision 497 perfekt. Ich habe mehrere fehlerhafte Commits ausgeführt, sodass es jetzt bei Revision HEAD ist. Ich sehe, dass Sie zum Rollback einen Befehl wie diesen verwenden sollten:
svn merge -r HEAD:497 .
während im Arbeitsverzeichnis (und das Arbeitsverzeichnis befindet sich in der HEAD-Revision). Aber ist das der richtige Befehl? Oder benutze ich HEAD: 498? oder 496? Ich habe diesen Befehl bereits ausgeführt und die aktuelle Version scheint nicht mit 497 identisch zu sein, da beim Aktualisieren von -r 497 (oder wenn ich eine 497-Arbeitskopie habe und -r HEAD aktualisiere) viele Dateiaktualisierungen auftreten .
Habe ich ein Zaunpfostenproblem, bei dem HEAD: 497 tatsächlich auf 496 zurückgesetzt wird, oder so? Oder ist es so, dass SVN beim Aktualisieren jede Revision erneut durchläuft, obwohl HEAD und 497 identisch sind?
Bearbeiten:
Um zu verdeutlichen, wie ich bereits sagte, wenn ich zwischen 497 und meinem zusammengeführten HEAD aktualisiere, werden viele Dateiänderungen vorgenommen. Ich dachte, wenn 497 und HEAD identisch wären, würde dies erkannt und es würden keine Dateiänderungen auftreten. es würde einfach sagen "Aktualisiert auf Revision 497." Ist mein Befehl also falsch oder ist dieses Denken falsch? (und wenn ja, warum?)
Antworten:
Wenn sich Ihr Repo bei Revision 497 in einem makellosen Zustand befand, müssen Sie Folgendes tun:
Dieser Zusammenführungsbefehl ändert nur Dateien in Ihrer Arbeitskopie. Denken Sie also daran, die Änderungen auch zu übernehmen, um HEAD im Repo zu aktualisieren.
Versuchen Sie nach dem Zusammenführen, gefolgt vom Festschreiben, die Revision 497 mit HEAD zu vergleichen, und sie sollten identisch sein.
quelle
svn diff
hinter den Kulissen eine Variation des Befehls ausgeführt wird, und wie Sie sagten, kann es selbst bei einem kleinen bis mittelgroßen Repo lange dauern, einen Vergleich durchzuführen . Normalerweise schaue ich durch das Protokoll, um ein Gefühl dafür zu bekommen, ob ein Zurücksetzen und / oder ein Zusammenführen so funktioniert hat, wie ich es erwartet hatte. Hier ist ein Link zu weiteren Informationen über den SVN-Diff: svnbook.red-bean.com/de/1.4/…Wenn Sie r123 rückgängig machen möchten, müssen Sie
svn merge -r 123:122 .
Dies bedeutet, dass Sie ausführen müssen
So überprüfen Sie den Lauf:
quelle
Hilft das?
http://svnbook.red-bean.com/de/1.1/ch04s04.html#svn-ch-4-sect-4.2
quelle
Für alle, die TortiseSVN verwenden, können Sie einfach das Dialogfeld "Protokoll anzeigen" aufrufen, um die Commits von dort zurückzusetzen:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-howto-rollback.html
quelle
Um von einer unerwünschten Änderung zurückzutreten (vielleicht haben Sie andere Dateien mit Debugging-Anweisungen festgeschrieben, zusammen mit etwas, das Sie wirklich festschreiben wollten), sagen Sie, dass die fehlerhafte Änderung -r10 war:
Jetzt können Sie nur die Datei zurückbringen, die Sie festschreiben wollten:
quelle
Wenn Sie eine schnelle und zuverlässige Möglichkeit zum Rollback auf eine bestimmte Revision wünschen, lesen Sie einfach die ältere Revision des Repositorys.
Führen Sie es aus
svn info
, um sich daran zu erinnern, wie Ihre Repository-URL lautet. Erstellen Sie dann einen neuen Ordner und checken Sie die gewünschte Revision aus:Anschließend können Sie diesen Ordner von Ihrem vorhandenen Ordner unterscheiden und die gesamte Revision von dort aus bei Bedarf wieder in das Repository übertragen.
quelle
Sie benötigen diese http://phpcollection.com/revert-files-to-older-svn-version/
quelle
Betrachten Sie HEAD: 150 r1 = 100 und r2 = 90 zurücksetzen
Hinweis: Durch diese Änderungen wird der Ordner EXTERNALS nicht zurückgesetzt !
quelle
Reverse Merge In SVN
SVN behält den allgemeinen Dateiinhalt in der Arbeitskopie aus der spezifischen Revision der Datei und der HEAD-Revision der Arbeitskopie bei.
wenn es Ordnerebene ist
quelle