名前

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, 二番目の形式では作業コピーパスとなります)はリビジョン NM で指定され、 その二つが比較されます。リビジョンが省略されれば HEAD を指定されたものと みなします。

三番目の形式では SOURCE は URL か、作業コピーアイテムであり、その場合、 対応した URLが利用されます。この、リビジョン NM のURLが、比較対象と なります。

WCPATH が変更を受け取る作業コピーパスです。もし WCPATHが省略されると、 デフォルトとして .が利用されます。ただし、両方のソースのベース名が同じで、 さらに、その名前のファイルが .にある場合は別で、この場合は、差分はその ファイルに適用されます。

svn diffとは違い、マージコマンドはマージ操作の実行 時にファイルの系統を考慮します。これはあるブランチでの変更点を別の ブランチにマージする場合に、あるブランチでは名称を変更したが、もう一方 ではそうしなかったような場合に非常に重要になります。

別名

なし

変更対象

作業コピー

リポジトリへのアクセス

URLに対して動作するときのみ発生する

スイッチ

--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