Ich vermisse etwas, aber wenn ich Svn merge verwendet habe, musste ich immer die Revisionsnummern richtig bekommen, wenn ich wollte, dass es richtig funktioniert.
Also, wenn Sie (oder letzte fusionierte) verzweigt in Revision 100, ist der Stamm derzeit bei 200, und Sie Änderungen aus dem Stamm in Ihrer Branche fusionieren, dann in der Branche Arbeitsverzeichnis Sie tun:
svn merge -r 100:200 trunkURL
Dann denke ich, dass Sie einen Konflikt sehen werden, den Sie auflösen und einchecken. Sie tun eine ähnliche Sache im Stammarbeitsverzeichnis, um von Ihrem Zweig zurück in den Stamm zu verschmelzen.
svn merge ohne -r diffs die zwei Orte, die Sie angeben, und wendet dieses diff auf das Arbeitsverzeichnis an. Ich spekuliere also, dass es keinen Konflikt gegeben hat, weil Ihr Arbeitsziel mit dem Leiter der Branche übereinstimmt. So kann der Unterschied zwischen dem Zweigkopf und dem Stammkopf problemlos auf Ihr Arbeitsverzeichnis übertragen werden. Dies ist nicht das, was Sie tun möchten: es ändert nur Ihr Arbeitsverzeichnis, um dem Stamm zu entsprechen. Versuchen Sie eine weitere Änderung am Zweig vorzunehmen, checken Sie ein und wiederholen Sie den Vorgang. Wenn die Zusammenführung diese Änderung rückgängig macht (weil sie nicht auf dem Stamm ist), dann habe ich recht mit dieser Form der SVN-Zusammenführung, aber wie gesagt, ich habe sie nicht benutzt.
[Edit: vor SVN-Version 1.5 ...]
Arbeitsverzeichnisse und Zweige sind nicht die gleiche Sache in SVN und ärgerlich, wie es ist, müssen Sie die Unterschiede berücksichtigen. SVN benötigt mehr Informationen, um die gewünschte Filialzusammenführung durchzuführen, als ein Update oder Check-In durchzuführen, da afaik nicht automatisch berücksichtigt, wo die Verzweigung aufgetreten ist, auf die Art und Weise, wie sie immer berücksichtigt wird, wenn ein Arbeitsverzeichnis ausgecheckt wurde. Ich bin mir sicher, dass es einen Grund dafür gibt, ich weiß nicht genau, was es ist: möglicherweise weil svn copy für mehr Dinge als nur Zweige ist.
[Edit ... aber laut Joshua McKinnon's Kommentar zu dieser Antwort, ab 1.5 svn unterstützt richtige Branch Merges, die tun, was Sie wollen automatisch.Geben Sie die URL an, von der Sie eine Verbindung herstellen, und führen Sie den Befehl im Arbeitsverzeichnis von dem aus, mit dem Sie eine Verknüpfung herstellen. Versuchen Sie in diesem Fall
svn merge trunkURL
und Sie sollten den Konflikt sehen. Sie könnten zunächst das Arbeitsverzeichnis zurückgreifen müssen.]
Also Sie 1) verzweigte 2) modifizierte Zeile X auf "abc" auf dem Stamm 3) wechselte auf den Zweig 4) modifizierte Zeile X auf "def" auf dem Zweig 5) verschmolzen? Was war der Inhalt von Zeile X, bevor Sie ihn in "abc" geändert haben? –
Ich denke, dass es einen Versionsunterschied in meinem Büro b/w mein Client svn und den Server svn geben würde, wie ich mich erinnere, dass ich vor kurzem meine svn-Version auf 1,5 aktualisiert und das nicht auf dem Server, wo die Repos existieren. Die Tatsache, dass ich keine Konflikte bekommen habe, kann daher auf Version Diff zurückzuführen sein. – ashishsony