SVN主干与分支的合并
下面我將step by step地演示如何一次完整的branching和merging,包括創建分支、分支開發、分支和主線同步,分支合并到主線的全過程,甚至包括如何在本地創建一個測試用的repository。
注意:主干分支的合并,是與本地庫做比較,即,合并的結果會直接與目前「工作目錄」(Working Copy) 做比對,并修改目前工作目錄中的所有文件。因此建議在做合并之前可以將所有尚未 commit 的檔案先 commit 到版本庫,避免不必要的沖突事件發生。由于合并的結果在本地庫,所以本地庫要做一次提交,才能形成最終的版本庫。
1、本地Repository的創建
repository的創建很簡單,假設我要在D:\TortoiseSVN\TestRepository目錄中創建repository,只需右鍵TestRepository目錄,依次選擇"TortoiseSVN" -> "Create repository here"便完成了repository的創建。
2、Check out
假設要check out到D:\TortoiseSVN\TestSVN,同樣很簡單,在D:\TortoiseSVN目錄下創建TestSVN目錄,然后在該目錄上右鍵,選擇"SVN Check out...",在彈出的窗口中的"URL of repository"中填入"file:///D:/TortoiseSVN/TestRepository",其他默認即可,最后點擊ok。
3、trunk創建新項目MyProject
相當簡單就不贅述了,只列出本次操作所作出的修改:
4、創建branch
在/trunk/MyProject目錄上右鍵,依次選擇"TortoiseSVN" -> "Branch/tag...",在彈出窗口的"To URL"中填入分支的地址,在這里目標revision選擇HEAD revision,如下圖所示,添加log后點擊ok分支便建立了。這個操作速度非常快,新建的branch在repository中其實只是一個指向trunk某個revision的軟連接而已,并沒有真的復制文件。
5、Check out分支
右鍵TestSVN目錄選擇"TortoiseSVN Update"即可將剛剛建立的分支下載回本地。進入/branches/MyProject目錄下你會發現其文件結構和/trunk/MyProject一模一樣。
6、branch提交一個新文件
7、trunk緊接著提交一個修改
8、branch再次提交一個修改
9、將trunk中的修改同步到branch
6-8演示的是branch和trunk在獨立、并行地開發。為了防止在“錯誤”的道路上越走越遠,現在branch意識到是時候和trunk來一次同步了(將trunk合并到branch)。
首先,在本地trunk中先update一下,有沖突的解決沖突,保證trunk和repository已經完全同步,然后在/branches/MyProject上右鍵,依次選擇"TortoiseSVN" -> “Merge...”,在彈出的窗口中選擇第一項"Merge a range of revision",這個類型的Merge已經介紹得很清楚,適用于將某個分支或主線上提交的多個revision間的變化合并到另外一個分支上。
點擊next后,出現如下窗口:
由于是要從trunk合并到branch,理所當然這里的"URL to merge from"應該填trunk的路徑,"Revision range to merge"很好理解,就是你要將trunk的哪些revision所對應的變化合并到branch中,可以是某一連串的revision,比如4-7,15-HEAD,也可以是某個單獨的revision號。由于在r4中,trunk修改了Person.Java中的talk()方法,所以這里的revision只需填4即可。點擊next后出現下圖:
在這里只需保留默認設置即可。在點擊Merge按鈕前你可以先Test merge一把,看成功與否,以及merge的詳細信息。點擊Merge按鈕后trunk所做的修改將同步到branch中。
10、提交合并后的branch
至此,branch已經完全和trunk同步,branch和trunk的代碼相處很融洽,沒有任何沖突,如果branch已經開發結束,那是時候將branch合并回trunk了,當然,如果branch還要繼續開發,那你將不斷地重復6-10這幾個步驟。
11、將branch合并回trunk
在/trunk/MyProject上右鍵(注意是在主線的目錄上右鍵),依次選擇"TortoiseSVN" -> "Merge...",在彈出的窗口中,Merge type選擇第二項"Reintegrate a branch",這種類型的合并適合在分支開發結束后將所有的改動合并回主線。
點擊next后出現如下窗口:
在這里,"From URL"選擇/branches/MyProject,無需選擇revision號,Reintegrate會將branch上所有修改合并到trunk。后面的步驟和上文第9步中的一樣,不再啰嗦了。如無意外,branch將成功合并到trunk,你需要做的只是將合并后的trunk趕緊commit!
12、提交合并后的trunk
合并后的項目上右鍵,Temp -> Commit。
13、刪除branch
如果你認為你新加的功能已經開發完成了,你可以刪除你的分支!
?
14、查看log信息
到這里,我已經給你演示完了整個過程,不過最后我們還是看看所有的log信息吧,通過log能發現我們干的所有事情:
r1-r7正是我上文在干的事情,從Message中你能發現我對trunk和branch都干了什么,另外,在Log Messages窗口的左下角勾選了"Include merged revisions"你還能看到額外的Merge information:
圖中灰色的是和merge相關的log,共發生了兩次merge,第一次是在r6,在r6中,branch合并了trunk在r4時提交的變化;第二次是在r7,在r7中,trunk合并了branch從r2到r6的所有變化。
分類:?SVN
總結
以上是生活随笔為你收集整理的SVN主干与分支的合并的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 转型_MySQL的未来在哪?
- 下一篇: gitlab ci 配置 java_Gi