it-swarm.com.de

SVN Reverse Merge?

Mein SVN-Repository war bei Revision 497 perfekt. Ich habe mehrere schlechte Commits ausgeführt, so dass es jetzt bei Revision HEAD ist. Ich sehe, dass Sie zum Zurücksetzen einen Befehl wie diesen verwenden sollten:

svn merge -r HEAD:497 .

im Arbeitsverzeichnis (und das Arbeitsverzeichnis befindet sich in der HEAD - Version). 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, denn wenn ich -r 497 aktualisiere (oder wenn ich eine Arbeitskopie von 497 habe und ich -r HEAD aktualisiere), treten viele Dateiaktualisierungen auf .

Habe ich eine Art Zaunpfostenproblem, bei dem HEAD: 497 tatsächlich auf 496 zurückgeht oder so? Oder geht SVN beim Update jede Version zurück, obwohl HEAD und 497 identisch sind?

Bearbeiten:

Um nur zu klären, wie ich vorhin sagte, als ich zwischen 497 und meinem zusammengeführten HEAD ein Update durchführte, sehe ich eine Menge Dateiänderungen. Ich dachte, wenn 497 und HEAD identisch wären, würde dies das erkennen, und es würden keine Dateiveränderungen auftreten. es würde einfach sagen "Aktualisierte Version 497". Ist also mein Befehl falsch oder ist dies falsch? (und wenn ja warum?)

69
Ricket

Wenn Ihr Repo bei Revision 497 in makellosem Zustand war, dann sind Sie meiner Meinung nach richtig und müssen Folgendes tun:

svn merge -r HEAD:497 .

Dieser Befehl zum Zusammenführen ändert nur die Dateien in Ihrer Arbeitskopie. Denken Sie also daran, die Änderungen auch für das Update HEAD im Repo festzulegen. 

Nachdem Sie die Zusammenführung gefolgt von dem Festschreiben durchgeführt haben, versuchen Sie, die Revision 497 mit HEAD zu vergleichen. Sie sollten identisch sein. 

72
Upgradingdave

Wenn Sie R123 rückgängig machen möchten, müssen Sie svn merge -r 123:122 .

Dies bedeutet, dass Sie laufen müssen 

svn merge -r HEAD:497 .

Um den Lauf zu überprüfen:

svn diff -r 497
22
Sander Rijken

Für jeden, der TortiseSVN verwendet, können Sie einfach den "Show Log" -Dialog aufrufen und die Commits von dort aus zurücksetzen:

http://tortoisesvn.net/docs/release/TortoiseSVN_de/tsvn-howto-rollback.html

4
yellavon
4
sakabako

Um aus einer unerwünschten Änderung herauszukommen (vielleicht haben Sie andere Dateien festgeschrieben, die Debugging-Anweisungen enthielten, zusammen mit etwas, das Sie wirklich festschreiben wollten), sagen Sie, die schlechte Änderung war -r10:

svn update
svn merge -r10:9 <URL of your repository base> .

Jetzt können Sie nur die Datei zurückbringen, die Sie haben festlegen möchten:

svn update
svn update -r10
svn commit <just that one file>   # this is the command you meant to type from the beginning
1
Ether

Wenn Sie einen schnellen und zuverlässigen Weg zum Rollback auf eine bestimmte Version suchen, überprüfen Sie einfach die ältere Version des Repositorys.

Führen Sie svn info aus, um sich an Ihre Repository-URL zu erinnern, erstellen Sie einen neuen Ordner und checken Sie die gewünschte Revision aus:

cd <your new folder>
svn checkout <URL> -r 497 .

Dann können Sie diesen Ordner mit Ihrem vorhandenen Ordner vergleichen und Sie können die gesamte Revision von dort zurück in das Repository übernehmen, wenn Sie dies benötigen.

0
Dan J
0
gauravtechie

Betrachten Sie HEAD: 150 revert r1 = 100 und r2 = 90

  1. svn auf
  2. svn merge -r 100: 99
  3. svn merge -r 90:89

Hinweis: Diese Änderungen werden nicht rückgängig gemacht EXTERNALS-Ordner!

0
piyush89