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