新聞中心
本節(jié)主要講解一下在SVN中Branch和tag的比較,SVN中Branch和tag在一個功能選項中,在使用中也往往產(chǎn)生混淆。在實現(xiàn)上,branch和tag,對于svn都是使用copy實現(xiàn)的,所以他們在默認的權(quán)限上和一般的目錄沒有區(qū)別。至于何時用tag,何時用branch,完全由人主觀的根據(jù)規(guī)范和需要來選擇,而不是強制的(比如cvs),下面我們就來看一下SVN中Branch和tag的具體介紹。

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的西安網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
SVN中Branch和tag的比較
在SVN中Branch和tag在一個功能選項中,在使用中也往往產(chǎn)生混淆。在實現(xiàn)上,branch和tag,對于svn都是使用copy實現(xiàn)的,所以他們在默認的權(quán)限上和一般的目錄沒有區(qū)別。至于何時用tag,何時用branch,完全由人主觀的根據(jù)規(guī)范和需要來選擇,而不是強制的(比如cvs)。
一般情況下,tag,是用來做一個milestone的,不管是不是release,都是一個可用的版本。這里,應(yīng)該是只讀的。更多的是一個顯示用的,給人一個可讀(readable)的標(biāo)記。
branch,是用來做并行開發(fā)的,這里的并行是指和trunk進行比較。比如,3.0開發(fā)完成,這個時候要做一個tag,tag_release_3_0,然后基于這個tag做release,比如安裝程序等。trunk進入3.1的開發(fā),但是3.0發(fā)現(xiàn)了bug,那么就需要基于tag_release_3_0做一個branch,branch_bugfix_3_0,基于這個branch進行bugfix,等到bugfix結(jié)束,做一個tag,tag_release_3_0_1,然后,根據(jù)需要決定branch_bugfix_3_0是否并入trunk。對于svn還要注意的一點,就是它是全局版本號,其實這個就是一個tag的標(biāo)記,所以我們經(jīng)??梢钥吹剑裁词裁磖elease,基于xxx項目的2xxxx版本。就是這個意思了。但是,它還明確的給出一個tag的概念,就是因為這個更加的可讀,畢竟記住tag_release_1_0要比記住一個很大的版本號容易的多。
SVN中Branch和tag建立的方法比較簡單,totoiseSVN中的操作是:
1.選擇Branch和tag..
2.在出來的界面中的ToURL中填上URL,一般是svn://IP/Project/branches/branch-1,這樣就建立了一個branch-1的branch.建立tag是一樣的操作,只不過URL一般是svn://IP/Project/tags/tag-1
3.后面的Createcopyfrom是用于選擇從你當(dāng)前的workingbase中的哪個版本中建立Branch和tag,可以根據(jù)自己的選擇來訂制,一般選擇HeadRevision
subclipse中幾乎是一樣的操作。
Merge分為很多種:
1.多個branch之間merge
2.branchmerge到trunk
3.trunkmerge到branch
第2種用的比較多,比如在otfs接口中netamount的需求提出后就得建立一個netamount的branch,trunk繼續(xù)在非netamount的情況下繼續(xù)開發(fā),netamount單獨開發(fā),當(dāng)netamount功能測試通過后,將netamountbranchmerge到trunk下,然后將trunkrelease。第3種情況用的也不少,如上的例子,當(dāng)用戶進行netamount測試時,如果用戶不想只測試netamount的功能,則需要將trunk中的修改merge到netamountbranch,然后從netamountbranch中發(fā)布一個版本供用戶測試。
branch merge to trunk在tortoiseSVN操作如下:
1.選擇TortoiseSVN->Merge
2.選擇Reintegrateabranch
3.選擇FromURL,URL填好之后可以點擊ShowLog,可以看看這個branch是否是你要merge的內(nèi)容,下面的Workingcopy中也可以ShowLog,可以確認一下你的工作目錄是否是trunk。確認后點擊Next
4.MergeOptions里面有些選項,根據(jù)需要來選擇,TestMerge按鈕會告訴你這次Merge會做哪些操作,***先TestMerge一下!如果是預(yù)期的Merge操作,點擊Merge則可以將branchMerge到本地工作目錄下
5.有沖突的文件需要解決好沖突,解決之后點擊svncommit則完成了merge
SVN中Branch和tag比較介紹時從多個revision中merge到本地工作目錄在tortoiseSVN的操作如下:
1.選擇TortoiseSVN->Merge
2.選擇Mergearangeofrevisions
3.URLtomergefrom填上merge的來源,merge來源一般和你的workingcopy是不同的branch或者workingcopy是trunk而mergefrom是branch
4.Revisionrangetomerge填上需要merge的revision,格式是1,3,5或者1-10
5.后續(xù)操作同Reintegrateabranch
subclipse進行Merge操作同tortoiseSVN的操作方式有所區(qū)別,原理基本同Mergearangeofrevisions。
點擊Team->Merge后,只有一個界面,這個界面提供了兩種Merge操作方式:
1.Merge某個版本范圍內(nèi)的修改到本地工作目錄上
2.Mergefeaturebranch到trunk(也需要先merge到本地)
第1種的操作方法是:
1.在fromurl中填上branch的url
2.fromrevision中選擇建立這個branch的revision號,不是***的那個版本號!
3.tourl框中勾上"Use'From:'URL"這個checkbox,ToRevision中選擇需要需要Merge到的revision號,一般勾headrevision
4.Dryrun讓你預(yù)覽一下merge效果,UnifiedDiff將Merge的兩邊進行Diff并將Diff結(jié)果保存到文件中。(在我機器中Dryrun沒有窗口出來,diff結(jié)果的文件除非只有很小的變化,不然看得頭大)
5.點擊Merge將merge到本地,這時候與版本庫進行一下同步應(yīng)該和上一步的dryrun有同樣的效果,如果merge過來的東西不是你預(yù)期的更改可以選擇revert,但是新增的文件需要手工刪除!如果是預(yù)期的merge效果,那commit,記得在comments中寫上merge來的branch、fromrevision、torevision(不要寫head,寫數(shù)字)總的來看subclipse的merge操作并不方便,不如tortoiseSVN。SVN中Branch和tag的比較介紹完畢。
標(biāo)題名稱:SVN中Branch和tag優(yōu)劣大比拼
分享地址:http://m.fisionsoft.com.cn/article/cochids.html


咨詢
建站咨詢
