<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

    【18】創(chuàng)建分支


    在企業(yè)級(jí)產(chǎn)品的開發(fā)過程中,除了通用產(chǎn)品之外,有時(shí)會(huì)存在一些需要根據(jù)客戶實(shí)際情況進(jìn)行“定制化”的情況。假設(shè)現(xiàn)在我們產(chǎn)品的代碼存放在/.../trunk目錄下,客戶需要的定制化需要修改源代碼,而且未來的時(shí)間還會(huì)有不斷的需求提出。

    此時(shí)就給我們帶來了一個(gè)問題了:假如我們?yōu)榱送瓿煽蛻舻亩ㄖ苹?,直接?trunk下修改源代碼然后提交。那么會(huì)直接影響到其他通用產(chǎn)品。所以我們本能的想法就是:再創(chuàng)建一個(gè)源代碼的拷貝,然后對(duì)這個(gè)拷貝進(jìn)行獨(dú)立修改。以一個(gè)獨(dú)立項(xiàng)目的形式進(jìn)行版本控制。

    這樣的想法很好,但是又帶來了一個(gè)潛在的問題:假如現(xiàn)在發(fā)現(xiàn)在/trunk目錄的源代碼存在重大bug,需要馬上修正并更新到所有的分組去這樣的工作怎么做?

    和其他版本控制工具一樣,SVN也提供了分支的概念。“分支”實(shí)質(zhì)上也是一個(gè)普通的版本庫(kù)中的目錄。不同的是它是從其他主干或分支復(fù)制而來,它和主干或其他分支“共享”了一段相同的版本歷史,然后在它被創(chuàng)建之時(shí)起又有了它獨(dú)立的版本歷史。

    現(xiàn)在我們來模擬“分支”創(chuàng)建的過程和應(yīng)用。假設(shè)經(jīng)過一段時(shí)間開發(fā)和測(cè)試之后,ECoupon項(xiàng)目已經(jīng)成熟。此時(shí)項(xiàng)目負(fù)責(zé)人決定在版本庫(kù)上開放一個(gè)ECoupon_GA目錄,在這個(gè)目錄下包含了三個(gè)子目錄:

    C:\>svn list http://localhost:8000/svn/Workspace/Ericsson/ECoupon_GA --depth=infinity
    branches
    /
    tag
    /
    trunk
    /
    trunk
    /paul/

    現(xiàn)在我們需要做的事情包括:
     A.把ECoupon項(xiàng)目的代碼Import到ECoupon_GA項(xiàng)目下
     B.為ECoupon_GA項(xiàng)目創(chuàng)建一個(gè)分支,位置在/branches/paul下

    關(guān)于第一個(gè)問題很好解決,有兩種方式:
     A.從本地的E:\Temp\ECoupon項(xiàng)目下導(dǎo)出代碼,再導(dǎo)入到ECoupon_GA/trunk目錄下
     B.從版本庫(kù)的ECoupon下拷貝到ECoupon_GA/trunk目錄下

    下面我們來試一下使用svn copy命令來直接從版本庫(kù)拷貝的做法。還記得我們?cè)谇懊嫣岬降膕vn copy URL URL的用法嗎?

    C:\>svn copy http://localhost:8000/svn/Workspace/Ericsson/ECoupon http://localhost:8000/svn/Workspace/Ericsson/ECoupon_GA/trunk   -"copy directly from ECoupon to ECoupon_GA/trunk"

    Committed revision 
    31.

    可是拷貝的結(jié)果有些不如所愿,原因是svn copy時(shí)會(huì)把頂層目錄也一起拷貝,而我們只想拷貝目錄下的子目錄和文件



    如果我們想采用下面的方法,會(huì)很遺憾的發(fā)現(xiàn)行不通

    C:\>svn copy http://localhost:8000/svn/Workspace/Ericsson/ECoupon/trunk/*   http://localhost:8000/svn/Workspace/Ericsson/ECoupon/branches/paul  -"create branch of ECoupon project for user Paul"
    svn: Path 
    'http://localhost:8000/svn/Workspace/Ericsson/ECoupon/trunk/*' does not exist in revision 31

    很不幸,在SVN中不會(huì)實(shí)現(xiàn)任何的通配符。也就是說在SVN中尼使用通配符是沒有用的。那么假如要拷貝的源目錄下有很多目錄和文件,難道要我們一個(gè)個(gè)執(zhí)行svn copy 命令嗎?答案是使用操作系統(tǒng)的批處理命令或Shell命令。

    下面我們來看如何把trunk目錄下的內(nèi)容拷貝到分支“paul”那里去
    C:\>svn copy http://localhost:8000/svn/Workspace/Ericsson/ECoupon_GA/trunk/doc http://localhost:8000/svn/Workspace/Erics
    son
    /ECoupon_GA/trunk/src http://localhost:8000/svn/Workspace/Ericsson/ECoupon_GA/trunk/WebRoot http://localhost:8000/svn
    /Workspace/Ericsson/ECoupon_GA/trunk/read-from-repo.txt http://localhost:8000/svn/Workspace/Ericsson/ECoupon_GA/trunk/re
    ad
    -from-wc.txt http://localhost:8000/svn/Workspace/Ericsson/ECoupon_GA/branches/paul -"copy resources from trunk to br
    anch"

    Committed revision 
    38.

    我們看到“創(chuàng)建分支”居然和普通的拷貝動(dòng)作一摸一樣!是的對(duì)SVN來說,主干、分支、標(biāo)記都是普通的目錄而已,這些都是人為加上的意義。


    -------------------------------------------------------------
    生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
    posted on 2009-12-10 17:04 Paul Lin 閱讀(399) 評(píng)論(0)  編輯  收藏 所屬分類: 項(xiàng)目管理
    <2009年12月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點(diǎn)博客

    好友博客

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 色屁屁在线观看视频免费| 国产91在线免费| 国产精品一区二区三区免费| 亚洲成人网在线播放| 亚洲真人日本在线| 在线观看免费毛片| 黄在线观看www免费看| 不卡视频免费在线观看| 国产精品亚洲а∨无码播放麻豆 | 亚洲人片在线观看天堂无码| 亚洲爆乳精品无码一区二区三区| 国产一级理论免费版| 拍拍拍又黄又爽无挡视频免费| 色猫咪免费人成网站在线观看| 精品人妻系列无码人妻免费视频| 亚洲AV无码一区二区一二区| 国产精品高清视亚洲精品| 亚洲四虎永久在线播放| 久久亚洲综合色一区二区三区| 亚洲最大av无码网址| 日韩精品电影一区亚洲| 免费的一级片网站| 好男人视频在线观看免费看片| 国产乱子精品免费视观看片| 69精品免费视频| 一级毛片免费毛片一级毛片免费 | 久久久精品国产亚洲成人满18免费网站 | 日韩特黄特色大片免费视频| 1024免费福利永久观看网站| 24小时免费看片| **aaaaa毛片免费| 91麻豆国产免费观看| 久久青草91免费观看| 最新国产乱人伦偷精品免费网站 | 日韩在线永久免费播放| 国产色无码精品视频免费| 最新久久免费视频| 男人都懂www深夜免费网站| 全免费a级毛片免费看| 免费在线观看一级片| 日韩电影免费在线观看|