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.
svn merge — Anwenden der Unterschiede zweier Quellen auf einen Pfad der Arbeitskopie.
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]
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 | |
---|---|
Mehrfache Instanzen von |
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 | |
---|---|
Die Option |
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