打開trunks目錄,在trunks目錄下新建兩個文本文件A.java,B.java:
打開A.java輸入以下內容:
B.java文件可以隨機輸入些,本例中主要用于觀察后續(xù)是否變化。
兩個文件編輯完成后使用SVN Commit將更改提交到SVN:
下面開始創(chuàng)建分支:
1、在trunks上點擊右鍵,在TortoiseSVN菜單中選擇Branch/Tag;
2、在To path輸入框中輸入新建分支的路徑,一般是:/branches/分支名,也就是相當于分支保存的路徑名;
3、在下面選擇HEAD revision in the repository,為當前SVN中trunks目錄下最新的代碼建立分支,如果需要為制定的revision建立分支,可以進行選擇;
4、點擊OK分支建立完成。
打開branches目錄,發(fā)現(xiàn)目錄依然為空,沒有剛才建立的分支,這是因為分支建立的操作是在服務器端完成的,當需要編輯分支時,在branches目錄點擊Update,剛才建立的分支就會下載下來。
建立分支的過程會非常的快,不會因為主干中的文件多而降低速度,原因后續(xù)說明。
使用TortoiseSVN合并分支
第二篇中舉過例子,有可能存在主干、分支并行開發(fā)的情況,下面我們模擬一下。
將剛才新建的分支Update下來,打開分支中的A.java,對其進行編輯如下:
在打開trunks主干中的A.java,對其進行編輯如下:
對以上兩個文件的改動基本上模擬了分支、主干并行的情況,兩個目錄下的同一個文件被分別修改。
將以上兩個文件的改動Commit,下面進行合并操作。
下面開始合并分支到主干:
1、在trunks上點擊右鍵,在TortoiseSVN菜單中選擇Merge;
2、在彈出的窗口中選擇第二項,可以理解為合并兩個樹;
3、在From和To中都選擇要合并的分支目錄;
4、在From的Revision選擇創(chuàng)建分支時的那個Revision,具體就是點擊Show log,選擇最下面那一條;
5、在To的Revision選擇HEAD Revision,也就是最新操作;
6、點擊Next,下一個頁面使用默認項,點擊Merge;
7、合并完成。
這時候會發(fā)現(xiàn)trunks目錄下的文件已被修改,這時候的合并操作是在本地完成的,并沒有提交到SVN,這與分支建立時有區(qū)別,請注意。
也就是說如果你在本次合并中發(fā)現(xiàn)問題,只需要對trunks目錄Revert,放棄本次合并即可。
可以看一下trunks目錄合并后的A.java文件,大家與前面對照下,已達到我們想要的合并效果:
創(chuàng)建分支時發(fā)生了什么
SVN服務器在創(chuàng)建分支時的拷貝是非常有效率的,瞬間就可以完成,并且只需要很少的空間來存儲,所以不需要擔心分支建立過多導致項目倉庫膨脹的問題。
可以理解為SVN在服務器中存儲的是文件的引用,而非物理上的拷貝。
不要多次合并同一個分支到主干
合并分支有一個原則,就是不要對一個分支多次合并到主干,雖然你有可能在合并后又對分支進行了修改,之所以這樣說是有原因的。
上面提到在合并分支時,在From的Revision選項中需要選擇合并的其實版本,如果是第一次合并只需要選擇最早的那個版本即可,但如果合并過一次,你真的能記得你上次合并時最后的Revision是多少嗎?
良好的操作是合并后新建分支。
合并主干到分支
其實合并是個可逆的過程,合并主干到分支與合并分支到主干正好是相反的操作,大家如果會了一種另一種應該非常簡單。
這里我就不演示了,如果真的需要的話可以在博客中評論,大家確實需要的話我會寫出來。
記錄,為更好的自己!