it-swarm.com.de

SVN, wie neue Baumkonflikte gelöst werden, wenn eine Datei in zwei Zweigen hinzugefügt wird

Beim Zusammenführen mehrerer Zweige (mit SVN 1.6.1), in denen eine Datei für beide Zweige hinzugefügt wurde (und dann in diesen separaten Zweigen bearbeitet wurde), tritt einer der neuen Baumkonflikte auf:

      C foo.txt
  >   local obstruction, incoming add upon merge

Ich benötige die Änderungen aus beiden Zweigen, aber der Baumkonflikt gibt mir nicht die üblichen Dateien für die Bearbeitung, Zusammenführung nach links und Zusammenführung nach rechts - was aufgrund der Art des Konflikts verständlich ist. Es gibt einige dieser Konflikte und solche, bei denen in jedem Zweig dieselbe Datei gelöscht wurde, die sich jedoch einfach lösen lassen.

Wie kann ich dieses Problem beheben? Das SVN-Redbean-Buch (für 1.6) behandelt diese Situation nicht.

95
DEfusion

Wie bereits in einer älteren Version (2009) des "Tree Conflict" -Dokuments erwähnt

XFAIL-Konflikt beim Zusammenführen der Datei add over versioned

Dieser Test führt eine Zusammenführung durch, bei der eine Datei ohne Verlauf zu einer vorhandenen versionierten Datei hinzugefügt wird .
Dies sollte ein Baumkonflikt in der Datei der Sorte 'local obstruction, incoming add upon merge' Sein. Feste Erwartungen in r35341.

(Dies wird in ClearCase übrigens auch "böse Zwillinge" genannt):
Eine Datei wird zweimal in zwei verschiedenen Zweigen erstellt (hier zweimal "hinzugefügt"). Dabei werden zwei unterschiedliche Verläufe für zwei verschiedene Elemente erstellt, die jedoch denselben Namen haben.

Die theoretische Lösung besteht darin, diese Dateien (mit einem externen Diff-Tool) im Zielzweig 'B2' Manuell zusammenzuführen.

Wenn Sie immer noch am Quellzweig arbeiten, ist es das ideale Szenario, diese Datei aus dem Quellzweig B1 Zu entfernen und sie von B2 Nach B1 Zusammenzuführen, um sie zu erstellen Diese Datei ist auf B1 sichtbar (Sie werden dann an demselben Element arbeiten).
Wenn ein Zusammenführen nicht möglich ist, da nur Zusammenführungen von B1 Nach B2 Erfolgen, ist für jede Zusammenführung von B1->B2 Eine manuelle Zusammenführung erforderlich.

40
VonC

Ich fand einen Beitrag, der eine Lösung dafür vorschlägt . Es ist im Begriff zu rennen:

svn resolve --accept working <YourPath>

das wird die lokalen Versionsdateien als OK beanspruchen.
Sie können es für einzelne Dateien oder ganze Projektkataloge ausführen.

160
lukmdo

Was ist, wenn die eingehenden Änderungen die gewünschten sind? Ich bin nicht in der Lage, svn resolve auszuführen

svn resolve - Akzeptiere die Basis

9

Ich habe es gerade geschafft, mich ziemlich gründlich zu verkeilen, um den obigen Ratschlägen von user619330 zu folgen. Die Situation war: (1): Ich hatte einige Dateien hinzugefügt, während ich an meinem ersten Zweig, branch1, arbeitete. (2) Ich habe eine neue Verzweigung erstellt, Verzweigung2 für die weitere Entwicklung, sie vom Stamm abzweigen und dann meine Änderungen von Verzweigung1 einfließen lassen. (3) Ein Mitarbeiter hat meine Modifikationen von Verzweigung1 in seine eigene Verzweigung kopiert und weitere Modifikationen hinzugefügt. und dann wieder zum Kofferraum verschmolzen; (4) Ich wollte jetzt die neuesten Änderungen von trunk in meinem aktuellen Arbeitszweig, branch2, zusammenführen. Dies ist mit SVN 1.6.17.

Die Zusammenführung hatte Baumkonflikte mit den neuen Dateien, und ich wollte die neue Version von dem Stamm, in dem sie sich unterschieden. Von einer sauberen Kopie von branch2 habe ich die in Konflikt stehenden Dateien svn gelöscht und diese Änderungen an branch2 durchgeführt (wodurch eine temporäre Version erstellt wurde) version von branch2 ohne die fraglichen dateien), und habe dann meine aus dem stamm zusammengeführt. Ich habe dies getan, weil ich wollte, dass der Verlauf mit der Trunk-Version übereinstimmt, damit ich später keine Probleme mehr habe, wenn ich versuche, wieder zum Trunk zusammenzuführen. Die Zusammenführung verlief einwandfrei, ich habe die Stammversion der Dateien erhalten, svn st zeigt alles in Ordnung, und dann habe ich beim Versuch, die Änderungen zwischen dem zuvor vorgenommenen Löschen und dem Hinzufügen aus der Zusammenführung festzuschreiben, weitere Baumkonflikte festgestellt. Habe eine svn-Lösung für die Konflikte zugunsten meiner Arbeitskopie (die jetzt die Stammversion der Dateien hatte) und habe sie zum Festschreiben gebracht. Alles sollte gut sein, oder?

Nun, nein. Ein Update einer anderen Kopie von branch2 führte zur alten Version der Dateien (Pre-Trunk Merge). Jetzt habe ich zwei verschiedene Arbeitskopien von branch2, angeblich auf dieselbe Version aktualisiert, mit zwei verschiedenen Versionen der Dateien, und beide bestehen darauf, dass sie vollständig auf dem neuesten Stand sind! Das Auschecken einer sauberen Kopie von branch2 ergab die alte (Pre-Trunk-) Version der Dateien. Ich aktualisiere diese manuell auf die Trunk-Version und übernehme die Änderungen, gehe zurück zu meiner ersten Arbeitskopie (von der ich die Trunk-Änderungen ursprünglich übermittelt hatte), versuche sie zu aktualisieren und erhalte nun einen Prüfsummenfehler für die fraglichen Dateien. Blasen Sie das fragliche Verzeichnis weg, holen Sie sich eine neue Version per Update, und schließlich habe ich eine gute Version von branch2 mit den Stammänderungen. Ich hoffe. Vorbehalt Entwickler.

1
dewtell