一杯清茶

          統(tǒng)計(jì)

          留言簿

          Oracle SQL/PLSQL

          PowerDesigner教程系列

          Struts2.0

          web開發(fā)

          三人行

          從事RCP開發(fā)的同行

          工作流和權(quán)限設(shè)置

          閱讀排行榜

          評(píng)論排行榜

          svn

          MyEclipse下SVN主干與分支的合并操作

          一、分支的應(yīng)用環(huán)境

          1. 什么是分支?

          分支是項(xiàng)目開發(fā)過程中,從項(xiàng)目中的某一版本獨(dú)立出來的一個(gè)單獨(dú)模塊,它可以 包含項(xiàng)目的全部組成成分,也可以僅僅包含其中某一個(gè)部分。

          2. 分支的應(yīng)用

          a. 多個(gè)版本項(xiàng)目的維護(hù)

          當(dāng)一個(gè)項(xiàng)目存在多個(gè)不同的版本時(shí),有可能項(xiàng)目的各個(gè)版本主體代碼都相同,只有一些少量的部分存在區(qū)別,此時(shí)如果把每個(gè)版本都用不同的SVN版本庫進(jìn)行管理顯得比較臃腫,而且也會(huì)造成SVN服務(wù)器文件存儲(chǔ)空間浪費(fèi),而如果保留一個(gè)項(xiàng)目的主體,對(duì)不同的版本創(chuàng)建不同的分支,則僅僅需要關(guān)注那些各版本間有差別的文件,易于SVN版本庫的維護(hù),同時(shí)當(dāng)完成一個(gè)通用功能時(shí)不需要更新多個(gè)版本的SVN庫,對(duì)于開發(fā)效率也有提升。

          b. 在新版本未完善時(shí)對(duì)舊版本的維護(hù)

          在項(xiàng)目上線后,當(dāng)用戶發(fā)現(xiàn)正在使用的版本中存在某些急需修改的問題,而新的版本推出時(shí)間不能滿足用戶需求,則需要?jiǎng)?chuàng)建一個(gè)舊版本的分支獨(dú)立在主干之外,主干繼續(xù)新版本的開發(fā),而分支則關(guān)注于用戶所提出問題的修改,這樣既不影響問題的修改,也不影響新版本的開發(fā)進(jìn)度,當(dāng)新版本完成后再將分支合并到新版本,同樣也不會(huì)留下有隱患的問題。

          c. 多個(gè)開發(fā)人員協(xié)同開發(fā)的工作模式

          在一些協(xié)作開發(fā)的團(tuán)隊(duì)中,采取每個(gè)開發(fā)人員都為自己的模塊建立一個(gè)分支的開發(fā)模式,這樣代碼的主體存在于主干中,開發(fā)人員只需要關(guān)注自己的模塊,且可以放心的從主干更新別人的修改和提交自己模塊的代碼到分支,而不用擔(dān)心引起任何沖突,最后將各個(gè)分支一起合并到主干。

          二、創(chuàng)建分支

          SVN服務(wù)器上創(chuàng)建一個(gè)新的版本庫,包含基本的版本庫目錄(trunkbranchestags)。

          新建項(xiàng)目(demoSvn)并提交到SVN的主干trunk目錄下。

          1. 為項(xiàng)目demoSvn創(chuàng)建分支

          打開MyEclipseSVN庫瀏覽視圖(SVN Repositories),找到demoSvn提交的版 本庫,在SVN的主干目錄trunk 上右鍵 -> new -> Branch 創(chuàng)建分支。

          點(diǎn)擊【OK】創(chuàng)建分支,創(chuàng)建好的分支目錄結(jié)構(gòu)如下:

           

            

          2. 也可以為項(xiàng)目的某一部分創(chuàng)建分支

          demoSvnWebRoot下新建目錄demo,并提交至SVN的主干。切換至SVN庫 瀏覽視圖為demo目錄創(chuàng)建分支,在demo目錄上右鍵 -> new -> Branch 創(chuàng)建分支

           

           

          創(chuàng)建demo目錄的分支結(jié)構(gòu)如下所示:

           

          3. 同時(shí)還可以對(duì)分支創(chuàng)建分支,操作與以上類似,不在贅述

            

          三、對(duì)分支的操作

          1. 直接將分支作為一個(gè)項(xiàng)目import到本地進(jìn)行修改,然后提交。

          1) 將分支brhMain作為一個(gè)項(xiàng)目導(dǎo)入本地工作區(qū)間。

           

          2) 在導(dǎo)入的項(xiàng)目demoBrhMaindemo目錄下新建JSP文件brhMain.jsp

           

           

          3) 將項(xiàng)目demoBrhMain的本地修改提交至SVN后,查看版本庫,發(fā)現(xiàn)分支brhMaindemo目錄下多了一個(gè)brhMain.jsp文件,由此實(shí)現(xiàn)對(duì)分支的修改。

           

          2. 使用switch操作實(shí)現(xiàn)對(duì)分支的修改

          switch操作將當(dāng)前工作區(qū)間所選目錄的文件同步為所切換的分支的文件,并且該目 錄下的版本由分支進(jìn)行管理。switch操作與update操作功能類似,只不過update 操作只能固定的從某個(gè)版本庫進(jìn)行更新,而switch操作可以自由的選擇版本庫。

          在項(xiàng)目demoSvn中使用switch操作實(shí)現(xiàn)分支brhDemo的修改:

          1) demo目錄上右鍵 -> Team -> Switch,此操作將本地demo目錄的文件同步 成brhDemo分支的文件,demo目錄的版本庫切換為brhDemo

          2) 選擇將brhDemo分支同步至本地demo目錄

          3) 本地工作區(qū)間的demoo目錄切換為brhDemo分支后,可以看到在demo目錄 及其下的文 件右下角有一個(gè)小箭頭,如下:

          4) 此時(shí)工作區(qū)間的dmeo目錄已切換,可以在demo目錄下新建MyJsp.jsp,然后 提交,查看提交后的SVN版本庫,發(fā)現(xiàn)MyJsp.jsp已提交至brhDemo分支 下,而不是提交到trunk主干的demo目錄下,如下:

          5) 此時(shí)對(duì)demo目錄下的修改,提交后都會(huì)更新到brhDemo的分支目錄中去,而 不會(huì)對(duì)主干的demo目錄有任何影響,若想對(duì)主干的demo目錄做出修改, 只需再進(jìn)行switch切換回主干的demo目錄即可

          注意:

          需要進(jìn)行switch切換的目錄(或整個(gè)項(xiàng)目)需要有一個(gè)與之有關(guān)聯(lián)的分支。

          進(jìn)行switch切換時(shí),若切換的不是全部項(xiàng)目,而是項(xiàng)目下的某一個(gè)模塊,需要考慮到該某塊內(nèi)部可能會(huì)有對(duì)模塊外文件的依賴,本地工作區(qū)間中那些依賴的文件可能與分支中依賴的文件有所差異,當(dāng)該模塊切換至分支時(shí),可能導(dǎo)致本地項(xiàng)目出現(xiàn)錯(cuò)誤。

          四、主干與分支的合并

          1. 合并操作

          1. 主干于分支的合并流程

          2. 將分支合并到主干的操作就是將需要合并到主干的分支數(shù)據(jù)同步到本地工作區(qū)間,再由本地工作區(qū)間提交到主干版本庫。

          3. 在上文中已在項(xiàng)目demoSvn創(chuàng)建目錄demo,并已創(chuàng)建demo目錄的分支brhDemo,也已經(jīng)介紹過如何對(duì)分支brhDemo進(jìn)行操作,現(xiàn)在通過將對(duì)分支brhDemo的修改合并至demo實(shí)現(xiàn)從分支到主干的合并。

          將分支brhDemo的修改合并至主干:

          1) demo目錄上進(jìn)行switch操作,將分支brhDemo的文件同步至本地工作區(qū)間,在switch后的demo目錄中新建JSP文件demo.jsp,然后提交。檢查SVN版本庫,發(fā)現(xiàn)demo.jsp已提交至brhDemo下,而并未提交至主干的demo目錄下。

          2) 將本地demo目錄通過switch切換同步回主干的demo目錄,檢查發(fā)現(xiàn)本地demo目錄下并無剛剛創(chuàng)建的demo.jsp,此時(shí)已實(shí)現(xiàn)對(duì)分支的修改,并提交至brhDemo

          3) 1),2)兩步參考上文中對(duì)分支的操作,不再做圖片說明。

          4) 將分支的修改合并至本地工作區(qū)間,brhDemo的分支中含有demo.jsp文件,而本地的demo目錄中沒有該文件,先通過Merge操作將brhDemo中的文件與本地的demo目錄合并(注意此操作與switch操作的區(qū)別,switch操作是將brhDemo中的文件完全同步至本地工作區(qū)間,且改變所切換目錄的版本庫)在demo目錄上右鍵 -> Team -> Merge 

          Ignore Ancestry】選項(xiàng)指是否忽略合并文件之間的祖先關(guān)聯(lián),勾選后不管合 并的兩個(gè)文件之間是否有關(guān)聯(lián),都會(huì)進(jìn)行比較然后合并,而不勾選的時(shí)候, 若兩個(gè)文件沒有關(guān)聯(lián)則會(huì)直接刪除主干上的那個(gè)目標(biāo)文件,然后將分支的相 應(yīng)文件覆蓋。

          Record Only】勾選后僅僅合并當(dāng)前選擇目錄下的文件,不會(huì)遞歸的合并該 目錄下子目錄及其中文件。

          選擇將brhDemo分支合并至本地的demo目錄。

          5) 合并后查看本地工作區(qū)間,發(fā)現(xiàn)已將demo.jsp同步至本地demo目錄。

            

          6) 提交本地工作區(qū)間的更新,檢查SVN版本庫,發(fā)現(xiàn)主干的demo目錄已和brh分支的文件完全相同,由此實(shí)現(xiàn)brhDemo分支到主干的合并。

          7) 合并后主干和brhDemo分支中demo.jsp文件完全相同,若在主干和分支分別對(duì)demo.jsp進(jìn)行修改并提交,則當(dāng)再次進(jìn)行合并時(shí),可能會(huì)產(chǎn)生沖突,此時(shí)需要手動(dòng)的處理沖突文件。

          brhDemo分支和brhMain分支的文件同時(shí)合并至主干:

          1) 本文采用的的SVN插件支持同時(shí)將兩個(gè)分支合并至主干,操作步驟與將一個(gè)分支合并至主干類似,不再做圖片說明,區(qū)別僅僅在選擇分支時(shí),需選擇兩個(gè)分支。

          2) 將兩個(gè)分支合并到主干的操作往往伴隨許多沖突,個(gè)人建議在需合并大量文件時(shí)不建議此種合并方式。

           

          2. 取消合并

          1. 未提交至主干時(shí),取消本地工作區(qū)間的修改

          在要取消的目錄上右鍵 -> Tean -> Revert

          五、參考

          http://www.subversion.org.cn/svnbook/

          六、說明

          本文截圖均在MyEclipse10.6SVN插件下完成,視工具版本不同略有區(qū)別。

          posted on 2013-05-02 17:21 一杯清茶 閱讀(388) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 彝良县| 黔南| 高雄县| 桂平市| 莱州市| 怀柔区| 苍山县| 德令哈市| 苍梧县| 师宗县| 沧州市| 宁远县| 崇州市| 兴义市| 永仁县| 荃湾区| 凉城县| 出国| 宣威市| 宁南县| 钟祥市| 潜山县| 阿拉善右旗| 称多县| 库尔勒市| 读书| 华蓥市| 商城县| 涟水县| 阿克苏市| 柞水县| 漳平市| 纳雍县| 阜新市| 清新县| 克拉玛依市| 江津市| 山丹县| 大宁县| 霍山县| 伊川县|