svn merge — 二つのソースの差を作業コピーパスに反映します。
svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
svn merge -r N:M SOURCE[@REV] [WCPATH]
最初の形式と二番目の形式ではソースとなるパス(これは最初の形式ではURL,
二番目の形式では作業コピーパスとなります)はリビジョン
N
と
M
で指定され、
その二つが比較されます。リビジョンが省略されれば
HEAD
を指定されたものと
みなします。
三番目の形式では
SOURCE
は URL か、作業コピーアイテムであり、その場合、
対応した URLが利用されます。この、リビジョン
N
と
M
のURLが、比較対象と
なります。
WCPATH
が変更を受け取る作業コピーパスです。もし
WCPATH
が省略されると、
デフォルトとして
「.
」が利用されます。ただし、両方のソースのベース名が同じで、
さらに、その名前のファイルが
「.
」にある場合は別で、この場合は、差分はその
ファイルに適用されます。
svn diffとは違い、マージコマンドはマージ操作の実行 時にファイルの系統を考慮します。これはあるブランチでの変更点を別の ブランチにマージする場合に、あるブランチでは名称を変更したが、もう一方 ではそうしなかったような場合に非常に重要になります。
--revision (-r) REV --non-recursive (-N) --quiet (-q) --force --dry-run --diff3-cmd CMD --ignore-ancestry --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR
ブランチを主系にマージします (主系の作業コピーがあり、ブランチがリビジョン250で作られたと仮定します):
$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch U myproj/tiny.txt U myproj/thhgttg.txt U myproj/win.txt U myproj/flo.txt
リビジョン23で分岐(ブランチ化)して、そのブランチの中の主系に変更を マージしたいとします。これにはブランチの作業コピーの中で以下のような操作を します:
$ svn merge -r 23:30 file:///tmp/repos/trunk/vendors U myproj/thhgttg.txt …
変更を一つのファイルにマージするには:
$ cd myproj $ svn merge -r 30:31 thhgttg.txt U thhgttg.txt