<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    談笑有鴻儒,往來無白丁

    在恰當?shù)臅r間、地點以恰當?shù)姆绞奖磉_給恰當?shù)娜?..  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽

    在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)的標記。
    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的標記,所以我們經(jīng)常可以看到,什么什么release,基于xxx項目的2xxxx版本。就是這個意思了。但是,它還明確的給出一個tag的概念,就是因為這個更加的可讀,畢竟記住tag_release_1_0要比記住一個很大的版本號容易的多。

     

    svn中建立branch或者tag的方法比較簡單,totoiseSVN中的操作是:
    1.選擇Branch/tag..
    2.在出來的界面中的To URL中填上URL,一般是svn://IP/Project/branches/branch-1, 這樣就建立了一個branch-1的branch. 建立tag是一樣的操作,只不過URL一般是svn://IP/Project/tags/tag-1
    3.后面的Create copy from是用于選擇從你當前的working base中的哪個版本中建立branch/tag,可以根據(jù)自己的選擇來訂制,一般選擇Head Revision
    subclipse中幾乎是一樣的操作。

    Merge分為很多種:
    1.多個branch之間merge
    2.branch merge到trunk
    3.trunk merge到branch
    第2種用的比較多,比如在otfs接口中netamount的需求提出后就得建立一個netamount的branch,trunk繼續(xù)在非netamount的情況下繼續(xù)開發(fā),netamount單獨開發(fā),當netamount功能測試通過后,將netamount branch merge到trunk下,然后將trunk release。
    第3種情況用的也不少,如上的例子,當用戶進行netamount測試時,如果用戶不想只測試netamount的功能,則需要將trunk中的修改merge到netamount branch,然后從netamount branch中發(fā)布一個版本供用戶測試。

    branch merge to trunk在tortoiseSVN操作如下:
    1.選擇TortoiseSVN->Merge
    2.選擇Reintegrate a branch
    3.選擇From URL,URL填好之后可以點擊Show Log,可以看看這個branch是否是你要merge的內(nèi)容,下面的Working copy中也可以Show Log,可以確認一下你的工作目錄是否是trunk。確認后點擊Next
    4.Merge Options里面有些選項,根據(jù)需要來選擇,Test Merge按鈕會告訴你這次Merge會做哪些操作,最好先Test Merge一下!如果是預(yù)期的Merge操作,點擊Merge則可以將branch Merge到本地工作目錄下
    5.有沖突的文件需要解決好沖突,解決之后點擊svn commit則完成了merge

    從多個revision中merge到本地工作目錄在tortoiseSVN的操作如下:
    1.選擇TortoiseSVN->Merge
    2.選擇Merge a range of revisions
    3.URL to merge from填上merge的來源,merge 來源一般和你的working copy是不同的branch或者working copy是trunk 而merge from是branch
    4.Revision range to merge填上需要merge的revision,格式是1,3,5或者 1-10
    5.后續(xù)操作同Reintegrate a branch

    subclipse進行Merge操作同tortoiseSVN的操作方式有所區(qū)別,原理基本同Merge a range of revisions。
    點擊Team->Merge后,只有一個界面,這個界面提供了兩種Merge操作方式:
    1.Merge某個版本范圍內(nèi)的修改到本地工作目錄上
    2.Merge feature branch到trunk (也需要先merge到本地)
    第1種的操作方法是:
    1.在from url中填上branch的url
    2.from revision中選擇建立這個branch的revision號,不是最新的那個版本號!
    3.to url框中勾上"Use 'From:' URL"這個check box, To Revision中選擇需要需要Merge到的revision號,一般勾head revision
    4.Dry run讓你預(yù)覽一下merge效果,Unified Diff將Merge的兩邊進行Diff并將Diff結(jié)果保存到文件中。(在我機器中Dry run沒有窗口出來,diff結(jié)果的文件除非只有很小的變化,不然看得頭大)
    5.點擊Merge將merge到本地,這時候與版本庫進行一下同步應(yīng)該和上一步的dry run有同樣的效果,如果merge過來的東西不是你預(yù)期的更改可以選擇revert,但是新增的文件需要手工刪除!如果是預(yù)期的merge效果,那commit,記得在comments中寫上merge來的branch、from revision、to revision(不要寫head,寫數(shù)字)

    總的來看subclipse的merge操作并不方便,不如tortoiseSVN

    轉(zhuǎn)自:http://cddcdd.javaeye.com/blog/353146

    http://eyejava.javaeye.com/blog/308411

    posted on 2009-04-22 08:36 壞男孩 閱讀(4153) 評論(2)  編輯  收藏 所屬分類: 項目管理

    FeedBack:
    # re: SVN中Branch/tag的比較
    2009-04-22 13:22 | jeasonzhao
    好像比較占用空間,能不能做成部分的分支?例如對資源文件不座分支,只是對源代碼文件做分支  回復(fù)  更多評論
      
    # re: SVN中Branch/tag的比較
    2009-11-09 17:46 | we
    全國文章一大抄啊  回復(fù)  更多評論
      
    主站蜘蛛池模板: 成年男女免费视频网站| 羞羞视频免费网站在线看| 91av视频免费在线观看| 久久久久亚洲精品影视| 永久免费av无码网站yy| 亚洲精品自产拍在线观看| aaa毛片免费观看| 亚洲AV午夜福利精品一区二区| 久久国产精品免费一区| 亚洲精品无码MV在线观看| 久久久精品午夜免费不卡| 亚洲欧洲免费视频| 久久精品国产免费观看| 亚洲性无码AV中文字幕| 国产在线观看www鲁啊鲁免费| 国产精品亚洲一区二区三区久久 | 91亚洲va在线天线va天堂va国产| 久久久久免费精品国产小说| 老汉色老汉首页a亚洲| 美女裸身网站免费看免费网站 | 亚洲国产精品无码专区在线观看 | 免费理论片51人人看电影| 国产AV无码专区亚洲AV琪琪| 亚洲国产精品尤物yw在线| 国产一区二区免费视频| 91嫩草亚洲精品| 国产成人高清精品免费软件| AAAAA级少妇高潮大片免费看| 亚洲精品福利视频| 韩国二级毛片免费播放| 久久精品成人免费国产片小草 | 亚洲国产精品VA在线观看麻豆 | 久久精品国产精品亚洲下载| 久久久久久影院久久久久免费精品国产小说 | 免费国产成人午夜私人影视| 91视频免费网站| 亚洲一区二区三区播放在线 | 日产乱码一卡二卡三免费| 99久久99这里只有免费的精品| 亚洲精品国产肉丝袜久久| 免费国产小视频在线观看|