2013-03-21 48 views
19

SVN的這麼長時間的用戶,但在分支/標記方面相當缺乏經驗,以及當我懷疑我沒有真正使用它或充分發揮其潛力時。使用分支的SVN策略,並將樹幹中的更改合併到分支中

我有我的後備箱,我在增加新的功能等工作。這個代碼庫用於多個網站,我們在每個項目的基礎上創建一個分支關閉幹線。

每個分支通常都有特定於該項目的修改,並且我們認爲可以重新使用的任何內容都會添加到主幹中,並且可以在各個項目上打開和關閉功能。

當前,當我們對主幹進行更改,並希望在預先分支中進行這些修改時,我必須通過手動合併某些修訂到分支並重新提交。不理想,並容易錯過的東西。

所以,我的問題...有沒有辦法更新我的分支與所有來自中繼的變化,並處理它們,就好像它是一個標準的中繼更新與衝突?

我已經看到有關將分支重新集成到主幹的問題,但由於我在此實例中使用分支的方式,這並不是我想要做的事情。

+0

你從命令行使用svn還是使用gui like TortoiseSVN? – 2013-03-21 12:29:03

+5

所以,我一直是SVN的用戶,只要它一直存在。雖然你可以與SVN戰鬥,使它做你想做的一些事情,但我必須說實話:git在這方面要好得多。它的設計圍繞着你正在談論的內容(但認爲「更多分支機構」)。如果你想做很多分支合併和跟蹤的事情,我會把你的SVN回購轉換成git回購並從那裏開始。你會更快樂(我知道在將一個10年以上的SVN項目轉換爲git後,我更加有信心知道我的補丁應用到處) – 2013-03-21 13:35:16

+0

我使用了smartsvn(可能更多這個)和命令行 – Horse 2013-03-21 13:57:28

回答

22

是的,這是可能的。基本上,你需要從你的分支的一個乾淨的工作拷貝(一個沒有本地修改)運行svn merge

$ pwd 
/home/user/mybranch 
$ svn status # Does not display anything 
$ svn update # Make sure your local copy is up to date. 
Updating '.': 
At revision X. 
$ svn merge url/to/repository/trunk 
Updates, additions, deletions and conflicts. 
$ #handle conflicts. 
$ svn commit -m "Merging changes from the trunk". 

Keeping a Branch in Sync從SVN書。

第一次合併很可能會引入很多衝突,特別是如果分支在很久以前分叉,但後者合併會順利進行,尤其是在經常合併的情況下。

+0

作品完美!謝謝 – gnuyoga 2013-10-15 15:29:45

+0

我做了那個,之後,當我試圖更新從樹枝上的樹幹時,所有從卡車更新的新類都發生衝突。我做錯什麼了嗎?或者它必須以這種方式發生? – Sertage 2016-05-24 14:32:15