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

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

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

    posts - 262,  comments - 221,  trackbacks - 0
    【20】從主干更新分支
    在前面我們創建了分支,而且把用戶guest的本地工作副本E:\Temp\ECoupon_tmp從版本庫的主干切換到該分支上。現在用戶guest和其他人可以并行地開發而不影響彼此了,因為分支自創建點那一刻開始就擁有了自己的版本線。

    假設現在突然發現主干上的一個重大bug,該bug存在于各個分支,經過修正后需要馬上更新到其他分支。那么問題就來了:難道需要一個個地修改分支上的文件嗎?有沒有更好點的方法?有---那就是svn merge命令。

    C:\>svn cat http://localhost:8000/svn/Workspace/Ericsson/ECoupon/read-from-wc.txt
    modify by user qlinpen
    add by user qlinpen
    add by user guest

    fix bugs of ECoupn project

    C:\
    >svn cat http://localhost:8000/svn/Workspace/Ericsson/ECoupon_GA/branches/paul/read-from-wc.txt
    modify by user qlinpen
    add by user qlinpen
    add by user guest

    為了把主干上的更新同步到分支,我們使用svn merge命令,svn merge的命令用法有三種:

     A.svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
     B.svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
     C.svn merge[[-c M]...|[-r N:M]...] [SOURCE[@REV][WCPATH]]

    最常用的是第三種,即把當前一個階段內的版本都合并到WCPATH的位置。其中-c M相當于-r M-1 M。下面我們來看如何應用這個命令來集成主干的改變

     Step 1:確定要從哪個版本開始~那個版本結束

    通常從主干到分支彼此之間的集成不會太頻繁,不要指望能夠一天一次或幾天一次。通常都是在主干的代碼開發完畢,測試通過后才會更新到分支。在此期間可以主干上的開發人員已經進行了多次的提交,為了令到這一時間段內的變化都能夠被分支感知,我們會把這一階段內的所有變化都集成到分支上。

    所以集成前的第一步就是使用svn log查看要從哪個版本開始集成。

    C:\>svn log http://localhost:8000/svn/Workspace/Ericsson/ECoupon_GA
    ------------------------------------------------------------------------
    r38 
    | qlinpen | 2009-12-10 18:47:59 +0800 (星期四, 10 十二月 2009| 1 line

    我們看到分支的創建在版本38,那么我就要從版本號38開始。而在版本號38之后主干上又發生了什么改變呢?
    C:\>svn log -38:HEAD http://localhost:8000/svn/Workspace/Ericsson/ECoupon
    ------------------------------------------------------------------------
    r39 
    | qlinpen | 2009-12-11 11:03:09 +0800 (星期五, 11 十二月 2009| 1 line

    commit change to trunk
    ------------------------------------------------------------------------
    r40 
    | qlinpen | 2009-12-11 11:45:41 +0800 (星期五, 11 十二月 2009| 1 line

    add 
    new file readme.txt
    ------------------------------------------------------------------------
    r41 
    | qlinpen | 2009-12-11 11:46:27 +0800 (星期五, 11 十二月 2009| 1 line

    delete file read
    -from-repo.txt
    ------------------------------------------------------------------------

    可以看到在版本38之后,主干上一共發生了三次提交。那么集成的結束版本就是41。

     Step 2: 執行集成

    C:\>svn merge -38:41 http://localhost:8000/svn/Workspace/Ericsson/ECoupon E:\Temp\ECoupon_tmp 
    --- Merging r39 through r41 into 'E:\Temp\ECoupon_tmp':
    U    E:\Temp\ECoupon_tmp\read
    -from-wc.txt
    A    E:\Temp\ECoupon_tmp\readme.txt
    D    E:\Temp\ECoupon_tmp\read
    -from-repo.txt

    我們告訴SVN,把從版本號38開始到41之間的所有改變都集成到本地工作副本ECoupon_tmp項目中,于是從版本號39開始~41的所有變化都會被應用到本地工作副本。

     Step 3: 提交集成結果

    由于svn merge命令的最終應用時WCPATH,也就是說你只能把來自主干的改變同步到分支的本地副本。此時你本地的副本已經時最新的了,但版本庫上的分支還不是。所以還得執行一次commit

    C:\>svn commit E:\Temp\ECoupon_tmp -"commit Paul's latest code merged from trunk since r38:r41"
    Sending        E:
    \Temp\ECoupon_tmp
    Deleting       E:
    \Temp\ECoupon_tmp\read-from-repo.txt
    Sending        E:
    \Temp\ECoupon_tmp\read-from-wc.txt
    Adding         E:
    \Temp\ECoupon_tmp\readme.txt
    Transmitting file data .
    Committed revision 
    42.

    這時所有的改變都應用到版本庫的分支上了

    需要注意的一點:merge成功不代表一切都沒有問題,還需要檢查merge的內容是不是真正符合我們要求的


    -------------------------------------------------------------
    生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
    posted on 2009-12-11 12:02 Paul Lin 閱讀(456) 評論(2)  編輯  收藏 所屬分類: 項目管理


    FeedBack:
    # re: 【原】SVN In Action(18)
    2009-12-11 16:05 | 愛美女
    感謝,正在使用eclipse svn插件`  回復  更多評論
      
    # re: 【原】SVN In Action(18)
    2011-10-18 23:41 |
    你好
    svn merge -r 38:41 http://localhost:8000/svn/Workspace/Ericsson/ECoupon E:\Temp\ECoupon_tmp
    與下面的形式等價嗎?
    svn merge http://localhost:8000/svn/Workspace/Ericsson/ECoupon@38 http://localhost:8000/svn/Workspace/Ericsson/ECoupon@41 E:\Temp\ECoupon_tmp
    按理說是等價的,但貌似得到的結果不一樣。  回復  更多評論
      
    <2009年12月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 怡红院亚洲怡红院首页| 国产精品亚洲一区二区无码| aa午夜免费剧场| 免费人成网站在线高清| 亚洲av永久无码精品秋霞电影秋| 在线观看免费为成年视频| 亚洲精品无播放器在线播放| 成人免费无码大片a毛片| 精品国产日韩久久亚洲| 毛片免费视频观看| 亚洲Av永久无码精品黑人| 亚洲JIZZJIZZ中国少妇中文| 一级做α爱过程免费视频| 亚洲精品国精品久久99热一| 女同免费毛片在线播放| 亚洲AV成人精品网站在线播放 | 免费国产污网站在线观看不要卡 | 99爱免费观看视频在线| 亚洲女人初试黑人巨高清| 在线视频免费观看www动漫| 老司机午夜免费视频| 亚洲中文久久精品无码ww16| 国内精品免费视频精选在线观看| 久久精品国产亚洲| 又粗又大又黑又长的免费视频| 亚洲精品国产精品| 国产亚洲日韩一区二区三区| 91精品免费不卡在线观看| 亚洲欧洲AV无码专区| 日本亚洲国产一区二区三区| 最近中文字幕无免费| 亚洲高清乱码午夜电影网| 国产亚洲日韩一区二区三区| 综合在线免费视频| 一级毛片a免费播放王色电影| 亚洲AV人人澡人人爽人人夜夜 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | av在线亚洲欧洲日产一区二区| 久久久久国产精品免费免费不卡| 亚洲xxxx18| 亚洲精品你懂的在线观看|