2009-09-03 126 views
2

我有一個分支,我從樹幹前一段時間創建。自從創建分支以來,我沒有碰到樹幹。現在,我想從分支返回到主幹。這是一個非常簡單的例子,因爲沒有太多的合併。幹線沒有任何變化。該分支可以完全替換後備箱。SVN/Subclipse:從分支返回到主幹

在我看來,我有兩個選擇:

  1. 刪除幹線(重命名爲別的,後來刪除),並重新命名分支是軀幹。
  2. 將分支合併到主幹(將我的工作副本移動到主幹並使用分支中的合併命令)。

我不確定哪個選項是首選。維護修訂上下文對我來說非常重要(不要打破修訂圖)。

有什麼想法?

+0

這不是一個愚蠢的http://stackoverflow.com/questions/587603/replacing-trunk-with-branch-in-subversion? – VonC 2009-09-03 13:49:40

+0

有相似之處,但它不是同一個問題。此外,那裏還沒有被接受的答案。我的情況更簡單。 – zvikico 2009-09-03 13:56:31

回答

4

你真的應該使用合併選項前面的主題的答案之一。將修訂信息作爲所有更改的參數放在1提交內可以忽略不計,因爲子版本merge-tracking將保留此信息。如果您仍然安裝1.5之前的版本,您可以在提交消息中註明修訂範圍和分支路徑。

當你沒有改變行李箱什麼,合併將是一個沒有腦子,就像你剛纔說的:

svn merge branchname <Workingcopy-Path> 

(當然你的工作副本應指向主幹)

解答您的評論

SVN 1.4沒有合併跟蹤,所以你應該回滾

爲什麼你不應該重命名分支主幹:

這僅僅是不是你應該工作在你進行簡單的設置方式,這將是工作,但是,你的軀幹將被刪除,所有文件將被再次添加,但你不能輕易跟蹤更改的文件,因爲在您的操作中所有文件都已添加。

如果合併,則只有在分支中更改的文件纔會顯示爲已修改。

此外,所有來自舊後備箱的workingcopys都將失效(因爲您單獨工作,這可能不重要),因此您需要再次檢查它們。

+0

我剛剛更新到SVN 1.6,但我可以回滾到1.4。這個意義上的區別是什麼? 你能指出我在Subclipse中的並行選項嗎? 爲什麼這比重命名分支更好? – zvikico 2009-09-03 15:57:17

0

在你的情況下,我更喜歡第一個選項圍繞你在分支中完成的所有修改的另一種方式是作爲一個修訂版應用於主幹。所以你放棄了這些更改的修訂信息。如果將分支移動到舊中繼目錄的位置,修訂信息保持不變。

+0

最近版本的SVN可以顯示來自合併分支的提交信息。至少我的TortoiseSVN允許這樣做,並且我懷疑這是SVN的一個特性,而不是Tortoise的特性。 – sbi 2009-09-03 16:19:46

+0

是的,這是事實,但不是重點:在分支中進行的所有修改最終都會在合併中作爲一個提交中繼。因此,如果稍後在幹線中詢問特定修訂版本的某些分支變更是否完成,那麼您將得到的是它是合併操作的一部分。那麼當然你可以檢查分支是否發生了哪一次修改,但它確實是更加努力的。 – sebasgo 2009-09-03 17:26:08

0

我認爲最簡單的方法(不知道是否最好做)是使用「svn move」命令執行第一個選項。

複製和移動svn應該像文件操作一樣工作,這些更改也是版本化的。

編輯:我的回答是幾乎像對VonC提到所以你應該看看這個答案