Frage

hatte ich einen Funktionszweig von meinem Stamm und wurde wechselt von meinem Stamm in meinen Zweig verschmelzenden regelmäßig und alles funktioniert gut. Heute ging ich den Zweig wieder nach unten in den Kofferraum und eine der Dateien zu verschmelzen, die nach der Schaffung meines Zweiges zu meinem Stamm hinzugefügt wurden, als „Baumkonflikt“ markiert wurden. Gibt es eine Möglichkeit, dies in Zukunft zu vermeiden?

Ich glaube nicht, diese richtig gekennzeichnet werden.

War es hilfreich?

Lösung

Ich fand die Lösung zu lesen auf den Link, Gary gab (und ich schlage vor, diesen Weg zu folgen).

Zusammenfassung der Baumkonflikt begehen Arbeitsverzeichnis mit SVN-Client 1.6.x lösen können Sie:

svn resolve --accept working -R .

Dabei gilt . das Verzeichnis, in Konflikt.

ACHTUNG: : „Begehen Sie Ihr Arbeitsverzeichnis“ bedeutet, dass der Sandbox-Struktur derjenige sein, werden Sie begehen, also wenn zum Beispiel Sie einige Datei aus der Sandbox gelöscht werden sie auch aus dem Repository gelöscht. Dies gilt nur für das Konflikt-Verzeichnis.

Auf diese Weise wir SVN sind darauf hindeutet, den Konflikt (--resolve) zu lösen, die Annahme der Arbeitskopie innerhalb der Sandbox (--accept working), rekursiv (-R), aus dem aktuellen Verzeichnis starten (.).

In TortoiseSVN "Gelöst" auf der rechten Maustaste Auswählen, löst tatsächlich dieses Problem.

Andere Tipps

Subversion 1.6 hinzugefügt Baum Konflikte Konflikte auf Verzeichnisebene zu decken. Ein gutes Beispiel wäre, wenn Sie lokal eine Datei löschen, dann ein Update versucht, einen Text ändern unten auf dieser Datei zu bringen. Ein weiterer Grund ist, wenn Sie Ihnen eine Subversion Umbenennen einer Datei haben Sie da, dass die Bearbeitung ist ein Add / Aktion löschen.

CollabNet Subversion Blog hat einen großen Artikel über Baum Konflikte .

Nach meiner Erfahrung schafft SVN ein Baumkonflikt Jedesmal, wenn ich einen Ordner löschen. Es scheint keinen Grund zu sein.

Ich bin der einzige auf meinem Code arbeiten -> löschen Sie ein Verzeichnis -> commit -> Konflikt

Ich kann nicht wechseln warten auf Git .

Ich sollte klarstellen - ich verwende Subclipse . Das ist wahrscheinlich das Problem! Auch hier kann ich nicht ...

wechseln warten

Ich weiß nicht, ob Sie dies geschieht, aber manchmal wähle ich das falsche Verzeichnis zu fusionieren und ich bekomme diese Fehlermeldung, obwohl alle Dateien erscheinen völlig in Ordnung.

Beispiel:

Merge / svn / Projekt / branches / some-Zweig / Quellen zu / svn / Projekt / Stamm ---> Baum Konflikt

Merge / svn / Projekt / branches / some-Zweig zu / svn / Projekt / Stamm ---> OK

Dies könnte ein dummer Fehler sein, aber es ist nicht immer offensichtlich, weil Sie denken, es ist etwas komplizierter.

Was geschieht hier ist die folgende: Sie erstellen eine neue Datei auf Ihrem Stamm, dann verschmelzen Sie es in Ihrer Branche. In der Zusammenführung verpflichten wird diese Datei auch in Ihrer Branche erstellt werden.

Wenn Sie Ihren Zweig zurück in die Stamm zusammenführen, versucht SVN das gleiche wieder zu tun: Es sieht, dass eine Datei in Ihrer Branche erstellt wurde, und versucht, sie in dem Kofferraum in der Zusammenführung erstellen begehen, aber es existiert bereits! Dies erzeugt einen Baumkonflikt.

Die Art und Weise, dies zu vermeiden, ist eine besondere Zusammenführung zu tun, eine Wiedereingliederung . Sie können dies erreichen mit dem --reintegrate Schalter.

