SVN分支
Branch 選項會給開發者建立出另外一條線路。當有人希望開發程序分開成兩條不同的線路時,這個選項會非常有用。
比如項目 demo 下有兩個小組,svn 下有一個 trunk 版。
由于客戶需求突然變化,導緻項目需要做較大改動,此時項目組決定由小組 1 繼續完成原來正進行到一半的工作(某個子產品),小組 2 進行新需求的開發。
那麼此時,我們就可以為小組2建立一個分支,分支其實就是 trunk 版(主幹線)的一個copy版,不過分支也是具有版本控制功能的,而且是和主幹線互相獨立的,當然,到最後我們可以通過(合并)功能,将分支合并到 trunk 上來,進而最後合并為一個項目。
我們在本地副本中建立一個 my_branch 分支。
[email protected]:~/svn/runoob01# ls
branches tags trunk
[email protected]:~/svn/runoob01# svn copy trunk/ branches/my_branch
A branches/my_branch
[email protected]:~/svn/runoob01#
檢視狀态:
[email protected]:~/svn/runoob01# svn status
A + branches/my_branch
A + branches/my_branch/HelloWorld.html
A + branches/my_branch/readme
送出新增的分支到版本庫。
[email protected]:~/svn/runoob01# svn commit -m "add my_branch"
Adding branches/my_branch
Replacing branches/my_branch/HelloWorld.html
Adding branches/my_branch/readme
Committed revision 9.
接着我們就到 my_branch 分支進行開發,切換到分支路徑并建立 index.html 檔案。
[email protected]:~/svn/runoob01# cd branches/my_branch/
[email protected]:~/svn/runoob01/branches/my_branch# ls
HelloWorld.html index.html readme
将 index.html 加入版本控制,并送出到版本庫中。
[email protected]:~/svn/runoob01/branches/my_branch# svn status
? index.html
[email protected]:~/svn/runoob01/branches/my_branch# svn add index.html
A index.html
[email protected]:~/svn/runoob01/branches/my_branch# svn commit -m "add index.html"
Adding index.html
Transmitting file data .
Committed revision 10.
切換到 trunk,執行 svn update,然後将 my_branch 分支合并到 trunk 中。
如果本地merge有問題,可以先把branch送出到線上再本地合并線上的即可
[email protected]:~/svn/runoob01/trunk# svn merge ../branches/my_branch/
--- Merging r10 into '.':
A index.html
--- Recording mergeinfo for merge of r10 into '.':
G .
此時檢視目錄,可以看到 trunk 中已經多了 my_branch 分支建立的 index.html 檔案。
[email protected]:~/svn/runoob01/trunk# ll
total 16
drwxr-xr-x 2 root root 4096 Nov 7 03:52 ./
drwxr-xr-x 6 root root 4096 Jul 21 19:19 ../
-rw-r--r-- 1 root root 36 Nov 7 02:23 HelloWorld.html
-rw-r--r-- 1 root root 0 Nov 7 03:52 index.html
-rw-r--r-- 1 root root 22 Nov 7 03:06 readme
将合并好的 trunk 送出到版本庫中。
[email protected]:~/svn/runoob01/trunk# svn commit -m "add index.html"
Adding index.html
Transmitting file data .
Committed revision 11.