可能な説明の1つは、変更セットの一部を忘れる可能性があるということです。
チェックアウトしたサブディレクトリの外にあるカバーファイルをマージする変更セットがある場合、それらのファイルをマージする可能性は常にあります。例えば
、あなたがトランク上でこのようにコミットしている場合:
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c
Change some stuff
そして、あなたは、あなたのブランチからsubdir1のチェックアウトを持っている「安定」、そしてあなたは、このようにR5を設定変更をマージすることができます:あなたが戻ってログを見れば
$ svn co http://example.com/svn/branches/stable/subdir1
$ cd subdir1
$ svn merge -c 5 http://example.com/svn/trunk/subdir1 .
--- Merging r5 into '.':
U main.c
$ svn ci -m"Merged r5 from trunk"
しかし、これは唯一、まだ改正5.さらに悪いの半分をマージしますが、それは今、これを表示します:
$ svn log -g http://example.com/svn/
...
------------------------------------------------------------------------
r5 | rich | 2009-04-16 22:22:46 +0200 (Thu, 16 Apr 2009) | 2 lines
Changed paths:
M /trunk/subdir1/main.c
M /trunk/subdir2/main.c
Merged via: r6
Change some stuff
コミット全体をマージしたように見えますが、実際にはいくつかのものしかマージしていないようです。もちろん、r6はstableブランチ上で1つのファイルだけが変更されたことを示しています。
------------------------------------------------------------------------
r6 | rich | 2009-04-16 22:28:16 +0200 (Thu, 16 Apr 2009) | 1 line
Changed paths:
M /branches/stable/subdir2
M /branches/stable/subdir2/main.c
Merge revision 5 from trunk
誰かが、変更セットの一部だけがマージされ、残りの部分が実行する必要があることを覚えておいてください。サブディレクトリマージを使用しないと、この問題は回避されます。
以前のコミットをすべてマージしたくない場合があり、上記のシナリオはまさにあなたが意図したものです。その場合、おそらくあなたの意図を記述する良いコミットメッセージを追加するのが最善の方法です。
私はタイトルが好きです:) – Dunaril