2008-10-27 80 views
6

當我將中繼線合併到功能分支中時,中繼線上發生的刪除將不會被複制到我的工作副本。顛覆合併刪除命令

爲什麼在主幹上的刪除不會在合併時刪除分支上的同一文件? 我使用Subversion 1.5客戶端和服務器。

我假設分支中的文件更改將在重新集成分支時被跳過?

在trunk上贖回文件的最佳方式是什麼,因爲一個同事只是因爲它沒有「準備就緒」而從trunk刪除文件。

現狀:

cd project; svn copy trunk branches/f1; svn ci -m "branching out" branches f1; 
echo "modifying a file on branch." >> branches/f1/file1; svn ci branches/f1 -m "Branch modified"; 
echo "Above modify is not even needed to state the case"; 
svn rm trunk/file1; svn ci trunk -m "creating (conflicting) delete on trunk"; 
cd branches/f1; svn merge svn+ssh://repos/trunk . 
[ -f file1 ] && echo "file f1 does exist while it should have been deleted by merge."; 

因此,文件仍然存在於我的工作拷貝,即使我在合併樹幹該文件已被刪除活躍。非常意外。在我的情況下,我甚至沒有對文件做任何修改,這是我能想到爲什麼svn會保存文件的唯一原因。

回答

1

爲了我的理解,你所做的是在file1中創建本地衝突。在你的分支中,它被修改了。在你的箱子裏,它被刪除了。當你合併時,它會發生衝突。所以這個文件仍然會存在。

我建議2個測試:

  1. 運行上述代碼後, 包括svn status結果。
  2. 嘗試使用與上述相同的代碼,但是 不需要修改該分支 全部。 (svn status將是有益的 在這裏。)
0

你肯定在樹幹上刪除的文件仍然是版本控制下的合併後?它可能沒有版本,但仍然存在,這是預期的行爲。查看svn status的輸出將讓您看到文件是否仍在版本控制之下。

你不妨看看這個bug報告,這個報告徹底解釋了這種情況:http://subversion.tigris.org/issues/show_bug.cgi?id=2282