目錄
創建分支
- 創建一個分支
1
svn copy svn://xx.com/repo/trunksvn://xx.com/repo/branches/TRY-something-m'make branches TRY-something'
- 把工作目錄轉到分支
1
svn switch svn://xx.com/repo/branches/TRY-something
當然,也可以再轉到主干: svn switch svn://xx.com/repo/trunk
合並一個分支到主干
一旦分支上的開發結束,分支上的代碼需要合並到主干。SVN中執行該操作需要在trunk的工作目錄下進行。
- 查找到分支版本
- 方法一:最后一個r11340就是創建分支時的reversion
12
cdbranchsvn log --stop-on-copy - 方法二:
12345
cdtrunksvn -q --stop-on-copy 分支URL#這條命令會查詢出自創建分支以后分支上的所有修改,最下面的那個版本號就是我們要找的版本號.#示例:svn log -q --stop-on-copy svn://192.168.1.177/tags/beta_2009_12_24
- 方法一:最后一個r11340就是創建分支時的reversion
- 分支合並到主干
123456789101112
svn merge -r 分支版本號:HEAD 分支的URL#HEAD為當前主干上的最新版本#示例:cdtrunksvn merge -r 12:HEAD svn://192.168.1.177/tags/beta_2009_12_24cdtrunksvn merge --reintegrate http://svn_server/xxx_repository/branches/br_feature001# 分支合並到主干中完成后應當刪該分支,因為在SVN中該分支已經不能進行刷新也不能合並到主干。# 合並版本並將合並后的結果應用到現有的分支上svn -r 148:149 merge http://svn_server/xxx_repository/trunk
- 解決沖突:
1234567
svn st |grep^C# 查找合並時的沖突文件,手工解決沖突svn resolved filename# 告知svn沖突已解決svn commit -m""# 提示合並后的版本svn: Aborting commit:'/path/resources/noc'remainsinconflict$ svn revert resources/nocReverted'resources/noc'
兩個分支合並
兩個分支合並可以拆分為一下兩步:
- 第一步:
197從舊主干引出,186打完tag,表示是新主干
合並最新代碼的意思是:將新主干與舊主干比對,並添加到197中。這樣197既有自己的新增的代碼,也同時有最新線上的代碼。
|
1
2
3
|
cd
197_Branch
svn merge https:
//xxx
.com
/tags/project/project_Old_BL
https:
//xxx
.com
/tags/project/project_New_BL
svn ci -m
'merge 186 trunk'
|
- 第二步:
但是后來,其他人又向186提了代碼,所以還需要將186分支(即打了tag后的186,打了tag前的186已是主干)合並至197中。
合並辦法:找出186分支,比對與新主干之間的差別,並添加到197中。這樣197就有最新的全部代碼了。
|
1
2
3
|
cd
197_Branch
svn merge https:
//xxx
.com
/tags/project/project_New_BL
https:
/xxx
.com
/project/branches/project/186_Branch
svn ci -m
'merge 186 branch'
|
合並主干上的最新代碼到分支上
|
1
2
3
4
5
6
7
|
cd
br_feature001
svn merge http:
//svn_server/xxx_repository/trunk
# 如果需要預覽該刷新操作,可以使用svn mergeinfo命令,如:
svn mergeinfo http:
//svn_server/xxx_repository/trunk
--show-revs eligible
# 或使用`svn merge --dry-run`選項以獲取更為詳盡的信息。
|
發布
產品開發已經基本完成,並且通過很嚴格的測試,這時候我們就想發布給客戶使用,發布我們的1.0版本。
給當前主干打個標簽,並且這個標簽不再改動了,但是實際上標簽和分支是一個意思,你可以在標簽上繼續做改動,但這不推薦。
|
1
2
3
4
5
6
7
|
# 建立tags
svn copy svn:
//xx
.com
/repo/trunk
svn:
//xx
.com
/repo/tags/RB-1
.0
svn copy http:
//svn_server/xxx_repository/trunk
http:
//svn_server/xxx_repository/tags/release-1
.0 -m
"1.0 released"
# 刪除分支或tags
svn
rm
http:
//svn_server/xxx_repository/branches/br_feature001
svn
rm
http:
//svn_server/xxx_repository/tags/release-1
.0
|

