在開發過程中,靈活使用分支和合並,可以為我們的版本控制提供許多方便。
使用分支的場景
- 要對某一個模塊做重大調整,而不想別人打擾你或你不想打擾別人的工作,因為你修改的內容比較多,在沒有完全改好並測試過之后就提交的話,別人更新后的程序就用不了了,但是如果你一直不提交,等到你完全改好后再提交,那svn的版本管理的作用體現在哪里?通過分支可以避免這個問題。
- 主干已經開發完成,要進行發布,那把主干復制到分支,然后分支主要進行bug的修改和完善,而主干繼續進行新特性的開發。比如我們要對框架進行升級工作,我們在目前的主干開發了差不多的時候,就可以准備發布1.0版本了,那我們把主干的復制到一個叫版本1的分支,在修復測試、發布1.0版本的同時,主干繼續進行2.0的開發工作。當分支有bug修復的時候,同步到主干。
目前我們使用分支多是前一種情況。
創建分支
打開要創建分支的文件,可以是一個目錄,也可以是一個文件,在該文件上右鍵點擊,如圖:
選擇“分支/移動”菜單,打開復制界面,如下:
在“到URL”選擇框里,填寫要分支的路徑,shop2,下一步,選擇創建分支的版本:
默認選擇“HEAD修訂版”就可以了,就是svn上最新的版本。下一步,提交更改:
填寫注釋,點擊“Finish”,完成分支的創建。創建后的分支如下:
Svn的分支和標簽操作都是復制一份副本。可能有人覺得,如果創建太多分支的話,不停的復制,服務器會不會太多東西了,負荷太重了,這個大可放心,svn的復制操作並不是真正的復制一份同樣的數據,而是一個“錢復制”,它只是創建了一個鏈接而已,一個到主干的 連接。在你對分支沒做任何修改之前,分支都只是一個鏈接,當你對分支的文件作了修改后,該文件在分支那才會真正的創建一個文件。
至此,分支已經創建完畢。
切換到分支,編輯分支內容
當你創建分支后,肯定是想在分支那修改東西。想修改分支的內容,要把本地的副本的切換到分支。操作步驟如下:
在本地工作區的package Explorer面板里,右擊要切換分支的文件,在彈出的菜單現在Team->切換,如圖:
彈出的切換界面如下:
在“至URL”選擇框里,選擇剛創建的分支。其他的選項默認。點擊“OK”,完成切換操作。此時,本地的peoject目錄已經切換到分支,而不再是主干了,當你修改提交時也是修改分支的文件。
合並分支到主干(合並主干到分支與此相同)
當你本地修改完文件並提交到分支后,下一步就是要同步到主干去。在同步到主干之前,確保本地的文件都有提交了。先把本地副本按第二部的操作切換到主干上去。
在分支下添加一個jsp頁面branchAdd.jsp,提交
切換到主干后,
就可以進行合並了。在本地右擊合並的文件,選擇Team->合並,如圖:
彈出如下的合並界面:
next
next
選中branchAdd.jsp,右鍵 -- team--提交
提交整個項目
至此,整個svn的分支與合並的操作已完成。
沖突解決
主干與分支,分別對branchAdd.jsp做了不同修改,再合並的時候,就會有沖突。需要標記為解決。
主干修改branchAdd.jsp
切換到分支shop2下,修改branchAdd.jsp
合並分支
在主干中右鍵項目--team--合並
選擇合並類型,我們選第2項,
上圖會顯示更新、修改 、沖突等信息
選中沖突文件,右鍵--team--標記為解決
然后對主干文件(工作空間文件)進行修改得到我們想要的效果
選中修改后的文件branchAdd.jsp,右鍵--team--標記為解決--比較選項不勾選--完成--提交branchAdd.jsp.
至此,沖突解決完成。
文件內容對比
如果希望知道分支文件對主干文件修改的具體內容,可做如下操作:
- 在相應的文件上點擊右鍵àcompare Withà分支/標記:(文件替換則用Replace with)
2. 然后選擇分支中的文件:
3. 點擊OK后,即可出現兩個文件的對比,並顯示不同地方:
注意事項
1.在建立分支的時候最好添加注釋。
2.進行合並前最好保證兩個版本都是干凈的【即沒有未提交或者沖突的文件存在】 。
3. 合並之前,要先update,然后整個項目commit,保證兩個版本都是最新的,否則合並之前會提示更新或提交整個項目
4.合並時的目標路徑:需要把誰的改動合並到其他版本就填誰的URL。