Sie können darüber in der Dokumentation lesen: http://svnbook.red -bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

  

Wenn Ihr Zweiges wieder mit der Stamm Verschmelzung jedoch die zugrunde liegende   Mathematik ist recht unterschiedlich. Ihr Zweig ist nun ein Mischmasch   beiden dupliziert Stamm Änderungen und Nebenstellenwechsel, so   es gibt keinen einfachen zusammenhängenden Bereich von Revisionen über zu kopieren. Durch   die --reintegrate Option angeben, fordern Sie Subversion   sorgfältig replizieren nur die Änderungen, die einmalig für Ihre Branche. (Und in   die Tat, es tut dies, indem den neuesten Baumstamm mit dem neuesten Vergleich   Zweig: die resultierende Differenz ist genau Ihre Branche Änderungen)

Nach einem Zweig reintegrieren es sehr ratsam ist, es zu entfernen, sonst werden Sie treeconflicts bekommen, wenn Sie in der anderen Richtung verschmelzen: aus dem Stamm zu Ihrer Branche. (Für genau den gleichen Grund wie oben beschrieben.)

Es gibt einen Weg, um dies auch, aber ich es nie versucht. Sie können es in diesem Beitrag lesen: Subversion Zweig Wiedereingliederung in v1.6

Dies kann durch nicht unter Verwendung der gleichen Version Kunden in aller verursacht werden.

eine Version 1.5-Client und eine Version 1.6-Client auf dem gleichen Repository verwenden können, diese Art von Problem erstellen. (Ich war selbst gerade gebissen.)

Wenn Sie Baum Konflikte auftreten, die keinen Sinn machen, weil Sie nicht bearbeiten / löschen / kommen überall in der Nähe der Datei, gibt es auch eine gute Chance, dass ein Fehler in der merge-Befehl war.

Was passieren kann, ist, dass Sie vorher bereits eine Reihe von Änderungen fusionierten Sie in Ihrem aktuellen merge ist inklusive. Zum Beispiel, herausgegeben im Stamm jemand eine Datei, und dann später umbenannt. Wenn in Ihrem ersten merge Sie bearbeiten sind, und dann in einem zweiten Zusammenführung umfassen sowohl die Bearbeitung und die Umbenennungs (im Wesentlichen ein Entfernen), es wird Ihnen auch einen Baumkonflikt geben. Der Grund dafür ist, dass die zuvor fusionierte bearbeitet dann als eigenes erscheint und damit das Entfernen nicht automatisch ausgeführt werden.

Das auf 1,4 Repositories mindestens auftreten kann, ich bin nicht sicher, ob der mergetracking in 1.5 eingeführt hilft hier.

Ich kam heute über dieses Problem auch, wenn mein besonderes Problem wahrscheinlich nicht bei Ihnen verwendet ist. Nach der Prüfung der Liste der Dateien, erkennen ich, was ich getan hatte - hatte ich eine Datei vorübergehend in einer Baugruppe aus einer anderen Baugruppe im Einsatz. Ich habe viele Änderungen vorgenommen und wollte nicht die SVN Geschichte für seltene Leiden, so in meinem Zweig ich die Datei über von der anderen Assembly-Ordner verschoben hatte. Dies wird nicht durch SVN verfolgt, so sieht es aus wie die Datei gelöscht und dann erneut hinzugefügt. Dieser endet verursacht einen Baumkonflikt.

ich das Problem, indem Sie die Datei wieder aufgelöst, zu begehen, und und verschmelzenden meine Branche. Dann zog ich die Datei später zurück. :) Das schien den Trick zu tun.

Ich hatte ein ähnliches Problem. Das einzige, was für mich tatsächlich gearbeitet war, die in Konflikt mit Unterverzeichnissen zu löschen:

svn delete --force ./SUB_DIR_NAME

kopieren Sie sie dann wieder aus einem anderen Stammverzeichnis in der Arbeitskopie, die sie mit hat:

svn copy ROOT_DIR_NAME/SUB_DIR_NAME

Dann tun

svn cleanup

und

svn add *

Sie können Warnungen mit dem letzten, aber sie einfach ignorieren und schließlich

svn ci .

