<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從版本庫的主干切換到該分支上?,F在用戶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熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费大黄网站在线观| 亚洲精品成a人在线观看| 亚洲高清无在码在线无弹窗 | 天天拍拍天天爽免费视频| 亚洲综合区图片小说区| 亚洲毛片在线免费观看| 亚洲成a人片在线观看中文app | 亚洲最大黄色网站| 18禁黄网站禁片免费观看不卡 | 日韩一卡2卡3卡4卡新区亚洲| 亚洲AV电影天堂男人的天堂| 亚洲香蕉网久久综合影视| 国产一卡二卡3卡四卡免费| 中文字字幕在线高清免费电影| 亚洲人成色4444在线观看| 免费h片在线观看网址最新| 亚洲视频在线不卡| 无码免费午夜福利片在线| 亚洲国产精品无码久久久秋霞1| 国产免费卡一卡三卡乱码| 国产免费A∨在线播放| 亚洲Av永久无码精品三区在线| 啦啦啦完整版免费视频在线观看| 亚洲另类图片另类电影| 国产成人青青热久免费精品| jizz中国免费| 亚洲网站在线播放| 免费看的黄色大片| 国产精品永久免费视频| 久久久久亚洲精品天堂| 成年轻人网站色免费看| jizz18免费视频| 亚洲人成在久久综合网站| 亚洲一区影音先锋色资源| 免费福利视频导航| 亚洲国产美女在线观看| 亚洲阿v天堂在线2017免费| 最近2019中文字幕免费直播| 337p日本欧洲亚洲大胆人人 | 亚洲精品天堂在线观看| 亚洲国产成人久久综合一区77|