使用SVN進行專案版本管理

2022-02-13 11:22:43 字數 2424 閱讀 6739

1.摘要

本文描述了利用svn進行專案版本管理的方法,涉及專案版本號命名規則、svn目錄結構、第三方**庫的管理、版本建立、發布、修訂、合併等行為的方法和原則。

2.版本號命名規則

版本號採用主版本號.次版本號.修訂號組成。版本的重大變化主版本號增1,次版本號和修訂號歸零。版本的相對較小的變化主版本號維持不變,次版本號增1,修訂號歸零。當乙個版本發布後出現了bug需要修訂,此時,主、次版本號不變,修訂號增1。

注意:對於主動性的程式功能性的變化,應該增加主或次版本號,不應該通過修訂號來反映。修訂號只用於對已發布版本的bug修訂,乙個版本的修訂號的大小某種程度上可以反映乙個版本發布後的穩定情況。

3.svn目錄結構

專案結構

第三方庫結構

以專案名稱作為svn倉庫名稱為專案建立獨立的專案倉庫。倉庫主要結構分為branches和tags。branches為工作目錄,tags為發布目錄。專案使用到的第三方庫獨立出來單獨元件專案倉庫,為整個公司的所有專案所共享,倉庫名稱為vendor。

3.1專案結構

branches

分支,存放未發布版本。具體的某個版本存放在其下的乙個以「rb-版本號」規則命名的資料夾。上圖示例為當前存在兩個正在開發的版本rb-2.0和rb3.0。分支是開發人員的工作目錄,是版本實現過程中的中間成果,具有臨時性。版本發布後,相應的分支即可銷毀。

br#版本內部結構

doc:文件存放目錄

src:原始碼存放目錄

bin:可執行檔案、動態庫、指令碼、配置檔案等發布項及pdb、mapfile、obj存放目錄。

vendor

存放第三方庫的變更記錄檔案change.xls。由於第三方庫不常變動且庫大,若與專案**存放在一起,則簽出**量會過大,耗時長。因此專案內部僅存放乙個變更記錄檔案。倘若出現第三庫存在變更,例如,某專案從3.0開始,xerces庫公升級到2.8,則在change.xls檔案中登記即可,change.xls結構如下表所示。

庫名

庫版本

專案版本

變更日期

備註

ace4.5

1.02010-1-1

boost

1.39

1.02010-1-1

xerces

2.61.0

2010-1-1

xerces

2.83.0

2011-12-29

上表第4行表示在專案3.0時,xerces庫從2.6公升級到了2.8。

3.2第三方庫結構

第三方庫單獨成立svn倉庫,位置級別上公升為與各專案平級,為公司內各專案所共享,其結構見上圖。

4.常見操作

4.1新建版本

當確定需要建立乙個版本時,則需要在branches下建立乙個相應的版本分支,用於版本實現過程中的配置項管理。分支的建立可以從頭建立也可以基於tags中的已發布版本建立。例如,要在rel-1.1的基礎上開發2.0,則從tags\rel-1.1建立乙個rb-2.0。

4.2日常工作

專案經理在給開發人員分派任務時必須制定版本號,即任務所屬版本。開發人員根據任務的版本號屬性在相應的工作分支中實現和提交工作成果物。這樣,開發人員只需要知道任務所屬版本號,無需關心版本之間的關係。專案經理需要對版本及其之間的關係有清晰的認識和規劃。

4.3版本發布

當乙個版本進入待發布狀態後,需要為版本建立發布標籤,即從版本分支建立乙個版本標籤。如2.0,則從branches\rb-2.0建立乙個tags\rel-2.0。版本發布人員必須從tags下取發布項進行發布,杜絕發布人員從分支或者其他地方獲取發布項進行發布。

4.4版本修訂

當乙個已發布版本出現bug需要修訂時,需要從相應的已發布版本中建立乙個分支版本。例如2.0發布後出現bug,則從tags\rel-2.0建立乙個branches\rb-2.0.1。注意,修訂號必須增加,版本不能回退也不能原地變化,即不管是新功能還是bug修訂,只要是變更,版本號必增。帶修訂版本進入待發布狀態後,則進入版本發布流程。

4.5版本合併

當多個版本處於並行工作狀態下,例如rb-1.0.1(修復1.0發布後的bug)和rb-1.1(1.0發布後,在此基礎上增加的新功能)兩個版本並行工作,rb-1.0.1先於rb-1.1完成並發布, 那麼rb-1.0.1發布後會建立rel-1.0.1,需要將rel-1.0.1的修改合併到rb-1.1,否則會出現1.0.1修改過的bug在新版本1.1中又重新出現了。

Redmine中使用SVN進行版本管理經驗總結

在前面的隨筆來自rails世界的專案管理工具redmine中,介紹了基於rails的專案管理工具redmine,其中提供了版本管理功能,下面介紹subversion 後面簡稱為svn 的安裝和在redmine中的使用。redmine中使用svn安裝完成後要啟動svn服務。1.新建乙個目錄,在wind...

使用SVN進行Unity3d版本管理總結

使用unity3d也有一段時間了,由於團隊一直使用svn進行版本管理,現總結一下 1 unity3d的二進位制資源必須加鎖進行版本控制,因為它沒辦法merge 2 unity3d自己產生的c 工程相關檔案,包括vs產生或者mono產生的,都不需要歸入版本控制 3 在新加入項時,unity3d會產生乙...

Ubuntu 使用 SVN 管理 專案

公司的專案需要在 linux 環境進行開發,而都是使用 svn 進行管理的。習慣了 svn gui 的我,需要學習 svn 的命令列。安裝 svn sudo apt get apt get install subversion ysvn checkout url svn co url git clo...