Diese Dokumentation wurde zur Beschreibung der Serie 1.6.x von 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.

Name

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

Aufruf

svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]

svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]

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

Beschreibung

In der ersten Form werden für die Quell-URLs die Revisionen N und M angegeben. Dabei handelt es sich um die zu vergleichenden Quelltexte. Wenn sie nicht angegeben werden, haben die Revisionen den Standardwert HEAD.

In der zweiten Form bestimmen die URLs, die den Arbeitskopiepfaden der Quellen entsprechen, die zu vergleichenden Quelltexte. Die Revisionen müssen angegeben werden.

In der dritten Form kann SOURCE entweder ein URL oder ein Arbeitskopiepfad (wobei der entsprechende URL verwendet wird) sein. Falls nicht angegeben, wird für SOURCE dasselbe wie für WCPATH angenommen. SOURCE in Revision REV wird verglichen, wie sie zwischen den Revisionen N und M für jeden angegebenen Revisionsbereich existiert hat. Falls REV nicht angegeben ist, wird HEAD angenommen.

-c M ist äquivalent zu -r <M-1>:M, und -c -M macht das Umgekehrte: -r M:<M-1>. Falls keine Revisionsbereiche angegeben werden, ist der Standardbereich 1:HEAD. Mehrere Instanzen von -c und/oder -r können angegeben werden, und das Mischen von Vorwärts- und Rückwärtsbereichen ist erlaubt – die Bereiche werden intern auf die Minimalrepräsentation gestaucht bevor die Zusammenführung beginnt (was eine Nulloperation ergeben kann).

WCPATH ist der Pfad der Arbeitskopie, auf den die Änderungen angewendet werden. Wird WCPATH ausgelassen, wird der Wert . angenommen, es sei denn, die Quellen haben identische Basisnamen, die auf eine Datei innerhalb von . passen. In diesem Fall werden die Änderungen auf diese Datei angewendet.

Subversion zeichnet intern Metadaten über die Zusammenführung nur 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 dritten Form ist das gewährleistet. 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.

Optionen

--accept ACTION
--change (-c) REV
--depth ARG
--diff3-cmd CMD
--dry-run
--extensions (-x) ARG
--force
--ignore-ancestry
--quiet (-q)
--record-only
--reintegrate
--revision (-r) REV

Beispiele

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   .


$ # 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:

$ cd myproj
$ svn merge -r 30:31 thhgttg.txt 
U  thhgttg.txt