學習筆記 SVN分支與合并問題詳解
本節作一下SVN分支與合并透析,主要有創建SVN分支的意義,原理和方法,以及分支主干合并之間的轉換等內容,希望通過本文的介紹大家能夠掌握SVN分支與合并方面的知識。
SVN分支
1.創建分支的意義
創建分支的意義,比如我們在一個基礎平臺上進行開發,每個技術小組負責一個子項目,而基礎平臺也是有可能會繼續更改的,這個時候,如果不創建分支,子項目之間會相互影響,影響***的就是后期的測試和版本發布,子項目A已經結束,但測試卻受到正在進行的子項目B的影響,測試通不過,就別說版本發布了。所以,我們需要從目前的項目(主干trunk)中創建分支(branch),隔離子項目間的相互影響。知道了創建分支的意義,那么如何創建呢,下面請看SVN分支與合并介紹中創建的原理。
2.svn創建分支原理
在svn中,創建分支,實際上就是一個版本拷貝(對應copyto...注意:絕不是簡單在客戶端上copy一個目錄,而是svn倉庫中copy,文件版本號會增加。),兩邊做任何修改發生的版本變化,是一套機制。舉例:目前主干版本是100,分支版本是101,主干中增加一個文件,版本為102,分支中再增加一個文件,版本就為103了。兩邊的版本號是一套,不會重復。
3.svn創建分支的方法
TortoiseSVN:右鍵點擊工程目錄->TortoiseSVN->Branch/tag..菜單,FromWCatUrl自動為工程svnurl,比如https://localhost:8443/svn/fbysss/prj1,toUrl填寫https://localhost:8443/svn/fbysss/prj1/branches/branch1。點OK按鈕,分支就創建好了。
Subclipse:Team->Branch/tag..,跟上面類似.
SVN命令模式:svncopytrunk_pathbranch_path-m'描述'
舉例:svnhttps://localhost:8443/svn/fbysss/prj1https://localhost:8443/svn/fbysss/prj1/branches/branch1-m"***個分支"。
4.SVN分支與合并
1)從分支合并到主干
分支開發結束之后,往往需要合并回主干去測試、發布,但分支和主干可能有很多沖突的地方,在合并時經常需要手工解決。
被操作對象:主干
From:主干的打出分支時的版本
To:分支的Head版本(***版本)
怎么理解這個From和To呢?似乎跟我們的想當然不太一樣:因為我們理解,把分支合并到主干,肯定是From分支,To主干。怎么搞反了呢?
實際上,Svn認為,我們要合并的,是從主干的某個版本開始,到分支的某個版本結束。兩邊的版本號實際上是一套系統,不會有重復。我們從TortoiseSVNHelp中也能找到證據:
- viewplaincopytoclipboardprint?
- Ifyouareusingthismethodtomergeafeaturebranchbacktotrunk,
- youneedto........
- IntheFrom:fieldenterthefullfolderURLofthetrunk.
- Thismaysoundwrong,
- butrememberthatthetrunkisthestartpointtowhichyouwanttoaddthebranchchanges.Youmayalsoclick...tobrowsetherepository.
- IntheTo:fieldenterthefullfolderURLofthefeaturebranch.
- Ifyouareusingthismethodtomergeafeaturebranchbacktotrunk,
- youneedto........
- IntheFrom:fieldenterthefullfolderURLofthetrunk.
- Thismaysoundwrong,butrememberthatthetrunkisthestartpointtowhichyouwanttoaddthebranchchanges.
- Youmayalsoclick...tobrowsetherepository.
- IntheTo:fieldenterthefullfolderURLofthefeaturebranch.
2)從主干合并到分支
試想這樣的情況:一個項目里面,要獨立出來一個子項目,需要單獨發布版本,用到了基礎框架代碼,而基礎框架在主干中不斷修改完善,這就需要從主干合并到分支。
被操作對象:分支
From:分支的***個版本(最舊版本)
To:主干的Head版本(***版本)
相當于從分支的***個版本開始一直到主干***一個版本結束合并之后,替換分支。實際上,分支和主干,在管理上是有較大的意義不同,但對于svn系統技術層面來講,二者是平等的,可互為主干和分支。本節關于SVN分支與合并問題介紹完畢,請關注本節其他相關報道。
【編輯推薦】