【23】標記
軟件開發的過程有時是漫長的,但我們的主干、分支達到一定程度后,我們也許會提交了很多版本,更新很多資源。如果此時我們不適當地對軟件做一個“階段的標識”,那么在將來的時間我們將很難對某個階段所做的修改有一個明確的記憶。
也許你會說:我們不是有svn log嗎?我們可以查看log啊~。問題是當版本更新到一定程度后,svn log的輸出將變得非常多而復雜,要在幾百個版本中分辨出來那個版本是我們需要的是一件很困難的事。我們期望能夠有一種類似于“里程碑”式的版本來記錄我們在某段時間內的所有更新。
標記Tag就是基于這種概念而出現的。和分支Branch一樣,在SVN看來他們都只是普通的目錄而已,Branch是動態變化的,而Tag則像快照一樣一旦留下就不會改變了。
什么時候是Branch?什么時候是Tag?原則如下:
如果你還需要繼續向目錄提交變更,它就是個分支。如果一旦拷貝后不再提交任何改變哪就是標記。實際上SVN不會強制你不能對名為***tag的目錄進行commit操作,這只是通常上約定。即便因為誤操作我們也可以輕易的使用update操作回滾到當初創建Tag時的快照版本
創建標記的方法和分支一摸一樣,都是使用svn copy 命令,你也可以加上-r 版本號來指定創建某個版本的快照
【24】主干、分支與標記的配合
在企業級的應用開發中,通常會遇到新舊版本同時開發的問題,為了不影響新版本功能的開發,我們通常采用如下的分支策略:
Step 1: 所有的程序員把日常開發的代碼都提交到主干trunk上,包括每天的新功能,bug修正
Step 2: 當開發進行到一個段落后,管理人員認為可以釋放版本了。將其拷貝到假設名為branch/1.0目錄下
Step 3: 測試或QA組的成員對這個“穩定”的版本進行測試,與此同時開發人員繼續在主干上進行2.0版本的開發
Step 4: 當測試或QA組完成branch/1.0目錄下軟件的測試后,決定可以發布了。就將其拷貝到假設名為tag/1.0的目錄下,此時tag/1.0目錄下的內容就是我們要正式發布的產品了。而且不會對該目錄下的任何資東西進行修改了。如果有需要則滾落下一版本的開發、測試。
Step 5: 發布成功后,測試或QA組的成員又從trunk目錄下檢出最新的2.0的代碼,拷貝到假設名為branch/1.1目錄下,重復上面步驟
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
posted on 2009-12-11 17:39
Paul Lin 閱讀(365)
評論(0) 編輯 收藏 所屬分類:
項目管理