Ich hatte das gleiche Problem und es gelöst durch erneutes tun die Zusammenführung mit diese Anweisungen . Grundsätzlich verwendet es SVN des „2-URL merge“ trunk auf den aktuellen Zustand Ihrer Niederlassung zu aktualisieren, ohne so viel Mühe über die Geschichte und Baum Konflikte. Ersparte mir manuell Fixierung 114 Baum Konflikte.

Ich bin mir nicht sicher, ob es die Geschichte bewahrt und wie man möchte, aber es war es wert in meinem Fall.

Ein Szenario, das ich in manchmal laufen:

Angenommen, Sie einen Stamm haben, von dem Sie einen Release-Zweig erstellt. Nach einigen Änderungen am Stamm (insbesondere schaffen „some-dir“ Verzeichnis) erstellen Sie eine Funktion / fix Zweig, die Sie später in Release-Zweig zusammenführen mögen auch (weil Änderungen klein genug waren und die Funktion / fix ist wichtig für die Freisetzung) .

trunk -- ... -- create "some-dir" -- ...
     \                                  \-feature/fix branch
      \- release branch

Wenn Sie dann versuchen, die Funktion zu fusionieren / fix Zweig direkt in den Release-Zweig Sie einen Baumkonflikt bekommen (auch wenn das Verzeichnis nicht einmal in Funktion existieren / fix Zweig):

svn status
!     C some-dir
      >   local missing or deleted or moved away, incoming file edit upon merge

Sie müssen also explizit die Commits fusionieren, die am Stamm fertig waren, bevor Funktion Erstellen / fix Zweig, der die „etwas Verzeichnis“ erstellt, bevor die Funktion / fix Zweig zusammengeführt werden.

ich oft vergessen, dass das nicht notwendig in git ist.

Bis heute, denn seit mindestens 3 Monaten, die ich regelmäßig Hunderte von Baum Konflikte auftreten, wenn ein Zweig zurück in den Kofferraum zu verschmelzen versucht (mit TortoiseSVN 1.11 ). Ob indexiert oder nicht, BTW. Ich habe mit TortoiseSVN seit seiner v1, im Jahr 2004, und ich Zweige die ganze Zeit reintegrieren. Etwas muss vor kurzem geschehen nehme ich an?

Heute So lief ich dieses einfache Experiment, und ich fand, was diese verrückten Konflikte war die Schaffung:

  1. gegabelt ich die Stamm @ 393 aus;
  2. I geändert zig Dateien in zufälliger Reihenfolge, sowie neue zu schaffen;
  3. I verpflichtet. Jetzt @ 395 (ein Kollege gegabelt bei 394 von seiner eigenen Sache durchzuführen).
  4. Dann habe ich versucht, den Zweig zurück in den Kofferraum, Test nur zu reintegrieren; TortoiseSVN Empfehlung des Assistenten Folgendes: „Alle Revisionen fusionieren (Reintegration), lassen Sie dieses Feld leer“. Um dies zu erreichen, habe ich rechts geklickt hat auf den Stamm-Ordner, und wählen Sie "TortoiseSVN> Merge, von / path / to / Zweig", und I verließ den gesamten Drehzahlbereich leer , wie im Dialog beraten.

Diskussion: (siehe Anhang)

alle Neuausgaben ... was? Ich habe keine Ahnung , dass der Client bezogen haben muß „ alle Revisionen des Ziels! (Stamm)“, wie es in dem Prozess um diesen Zweig zu reintegrieren, ich sah, die Angabe „Zusammenführen von Revisionen 1-HEAD“! OH MEIN GOTT. Armer Teufel, du bist hier in den Tod fallen. Dieser Zweig wurde @ 393 geboren, können Sie nicht lesen seine Geburtsurkunde, um Gottes willen? dies ist, warum so viele Konflikte aufgetreten: SVN-cli auf einem törichten spree von Revision 1 wird

Auflösung:

  1. Im Gegensatz was durch die wiz ist empfohlen, nicht einen Bereich angeben, dass alle Revisionen ... das Leben der Niederlassung umfasst! daher 394-HEAD ,
  2. laufen jetzt, dass merge Test erneut, und eine Zigarre bekommen. ( siehe zweiten Befestigungs ).

Moral: Ich kann nicht begreifen, warum sie noch nicht, dass die Fehler behoben haben, denn es ist, tut mir leid. Ich sollte die Zeit nehmen, diese zu melden mit ihnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top