2010-09-21 169 views
1

我有一個SVN(1.6.12)項目包含一個樹幹和一個分支。我正在嘗試學習如何合併作品。顛覆雞和蛋問題

project 
+ trunk (14) 
+ branches 
    + test-branch (14) 

括號中的數字是修訂版本號。我使用命令「​​」 執行從主幹到測試分支的合併,並使用「svn commit -m 'Merged trunk'」提交更改。我的目錄結構現在看起來是這樣的:

project 
+ trunk (14) 
+ branches 
    + test-branch (15) 

然後我嘗試做軀幹和測試分支之間的復興合併:「cd trunk; svn merge --reintegrate svn+ssh://.../branches/test-branch」。 SVN抱怨軀幹必須在修訂15.我做了一個「svn update」和目錄結構是這樣的:

project 
+ trunk (15) 
+ branches 
    + test-branch (15) 

酷!準備重新融入。我再次嘗試「svn merge --reintegrate svn+ssh://.../branches/test-branch」。現在SVN抱怨說我需要在重新集成之前將所有幹線更改合併到分支中。中繼線爲15,但測試分支僅合併到了14.

如何解決此問題?如果我合併到分支然後提交,分支將在16歲。我嘗試在主幹上使用「svn switch」,但我得到相同的錯誤。

存儲庫在14的原因是因爲我一直在中繼線和測試分支合併之間進行鋸切。瘋狂的一個定義是重複相同的過程,期待不同的結果:-)。

謝謝。

回答

3

這聽起來像你有一個結帳上面的分支機構和標籤,這就是現在你應該如何工作。

要解決這個問題請確保您有隻行李箱的一個工作副本:

svn co <server>/svn/repos/trunk 

如果你想創建一個分支,你應該做一個服務器端副本(否則它會讓你的工作拷貝到分支副本,你不希望出現這種情況):

svn copy <server>/svn/repos/trunk <server>/svn/repos/branches/test-branch 

現在,您可以將您的工作副本上做分支的一些工作:

svn switch <server>/svn/repos/branches/test-branch 

您現在可以將分支的更改合併到主幹,也可以重新合併分支。重返社會後,應該刪除該分支(命令,就是要執行一次,在分支的末端,看到svnbook更多信息)

要做到這一點,首先切換回主幹:

svn switch <server>/svn/repos/trunk 

,然後要麼合併修訂:

svn merge -c <revnumber> ^/branches/test-branch 

或重返分支:

svn merge --reintegrate ^/branches/test-branch 
svn delete <repos>/svn/repos/branches/test-branch -m "Delete branch"