SVN trunk中有工作副本,代碼爲主線版本,而建立了分支爲Branch,存儲着客戶需求的修改的代碼,我針對不同的客戶需求在branch上建立有分支,當客戶的軟件跑得較爲穩定的時候,重新合併到trunk中,使得trunk的代碼版本和branch的修改需求合併。
具體的做法是
(1)提交現有的分支端的代碼,
(2)Switch到主線trunk端,
(3)在SVN中選擇merge功能,以下是SVN合併功能的解釋
被操作對象: 主幹
From : 主幹的 打出分支時的版本
To: 分支的 Head版本 (最新版本)
怎麼理解這個 From 和 To 呢 ? 似乎跟我們的想當然不太一樣:因爲我們理解,把分支合併到主幹,肯定是 From 分支,To 主幹。怎麼搞反了呢?
實際上, Svn 認爲,我們要合併的,是從主幹的某個版本開始,到分支的某個版本結束。兩邊的版本號實際上是一套系統,不會有重複。
(4)合並可以先TestMerge看一下會不會有衝突,有衝突可以通過SVN的提示來解決,
Mark as conflicted. I will deal wiht it later. --標記衝突,合併到主幹解決衝突 Resolve the conflict by using my version of the file. --直接用主幹的文件覆蓋,分支修改無效 Resolve the conflict by using the incoming of the file. --直接用分支修改覆蓋主幹,以分支爲準 Let me edit the file with conflict markers inserted. --直接編輯衝突,編輯完保存,選擇yes保存。 Launch a graphical conflict resolution editor.--直接比對文件,修改衝突,點擊保存。選擇yes解決衝突
(5)合併後可以可以看到新的分支示意圖
原來的trunk就會在branch分支合併後繼續更新,示意圖好像沒有顯示線段來連接回trunk,不過代碼上已經合併到了分支的功能代碼,就可以繼續做新的開發了。