我使用的是TortoiseSVN,先安裝好。java
一、本地Repository的建立併發
repository的建立很簡單,假設我要在D:\TortoiseSVN\TestRepository目錄中建立repository,只需右鍵TestRepository目錄,依次選擇"TortoiseSVN" -> "Create repository here"便完成了repository的建立。3d
二、Check outorm
假設要check out到D:\TortoiseSVN\TestSVN,一樣很簡單,在D:\TortoiseSVN目錄下建立TestSVN目錄,而後在該目錄上右鍵,選擇"SVN Check out...",在彈出的窗口中的"URL of repository"中填入"file:///D:/TortoiseSVN/TestRepository",其餘默認便可,最後點擊ok。blog
三、trunk建立新項目MyProject開發
至關簡單就不贅述了,只列出本次操做所做出的修改:同步
四、建立branchit
在/trunk/MyProject目錄上右鍵,依次選擇"TortoiseSVN" -> "Branch/tag...",在彈出窗口的"To URL"中填入分支的地址,在這裏目標revision選擇HEAD revision,以下圖所示,添加log後點擊ok分支便創建了。這個操做速度很是快,新建的branch在repository中其實只是一個指向trunk某個revision的軟鏈接而已,並無真的複製文件。io
五、Check out分支form
右鍵TestSVN目錄選擇"TortoiseSVN Update"便可將剛剛創建的分支下載回本地。進入/branches/MyProject目錄下你會發現其文件結構和/trunk/MyProject如出一轍。
六、branch提交一個新文件
七、trunk緊接着提交一個修改
八、branch再次提交一個修改
九、將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中。
十、提交合並後的branch
至此,branch已經徹底和trunk同步,branch和trunk的代碼相處很融洽,沒有任何衝突,若是branch已經開發結束,那是時候將branch合併回trunk了,固然,若是branch還要繼續開發,那你將不斷地重複6-10這幾個步驟。
十一、將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!
十二、提交合並後的trunk
so easy...
1三、刪除branch
若是你認爲你新加的功能已經開發完成了,你能夠刪除你的分支
到這裏,再看看全部的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的全部變化。
總結: