名前

svn merge — 二つのソースの差を作業コピーパスに反映します。

書式

svn merge [-c M | -r N:M] SOURCE[@REV] [WCPATH]
svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]

説明

最初の形式と二番目の形式ではソースとなるパス (最初の形式ではURL、二番目の形式では作業コピーパス) はリビジョン NM で指定され、この二つを比較します。リビジョンを省略すると HEAD をデフォルトとします。

-c M」 オプションは、N = M-1 の状態の 「-r N:M」 と等価です。「-c -M」 は逆 (N = M-1 の状態の 「-r M:N」) になります。

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

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

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

別名

なし

変更対象

作業コピー

リポジトリアクセス

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

オプション

--revision (-r) REV
--change (-c) REV
--non-recursive (-N)
--quiet (-q)
--force
--dry-run
--diff3-cmd CMD
--extensions (-x) ARG
--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