branch
SVN最有用的功能之一是可以創(chuàng)建branch,以保護源碼不被破壞性的修改。新branch用來開發(fā)新功能,避免將含有bugs和errors的代碼直接提交到/trunk上,待新功能穩(wěn)定后,再將branch上的源碼合并到/trunk上。
創(chuàng)建新的branch很簡單。只需要使用svn copy命令將項目復(fù)制一份到/branches目錄中,新分支需要一個唯一的命名以將其與/branches中的其他分支區(qū)別開。
svn copy <https://subversion.assembla.com/svn/path/to/trunk> \
<https://subversion.assembla.com/svn/path/to/branch_name> \
-m "commit message"
-m "commit message" 為創(chuàng)建新分支時的注釋。
在TortoiseSVN中創(chuàng)建分支
如果你使用的是TortoiseSVN圖形化管理工具,創(chuàng)建分支時可以選擇工作副本中要復(fù)制到/branches或/tag的文件夾,然后右鍵單擊并選擇命令TortoiseSVN→branch/tag....
新分支的默認目標(biāo)URL是工作副本所在的源URL, 你需要將該URL編輯為branch或tag的新路徑,而不是使用這樣的URL:
https://subversion.assembla.com/svn/path/to/trunk
新branch或tag的URL如下:
https://subversion.assembla.com/svn/path/to/branch_name
tag
此外,你可以標(biāo)記某些revisions,并且以后重新構(gòu)建。
通常,tag用于創(chuàng)建項目的一個特定階段的快照(如上線版本的tag),tag一般不會用來開發(fā)或者在tag的revision上做修改。
如果你想要在某個tag版本上做修改,應(yīng)該從該tag拉取新的branch,在新branch上完成工作,并在工作完成后,在該branch上打上新的tag。
創(chuàng)建tag的方法和創(chuàng)建branch相似,不同之處僅僅在于tag的路徑位于/tags中,而不是之前的/branches。
Subversion中的branches和tags沒什么區(qū)別,區(qū)別僅僅在于用戶如何使用這兩個路徑。一般來說,branches用來修改并最終合并到/trunk上,而tags用來創(chuàng)建項目特定時間點的快照,且永遠不會被直接修改。