首先說下為什么我們需要用到分支-合並。比如項目demo下有兩個小組,svn下有一個trunk版。由於客戶需求突然變化,導致項目需要做較大改動,此時項目組決定由小組1繼續完成原來正進行到一半的工作【某個模塊】,小組2進行新需求的開發。那么此時,我們就可以為小組2建立一個分支,分支其實就是trunk版【主干線】的一個copy版,不過分支也是具有版本控制功能的,而且是和主干線相互獨立的,當然,到最后我們可以通過【合並】功能,將分支合並到trunk上來,從而最后合並為一個項目。
下面是在eclipse下使用subeclipse插件詳細使用過程:
首先建立一個工程,名字叫Facebook
1.建立分支,為新的分支指定訪問URL:Facebook3[注釋不要忘了]



2.建立好分之后,使用“切換”功能切換到分支下進行開發。


我新建了一個FB3.html的文件並在分支下進行提交。


3.切換回trunk版【即URL為Facebook的版本】

你會發現trunk版里並沒有出現我們剛剛提交的FB3.html,因為FB3.html是屬於分支的,接下來我們要做的就是“合並”,通過合並,我們可以將分支下進行的更改合並到trunk版里。


下面是合並的主要配置:
起始路徑:trunk版的路徑【若需要把trunk版的改動合並到分支則相反】
目標路徑:從哪里獲取改動【這里是分支路徑】
你可以使用指定的版本號,這里采用最新修訂版。

4.點擊合並,你會發現trunk版下新增了一個文件FB3.html
這樣我們就將分支下所做的改動合並到了trunk版里。

值得注意的是:
1.在建立分支的時候最好添加注釋。
2.進行合並前最好保證兩個版本都是干凈的【即沒有未提交或者沖突的文件存在】
3.合並時的目標路徑:需要把誰的改動合並到其他版本就填誰的URL。
整個過程的SVN命令行輸出如下:
下面是在eclipse下使用subeclipse插件詳細使用過程:
首先建立一個工程,名字叫Facebook
1.建立分支,為新的分支指定訪問URL:Facebook3[注釋不要忘了]



2.建立好分之后,使用“切換”功能切換到分支下進行開發。


我新建了一個FB3.html的文件並在分支下進行提交。


3.切換回trunk版【即URL為Facebook的版本】

你會發現trunk版里並沒有出現我們剛剛提交的FB3.html,因為FB3.html是屬於分支的,接下來我們要做的就是“合並”,通過合並,我們可以將分支下進行的更改合並到trunk版里。


下面是合並的主要配置:
起始路徑:trunk版的路徑【若需要把trunk版的改動合並到分支則相反】
目標路徑:從哪里獲取改動【這里是分支路徑】
你可以使用指定的版本號,這里采用最新修訂版。

4.點擊合並,你會發現trunk版下新增了一個文件FB3.html
這樣我們就將分支下所做的改動合並到了trunk版里。

值得注意的是:
1.在建立分支的時候最好添加注釋。
2.進行合並前最好保證兩個版本都是干凈的【即沒有未提交或者沖突的文件存在】
3.合並時的目標路徑:需要把誰的改動合並到其他版本就填誰的URL。
整個過程的SVN命令行輸出如下:
- copy -rHEAD svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook3
- propset subclipse:tags "1538,Facebook2,/Facebook2,branch
- 1540,Facebook3,/Facebook3,branch" E:/myeclipse/workspace/Facebook
- switch svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook3 E:/myeclipse/workspace/Facebook -rHEAD
- At revision 1541.
- add -N E:\myeclipse\workspace\Facebook\WebRoot\FB3.html
- A E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
- commit -m "" E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
- Adding E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
- Transmitting file data ...
- Committed revision 1542.
- switch svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook E:/myeclipse/workspace/Facebook -rHEAD
- D E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
- Updated to revision 1542.
- ===== File Statistics: =====
- Deleted: 1
- merge svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook@HEAD svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook3@HEAD E:/myeclipse/workspace/Facebook
- A E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
- Merge complete.
- ===== File Statistics: =====
- Added: 1
copy -rHEAD svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook3
propset subclipse:tags "1538,Facebook2,/Facebook2,branch
1540,Facebook3,/Facebook3,branch" E:/myeclipse/workspace/Facebook
switch svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook3 E:/myeclipse/workspace/Facebook -rHEAD
At revision 1541.
add -N E:\myeclipse\workspace\Facebook\WebRoot\FB3.html
A E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
commit -m "" E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
Adding E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
Transmitting file data ...
Committed revision 1542.
switch svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook E:/myeclipse/workspace/Facebook -rHEAD
D E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
Updated to revision 1542.
===== File Statistics: =====
Deleted: 1
merge svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook@HEAD svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook3@HEAD E:/myeclipse/workspace/Facebook
A E:/myeclipse/workspace/Facebook/WebRoot/FB3.html
Merge complete.
===== File Statistics: =====
Added: 1
希望本文能有所幫助。
其他參考資料:
http://www.iteye.com/wiki/subclipse/1626-subclipse-getting-started-guide-and-reference-c
===========================關於合並==========================
我在合並的時候發現,合並后文件被直接覆蓋掉了,而沒有出現本該出現的【沖突】,后來經過仔細研究發現,是操作問題。

假設我原來的項目是placii,建立了一個分支是placiiStore.現在需要將分支placiiStore合並到主干線上。那配置應該如圖所示
1.【起始路徑】:這里需要填分支的路徑。
2.第一個修訂號:建立分支時的版本號。在建立分支時候記錄下svn的console
我的是
- copy -rHEAD svn://192.168.1.192/placii/trunk/code/server/source%20code/placii svn://192.168.1.192/placii/trunk/code/server/source%20code/placiiStore
- propset subclipse:tags "1527,placiiStore,/source code/placiiStore,branch
- 1549,placiiStore,/source%20code/placiiStore,branch" E:/myeclipse/workspace/placii
- switch svn://192.168.1.192/placii/trunk/code/server/source code/placiiStore E:/myeclipse/workspace/placii -rHEAD
- At revision 1550.
copy -rHEAD svn://192.168.1.192/placii/trunk/code/server/source%20code/placii svn://192.168.1.192/placii/trunk/code/server/source%20code/placiiStore
propset subclipse:tags "1527,placiiStore,/source code/placiiStore,branch
1549,placiiStore,/source%20code/placiiStore,branch" E:/myeclipse/workspace/placii
switch svn://192.168.1.192/placii/trunk/code/server/source code/placiiStore E:/myeclipse/workspace/placii -rHEAD
At revision 1550.
3.目標路徑:這里使用起始路徑。
4.目標版本號:使用最新版即 HEAD.
點擊合並,如果有人在主干線版本上做了更改,而你再分支上也對這個文件作了更改,將會產生沖突。然后手動把沖突的代碼合並一下,右鍵-標記為解決,這就達到我們的目的了。
小龍在線:對於SVN的分支/合並操作,確實挺有用的,果斷轉載~