2010-01-19 13 views
13

Ich versuche meinen Entwicklungszweig wieder in den Stamm meines Repo zu verschmelzen. Schritte, die ich nahm:Eclipse Merge Branch in Trunk

  1. Schalter
  2. Scheck an Stamm, der es auf dem neuesten Stand ist, lösen Konflikte
  3. Zum Sportklub-> Merge
  4. Wählen URL: Entwicklungszweig
  5. Anfang Revision: Revision beim Zweig erstellt wurde
  6. Ende Revision: HEAD
  7. OK

Dies sollte die Magie tun - es öffnet die Syncronize Ansicht auf, die in Ordnung ist, zeigt mir alle Konflikte, aber es ist das Problem passiert:

im Editor vergleichen Ich sehe zwei Dateien: Local File | Remote-Datei (306)

Das ist wirklich seltsam, die Revisionsnummer der Remote-Datei ist tatsächlich die der Datei in der Arbeitskopie (Trunk) und so ist der Inhalt. Die lokale Datei enthält den Inhalt der Datei in der Verzweigung.

Jetzt zeigt der Pfeil korrekt an, dass ich von links nach rechts fusioniere (Abzweig zu Trunk). Dies geschieht auch, wenn ich auf OK klicke.

ABER ich kann nur Änderungen von rechts nach links bewegen !!! Das will ich nicht - ich möchte die Ände- rungen in den Zweigen nicht mit dem alten Inhalt des Trunks überschreiben. Ich möchte den Inhalt von links (Zweig) nach rechts (Stamm) verschieben. Aber ich kann nicht einmal in die richtige Datei schreiben.

Ich weiß nicht, warum es Remote-Datei dort schreibt ?? Es zeigt deutlich die Arbeitskopie-Datei im Remote-Dateifenster, und die Datei aus der Verzweigung (zum Zusammenführen) wird in der lokalen Datei angezeigt.

Irgendein Fehler in Subversive?

Thx, Martin

Antwort

6

Merges sind nie mit subversiven einfach (wie in diesem alten SO question erwähnt), so kann die Zusammenführung von außen tun (oder mit subclipse) wäre hier einfacher sein.

Wenn Ihr Client und Ihr Repository beide mindestens in SVN1.5 sind, sind subversive neue Merge-Funktionen besser, aber immer noch gefährlich, wie in this thread veranschaulicht.

Da Subversive für SVN 1.5 modifiziert wurde, hat sich das gesamte Merge-Verhalten geändert. Eine Sache, die mir wirklich gefallen hat, ist die Fähigkeit, die gewünschten Änderungen zu wählen, diese auf meine Arbeitskopie anzuwenden und dann zu trunkieren.
Subversive tut das jetzt nicht mehr, sondern zwingt alle Änderungen auf Ihre Arbeitskopie und Sie wählen dann, was Sie in den Kofferraum legen wollen.

Dies ist nicht nur ein unerwünschtes Verhalten, sondern auch gefährlich (wenn Sie die Möglichkeit einer Zurücksetzung sowieso ignorieren). Ich ziehe es vor Dinge zu begehen, die ich kenne. Wir haben einen Release-Zweig, der Änderungen erhält, die möglicherweise in den Stamm migriert werden müssen.

+1

das true..it ist irgendwie beängstigend, dass die Zusammenführung vor (ohne Benutzereingriff) geschieht in Ihrem Arbeitskopie. Und dann müssen Sie mit dem Stamm vergleichen und unerwünschte Änderungen rückgängig machen. ziehe ich es andersherum, (Versionen jetzt versuchen), wo vor der Zusammenführung in die Arbeitskopie des Benutzers geschieht können zu fusionieren, welche Dinge wählen. – martin

2

Nun, das schien auf den ersten Blick geheimnisvoll, jetzt werde ich einen ordentlichen Stich bei der Aktualisierung dieser Antwort für alle bieten. Dies betrifft die Zusammenführung mit dem SVN Subversive-Client für Eclipse:

Sie führen Ihre Zusammenführung korrekt durch, indem Sie im Trunk beginnen und dann auf Ihre Datei unter Ihrem lokalen Zweig zeigen. Ihre Dateien werden im Fenster "Textvergleich" auf der Registerkarte Team-Synchronisierung geöffnet. Wenn in der linken Navigationsspalte keine Konflikte angezeigt werden, ist Ihre Zusammenführung gerade passiert. Ja, das ist verwirrend und nicht intuitiv.

Was das Textfenster Vergleichen bietet Ihnen die Möglichkeit, Ihre Änderung rückgängig zu machen (oder alle anderen, die in die zusammengefügte Datei unawares bekommen haben kann), bevor Sie es begehen. Denken Sie daran, dass Sie in der Datei aus Zweig ziehen, so die Idee ist, dass die Zweig Datei in Trunk ist aber in einer Art virtueller Schwebe, bis schließlich begangen und das Ändern oder zum Verhängnis unerwünschte Änderungen hier verweisen auf die Datei in Branch (offensichtlich). Aus diesem Grund haben Sie nur eine Einwegleitung (Trunk to Branch), um die über die Arbeitskopie in Trunk zusammengefassten Änderungen zu überschreiben. Ihre Zusammenführung hat stattgefunden, aber es ist noch nicht ganz offiziell.

Wenn alles aussieht, wie es sollte, rechts die Datei im Fenster Navigator klicken (linken Bereich in meinem Eclipse-Helios installieren), und wählen Sie übernehmen Sie aus der Drop-down. Dann klicken Sie zurück auf Ihre Haupt-Registerkarte Code-Viewing (in meiner Installation ist es PHP, aber es könnte sein, was Sie auch verwenden) und dann die Datei an Trunk committieren.

Wenn Sie dies testen möchten, gehen Sie einen Blick auf die Datei im Trunk „wie sie ist“, bevor sich, und Sie sollten Ihre Änderungen dort reflektiert sehen, ob Sie Ihre merge richtig gemacht haben. Dies scheint so zu sein, wie es für mich auf einem OSX Snow Leopard Macbook Pro funktioniert. Nicht sicher, ob es für Windows- oder Linux-Leute das gleiche ist. Ich nehme an, es ist im Wesentlichen der gleiche/ähnliche Prozess.

0

es ist einfach

Check-out Stamm mit Check-out als ... einen anderen Projektnamen geben.

Jetzt haben Sie sowohl lokal als Arbeitskopie, Rumpf- Sie verpflichten will und von der Filiale arbeiten und deren Änderungen, die Sie in das Repository comitted haben. Jetzt Rechtsklick auf das Stammprojekt (und ich meine das Projekt, nicht einzelne Dateien) - Zusammenführen - Wählen Sie das Zweigprojekt (wieder, PROJECT) akzeptieren alle Änderungen an lokale Kopie commit, was Sie brauchen, um zu trunk wie gewohnt alles gut, löschen Stamm wieder und halten auf dem Zweig arbeiten

vor allem mit Niederlassungen diese super einfach scheint und arbeitete für mich wie ein Zauber

Verwandte Themen