come from: http://www.360doc.com/content/12/0816/19/1317564_230547958.shtmlhtml
建立Branch分支或者Tag標籤
當按照推薦的結構建立的版本庫,建立分支以及Tag是很容易的。
在個人SVN服務器上建立了一個版本庫Test,結構以下:
在個人本地簽出checkout,添加一個文件test.txt,而後提交。服務器
加入這個時候咱們須要發佈一個版本的文件,同時有可能其餘人會修改,測試
但咱們不能影響當前的文件,只能在其修改好後再合併,這種狀況下咱們建立一個分支。spa
這個時候咱們能夠發現本地的trunk文件夾的SVN屬性的URL已經被Switch到建立的版本的地址了:htm
執行SVN更新命令,能夠查看到,本地branches文件夾下新增文件夾v1.0以及文件夾裏面的文件v1.0。blog
修改分支和使用合併Merge功能開發
修改branches/v1.0下面的文件test.txt,添加一行modified in branch v1.0.而後簽入到SVN服務器中:it
因爲剛纔咱們已經將trunk的SVN版本庫URL轉換到對應的版本,因此這個時候更新trunk文件夾能夠看到更新的test.txt文件。
爲了做測試,咱們將trunk文件夾switch至對應的trunk地址:io
當switch成功後,咱們能夠看到trunk下test.txt文件的內容並無任何的更改,這正體現了剛纔咱們所說的在分支中的修改不會影響到主幹。
下面修改trunk文件夾下的test.txt,添加一行modified in trunk.而後簽入到SVN服務器中:test
最好咱們將實現一個重要的功能,就是Merge合併功能,將分支合併到主幹中,這也是在團隊軟件開發中咱們常常要使用的功能。
在TortoiseSVN的Revision Graph中能夠查看trunk的版本變化圖,以下:
從上圖能夠得出,在版本10的時候咱們建立了分支版本/branches/v1.0,且SVN版本爲11,在版本11基礎上咱們對分支進行了修改因而有了 版本12,咱們再對trunk下的文件進行修改因而有了版本13,整個SVN目前的版本就爲13,這與咱們剛纔作的修改是相吻合的。
下面將分支v1.0合併到主幹中。
按照咱們目前的狀況,選擇第二種:
選擇v1.0:
而後,以下:
在咱們的此次合併中確定會產生問題,由於咱們對test.txt文件進行了兩次修改,於是會產生衝突Conflict,但這在實踐中是不該出現這種狀況 的,由於創建的分支目的就是修改那些在主幹中不會被修改的文件,以便修改完成後合併到主幹中。不過不要緊,咱們這裏僅是演示而已,因此只需處理下衝突,手 動的將其合併(這在實際中不該該這樣不然失去了分支的用途了):
這個時候能夠看到咱們的test.txt文件已經按照我剛纔手動處理衝突實現了:
而後將trunk簽入到版本庫中:
若是咱們再去查看branches\v1.0下的test.txt文件它的內容依然是最初在trunk中編輯的內容。 另外再次強調一點:在實際操做中咱們不會對一個分支文件在主幹中再次進行修改,不然會形成一些衝突,這樣就失去了分支的便利性了;Tag的建立與分支是類s似的,只不過Tag每每僅用於標識特定版本,而不會用於bug修復,增長新特性等情形。