一個可能的解釋是,你可能會忘記更改集的一部分。
如果更改設置爲合併您檢出的子目錄之外的封面文件,那麼總是有可能忘記合併這些文件。
例如,如果你有一個犯這樣的主幹:
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確實表明穩定分支上只有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 2011-03-31 06:34:03