Dieser Text befindet sich gegenwärtig in Bearbeitung, unterliegt ständigen Änderungen und kann dadurch nicht stets akkurat irgendeine freigegebene Version der Software Apache™ Subversion® beschreiben. Das Speichern dieser Seite als Lesezeichen oder andere auf diese Seite zu verweisen, ist keine so gute Idee. Besuchen Sie http://www.svnbook.com/, um stabile Versionen dieses Buchs zu erhalten.

Name

svn merge — Anwenden der Unterschiede zweier Quellen auf einen Pfad der Arbeitskopie.

Übersicht

svn merge SOURCE[@REV] [TARGET_WCPATH]

svn merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH]

svn merge SOURCE1[@N] SOURCE2[@M] [TARGET_WCPATH]

Beschreibung

In allen drei Formen ist TARGET_WCPATH der Pfad der Arbeitskopie, der die Unterschiede erhalten wird. Wird TARGET_WCPATH weggelassen, werden die Änderungen auf das aktuelle Verzeichnis angewendet, es sei denn, die Quellen haben identische Basisnamen, die auf eine Datei im aktuellen Arbeitsverzeichnis passen. In diesem Fall werden die Änderungen auf diese Datei angewendet.

In den ersten beiden Formen kann SOURCE entweder ein URL oder ein Arbeitskopiepfad sein (wobei dessen entsprechende URL verwendet wird). Falls die Peg-Revision REV nicht angegeben ist, wird HEAD angenommen. In der dritten Form treffen dieselben Regeln auf SOURCE1, SOURCE2, M und N zu, mit dem einzigen Unterschied, dass, falls irgendeine Quelle ein Arbeitskopiepfad ist, die Peg-Revision explizit angegeben werden muss.

  • Automatische Zusammenführungen

    Die erste Form wird automatische Zusammenführung genannt und wird für Synchronisierungs- und Reintegrations-Zusammenführungen verwendet. Synchronisierungs-Zusammenführungen bringen geeignete Änderungen vom Ursprungszweig (SOURCE) auf einen Zweig (TARGET_WCPATH). Geeignete Änderungen sind solche, die zu einem früheren Zeitpunkt noch nicht von SOURCE auf TARGET_WCPATH gebracht wurden. Siehe „Einen Zweig synchron halten“. Reintegrations-Zusammenführungen bringen Änderungen von einem Arbeitszweig (SOURCE) zurück auf den Ursprungszweig des Arbeitszweiges (TARGET_WCPATH); siehe „Reintegration eines Zweigs“ und „Funktions-Zweige“.

  • Cherrypick Merges

    Die zweite Form wird eine Zusammenführung zum Rosinenpicken genannt und wird verwendet, um eine explizit definierte Menge von Änderungen von einem Zweig zu einem anderen zu bringen. SOURCE in Revision REV wird für jedes angegebene Revisionsbereich verglichen, wie sie zwischen den Revisionen N und M existierte. Siehe „Rosinenpicken“ für weitere Informationen.

    [Tipp] Tipp

    Mehrfache Instanzen von -c und/oder -r können angegeben werden und Vorwärts- können mit Rückwärtsbereichen gemischt werden – die Bereiche werden intern auf ihre Minimalrepräsentierung komprimiert, bevor die Zusammenführung beginnt (die als Ergebnis eine leere Zusammenführung oder Konflikte bewirken kann, die die Zusammenführung beenden, bevor alle verlangten Revisionen zusammengeführt werden).

  • 2-URL-Zusammenführungen

    In der dritten Form, 2-URL-Zusammenführung genannt, wird der Unterschied zwischen SOURCE1 in Revision N und SOURCE2 in Revision M erstellt und auf TARGET_WCPATH angewendet. Die Revisionen sind standardmäßig HEAD, falls sie nicht angegeben sind.

Falls Verfolgung von Zusammenführungen aktiviert ist, zeichnet Subversion intern Metadaten (d.h., die Eigenschaft svn:mergeinfo) über die Zusammenführung auf, falls die beiden Quellen abstammungsmäßig in Beziehung stehen – falls die erste Quelle ein Vorgänger der zweiten ist oder umgekehrt. Bei Verwendung automatischer Zusammenführungen ist das gewährleistet. Subversion berücksichtigt ebenfalls bereits bestehende Metadaten über Zusammenführungen beim Ziel in der Arbeitskopie, wenn es die zusammenzuführenden Revisionen bestimmt; um wiederholte Zusammenführungen und unnütze Konflikte zu vermeiden kann es sein, dass nur eine Teilmenge der verlangten Bereiche zusammengeführt wird

Anders als svn diff berücksichtigt der Zusammenführungsbefehl die Herkunft einer Datei beim Zusammenführen. Dies ist sehr wichtig, falls Sie Änderungen von einem Zweig auf einen anderen übertragen und eine Datei auf einem Zweig umbenannt haben, jedoch nicht auf dem anderen.

[Tipp] Tipp

Die Option --ignore-ancestry schaltet Verfolgung von Zusammenführungen ab und führt dazu, dass sich eine Zusammenführung verhält wie svn diff, wobei der Stammbaum von Dateien beim Zusammenführen ignoriert wird.

Optionen

Beispiele

Reintegration eines Zweigs zurück auf den Stamm – unter der Annahme, dass Sie eine aktuelle Arbeitskopie des Stamms haben (die Option --verbose gibt zusätzliche Informationen dazu aus, was die Zusammenführung vor der eigentlichen Anwendung eines Diffs macht; normalerweise ist das sehr umfangreich und kann bis zur Vervollständigung einige Zeit dauern):

$ svn merge ^/branches/feature-branch-calc-enhancements trunk --verbose 
Überprüfung des Verhältnisses der Zweige...
Berechnung der automatischen Zusammenführung...
Zusammenführung...

$ # bauen, testen, verifizieren, ...

$ svn commit trunk -m "Reintegrate the calc enhancements back to trunk!" 
Sende          trunk
Sende          trunk/calc/brush.c
Übertrage Daten .
Revision 38 übertragen.

Zum Zusammenführen mit Rosinenpicken einer einzelnen Änderunge in eine einzelne Datei:

$ svn merge ^/trunk/calc/brush.c branches/1.x/calc/brush.c -c38 
-- Zusammenführen von r38 in »branches/1.x/calc/brush.c«:
U    branches/1.x/calc/brush.c 
-- Aufzeichnung der Informationen für Zusammenführung von r38 in »branches/1.x/calc/brush.c«:
 G  branches/1.x/calc/brush.c 

Die Unterschiede zwischen zwei nicht verknüpften Zweigen in einem dritten Zweig zusammenführen.

$ svn merge ^/vendor-drop/vendor-1.0 ^/vendor-drop/vendor-1.1 \
            trunk --ignore-ancestry 
-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in »trunk«:
U    trunk/draw/draw.py