2016-03-30 6 views
0

Ich stoße auf ein seltsames Problem mit einem Projekt, das in Subversion verfolgt wird. Ich habe sowohl den Stamm als auch einen stabilen Zweig - der stabile Zweig hat einen bestimmten Ordner, (nennen wir es/a), den ich vor ein paar Wochen erstellt habe und in dem einige Codedateien enthalten sind. Vor ein paar Tagen hat ein anderer Entwickler, mit dem ich arbeite, einen eigenen Ordner namens/a im Stamm erstellt (der gleiche Pfad und alles) und eine andere Datei darin abgelegt. Anders ausgedrückt, sieht die derzeitige Struktur wie dieseZusammenführen von Ordnern mit identischen Namen aus separaten Zweigen in Subversion

/trunk
   /v
        FileYellow
/branches
   /stable
       /a
            FileRed
            FileBlue
            FileGreen

Wenn ich versuche, meine Änderungen aus dem stabilen Zweig in den Stamm zu verschmelzen, erhalte ich einen Baumkonflikt auf der Grundlage der /ein Ordner. Ich denke, das macht Sinn, da beide Ordner unabhängig voneinander erstellt und festgeschrieben wurden und SVN keine Möglichkeit hat, zu wissen, welcher Ordner verwendet werden soll. Ich würde erwarten, dass ich zumindest trunk oder die Struktur des stable branchs/a (einschließlich der Dateien) auswählen könnte, wenn der Konflikt gelöst wird, aber keine der Dateien aus dem Verzeichnis/stable des stable branchs jemals zusammengeführt wird das Arbeitsverzeichnis Über die einzige Sache, die ich tun kann, ist den aktuellen Zustand des Arbeitsverzeichnisses mit svn resolve --accept working -R <path>

zu lösen Ich erwäge gerade, eine svn delete auf dem/a-Ordner im Kofferraum durchzuführen, so dass ich im Stall zusammenführen kann/a (und seine Dateien) und dann erneut die einzelne Datei, die ursprünglich in trunk war. Ich frage mich nur, wenn es eine bessere, elegantere Weise diesem speziellen Szenario für eine solche „pseudo-Baum Konflikte“

Antwort

0

Der natürliche Weg ist

  1. Merge widersprüchlichen Teilbaum nur zu handhaben (cd trunk/a && merge ^/branches/stable/a .)
  2. Merge voller Baum

Vielleicht mergeinfo entfernen nach dem zweiten von /a von Hand zusammenführen (wenn nicht automatisch gereinigt, wie es geschehen muß)

+0

Es ist ein guter Zeitpunkt, zu einem kopfwehfreien Mercurial zu wechseln. –

+0

Leider bekomme ich beim Versuch, eine "/branches/stable/a @ zu erhalten, die ancestral mit /trunk/verwandt sein muss. a @ "Fehler jetzt. Ich vermute, dass, obwohl ich jetzt die Zusammenführung innerhalb des Konflikt-Ordners mache, es immer noch den Eltern/A-Ordner betrachtet und erkennt, dass sie nicht verwandt sind. Aus reiner Neugierde habe ich versucht, ein --ignore-ahnen-Flag einzufügen, aber das löst auch einen Fehler aus: "Mergeinfo kann nicht automatisch zusammengeführt werden" Fehle ich etwas oder habe ich deinen Kommentar missverstanden? – MTB2013

+0

Und ja, diese ganze Erfahrung macht mich sehr aufgeregt, die Dinge so schnell wie möglich nach Mercurial oder Git zu verschieben. – MTB2013

Verwandte Themen