Diese Dokumentation wurde zur Beschreibung der Serie 1.7.x von Apache™ Subversion® erstellt. Falls Sie eine unterschiedliche Version von Subversion einsetzen, sei Ihnen dringend angeraten, bei http://www.svnbook.com/ vorbeizuschauen und stattdessen die zu Ihrer Version von Subversion passende Version dieser Dokumentation heranzzuiehen.
svn merge — Anwenden der Unterschiede zweier Quellen auf einen Pfad der Arbeitskopie.
svn merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH]
svn merge --reintegrate 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.
Zusammenführungen zum Synchronisieren und Rosinenpicken
Die erste Form ohne irgendeine der Optionen
-c
oder -r
wird
„Synchronisierungs“-Zusammenführung
genannt und es wird -r 1:REV
impliziert. Diese Variante wird verwendet, um auf
einem Zweig alle in Frage kommenden Änderungen von
seinem unmittelbaren Vorgänger-Zweig unterzubringen,
siehe
„Einen Zweig synchron halten“.
Wird die erste Form mit den Optionen
-c
oder -r
verwendet, ist das eine Zusammenführung zum
„Rosinenpicken“ und wird verwendet, um
eine explizit definierte Menge von Änderungen von
einem Zweig zu einem anderen zu bringen, siehe
„Die Rosinen herauspicken“
Tipp | |
---|---|
Mehrfache Instanzen von |
In beiden Varianten der ersten Form wird
SOURCE
in Revision
REV
verglichen, wie sie
zwischen den Revisionen N
und M
für jeden angegebenen
Revisionsbereich existiert hat.
Zusammenführung zur Reintegration
Die zweite Form wird
„Reintegrations-Zusammenführung“ genannt
und wird verwendet, um Änderungen von einem Zweig
(SOURCE
) zurück auf den
unmittelbaren Vorgänger-Zweig
(TARGET_WCPATH
) zu
bringen.
Tipp | |
---|---|
Zusammenführungen zur Reintegration unterstützen nur diesen speziellen Anwendungsfall und besitzen deshalb eine Reihe besonderer Anforderungen und Einschränkungen, die die anderen beiden Formen der Zusammenführung nicht haben. Siehe „Einen Zweig synchron halten“, „Reintegration eines Zweigs“, „Einen reintegrierten Zweig am Leben erhalten“, und „Funktions-Zweige“. |
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 der ersten beiden Formen 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
Tipp | |
---|---|
Verfolgung von Zusammenführungen
kann durch die Option |
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.
Zurückführen eines Zweigs auf den Stamm (unter der Annahme, dass Sie eine aktuelle Arbeitskopie des Stamms haben):
$ svn merge --reintegrate \ http://svn.example.com/repos/calc/branches/my-calc-branch --- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«: U button.c U integer.c U Makefile U . -- Aufzeichnung der Informationen für Zusammenführung zwischen Projektarchiv-URLs in ».«: U . $ # bauen, testen, verifizieren, ... $ svn commit -m "Merge my-calc-branch back into trunk!" Sende . Sende button.c Sende integer.c Sende Makefile Übertrage Daten .. Revision 391 übertragen.
Zum Zusammenführen von Änderungen in eine einzelne Datei:
$ svn merge -c 31 ^/trunk/thhgttg.txt thhgttg.txt -- Zusammenführen von r31 in »thhgttg.txt«: U thhgttg.txt -- Aufzeichnung der Informationen für Zusammenführung von r31 in »thhgttg.txt«: U thhgttg.txt