2011-09-27 88 views
109

我正面臨SVN merge的一個特殊問題。我想從開發分支合併到主幹。 我們有多個開關分支同時切斷了後備箱。將分支合併到中繼

我合併這些分支機構與此命令幹路之一:

svn merge trunk branch_1 

我看不是這個部門的部分修改,把合併到主幹。 我在做什麼錯?

SVN版本:

Subversion命令行客戶端,版本 [email protected]

+6

我知道這是不是一個答案,但如果你同時擁有幾個活躍的分支,那麼可能是你最好轉移到mercurial或git。 Ps:我不是一個狂熱者,我一直在svn工作了7年;-) – zerkms

+2

它提供了什麼優勢?爲什麼轉向git或mercurial是更好的選擇? –

+3

,因爲git和mercurial有更好的分支支持。優點:你不會問這樣的問題,並且在創建和維護分支時會少一些麻煩(目前我正在一個有1000多個分支的項目中工作,在svn中它是一個地獄) – zerkms

回答

198

您的svn merge語法錯誤。

要檢出的trunk工作副本,然後使用svn merge --reintegrate選項:

$ pwd 
/home/user/project-trunk 

$ svn update # (make sure the working copy is up to date) 
At revision <N>. 

$ svn merge --reintegrate ^/project/branches/branch_1 
--- Merging differences between repository URLs into '.': 
U foo.c 
U bar.c 
U . 

$ # build, test, verify, ... 

$ svn commit -m "Merge branch_1 back into trunk!" 
Sending  . 
Sending  foo.c 
Sending  bar.c 
Transmitting file data .. 
Committed revision <N+1>. 

有關詳細信息,請參閱SVN book chapter on merging


請注意,在寫它的時候,這是正確的答案(並被接受),但事情已經開始。見topek的答案,http://subversion.apache.org/docs/release-notes/1.8.html#auto-reintegrate

+3

- 重新集成選項不是強制性的,分支(在1.6中)可以與* any-destination *合併任意次數 –

+1

真的嗎?沒有冒着重複相同的變更集的風險?你可以提供一個鏈接,證明這一點的確鑿證據。 – Neutrino

+0

'--reintegrate'確實不是強制性的,但在這種情況下真的推薦使用。我試圖做到這一點,而沒有「重新整合」,最終導致了數百起衝突。用'--reintegrate',沒有衝突,一切都很好! – tibo

15

在trunk中做一個svn更新,記下修訂號。

從後備箱:

svn merge -r<revision where branch was cut>:<revision of trunk> svn://path/to/branch/branchName 

您可以檢查其中的分支從樹幹做一個svn日誌

svn log --stop-on-copy 
+0

由於同時存在多個開發分支,所以這也不適用於我,這個命令也牽扯到其他分支的變化。可能這是SLik SVN客戶端的問題? –

+0

雖然這不是不準確,但有更簡單的方法可以合併更新版本的'svn'(比如一個OP正在使用)。 – blahdiblah

58

如果你的工作目錄指向樹幹切割,那麼你應該能夠將你的分支合併到:

svn merge https://HOST/repository/branches/branch_1 

一定要在根中發出這個命令您的中繼線目錄

+2

爲我工作比其他選項更好,謝謝。 –

+6

截至SVN 1.8。這是正確的答案。請參閱http://subversion.apache.org/docs/release-notes/1.8.html#auto-reintegrate – GreenAsJade

+2

This!爲什麼複雜的事情?吻。很簡單;所以語法。 – ahnbizcad

1

的語法錯了,應該改爲

svn merge <what(the range)> <from(your dev branch)> <to(trunk/trunk local copy)> 
+0

它不起作用。 – user1911

相關問題