-
版本控制
鎖定
- 中文名
- 版本控制
- 外文名
- Revision control
- 功 能
- 追蹤文件的變更等
- 應 用
- 軟件開發
- 常用工具
- CVS、SVN等
- 學 科
- 軟件工程
版本控制簡述
版本控制最主要的功能就是追蹤文件的變更。它將什麼時候、什麼人更改了文件的什麼內容等信息忠實地了記錄下來。每一次文件的改變,文件的版本號都將增加。除了記錄版本變更外,版本控制的另一個重要功能是並行開發。軟件開發往往是多人協同作業,版本控制可以有效地解決版本的同步以及不同開發者之間的開發通信問題,提高協同開發的效率。並行開發中最常見的不同版本軟件的錯誤(Bug)修正問題也可以通過版本控制中分支與合併的方法有效地解決。
具體來説,在每一項開發任務中,都需要首先設定開發基線,確定各個配置項的開發初始版本,在開發過程中,開發人員基於開發基線的版本,開發出所需的目標版本。當發生需求變更時,通過對變更的評估,確定變更的影響範圍,對被影響的配置項的版本進行修改,根據變更的性質使配置項的版本樹繼續延伸或產生新的分支,形成新的目標版本,而對於不受變更影響的配置項則不應發產生變動。同時,應能夠將變更所產生的對版本的影響進行記錄和跟蹤。必要時還可以回退到以前的版本。例如當開發需求或需求變更被取消時,就需要有能力將版本回退到開發基線版本。在曾經出現過的季度升級包拆包和重新組包的過程中,其實就是將部分配置項的版本回退到開發基線,將對應不同需求的不同分支重新組合歸併,形成新的升級包版本。
版本控制是軟件配置管理的核心功能。所有置於配置庫中的元素都應自動予以版本的標識,並保證版本命名的唯一性。版本在生成過程中,自動依照設定的使用模型自動分支、演進。除了系統自動記錄的版本信息以外,為了配合軟件開發流程的各個階段。還需要定義、收集一些元數據來記錄版本的輔助信息和規範開發流程,併為今後對軟件過程的度量做好準備。當然如果選用的工具支持,這些輔助數據將能直接統計出過程數據,從而方便軟件過程改進活動的進行。對於配置庫中的各個基線控制項,應該根據其基線的位置和狀態來設置相應的訪問權限。一般來説,對於基線版本之前的各個版本都應處於被鎖定的狀態,如需要對它們進行變更,則應按照變更控制的流程來進行操作。
[1]
版本控制內容
版本控制包括:檢入檢出控制、分支和合並、歷史記錄。
1.檢入檢出控制
軟件開發人員對源文件的修改不能在軟件配置管理庫中進行,對源文件的修改依賴於基本的文件系統並在各自的工作空間下進行。為了方便軟件開發,需要不同的軟件開發人員組織各自的工作空間。一般説來,不同的工作空間由不同的目錄表示,而對工作空間的訪問,由文件系統提供的文件訪問權限加以控制。
訪問控制需要管理各個人員存取或修改一個特定軟件配置對象的權限。開發人員能夠從庫中取出對應項目的配置項進行修改,並檢入到軟件配置庫中,對版本進行“升級”;配置管理人員可以確定多餘配置項並刪除。
同步控制的實質是版本的檢入檢出控制。檢入就是把軟件配置項從用户的工作環境存入到軟件配置庫的過程,檢出就是把軟件配置項從軟件配置庫中取出的過程。檢人是檢出的逆過程。同步控制可用來確保由不同的人併發執行的修改不會產生混亂。
2.分支和合並
版本分支(以一個已有分支的特定版本為起點,但是獨立發展的版本序列)的人工方法就是從主版本——稱為主幹上拷貝一份,並做上標記。在實行了版本控制後,版本的分支也是一份拷貝,這時的拷貝過程和標記動作由版本控制系統完成。版本合併(來自不同分支的兩個版本合併為其中一個分支的新版本)有兩種途徑,一是將版本A的內容附加到版本B中;另一種是合併版本A和版本B的內容,形成新的版本C。
3.歷史記錄
版本的歷史記錄有助於對軟件配置項進行審核,有助於追蹤問題的來源。歷史記錄包括版本號、版本修改時間、版本修改者、版本修改描述等最基本的內容,還可以有其他一些輔助性內容,比如版本的文件大小和讀寫屬性。
[2]
版本控制流程
版本控制基本流程如下:
(1)創建配置項。
項目成員依據《配置管理計劃》,在配置庫中創建屬於其任務範圍內的配置項。此時配置項的狀態為“草稿”,其版本號格式為0.YZ。
(2)修改狀態為“草稿”的配置項目。
項目成員使用配置管理軟件的Check in/check out功能,可以自由修改處於“草稿”狀態的配置項,版本號格式為0.YZ。
(3)技術評審或領導審批。
如果配置項是技術文檔,則需要接受技術評審。如果配置項是“計劃”這類文件,則需要項目經理(或上級領導)的審批。若配置項通過了技術評審或領導審批,則轉向下一步·否則轉回上一步。
(4)正式發佈。
配置項通過技術評審或領導審批之後。則配置項的狀態從“草稿”變為“正式發佈”,版本號格式為X.Y。
(5)變更。
版本控制常用工具
1.開源版本控制工具
開放源碼的版本控制工具有很多,如Concurrent Versions System( CVS)、Subversion( SVN)、Vesta、Revision Control System( RCS)、Source Code Control System( SCCS)等。比較常用的兩個工具是CVS和SVN。CVS是Dick Grune在1984年~1985年基於RCS開發的一個客户一服務器架構的版本控制軟件,長久以來一直是免費版本控制軟件的主要選擇。SVN的一個重要開發目標是修正CVS中廣為人知的缺點,提供一個新的版本控制軟件。對於中小規模團隊,SVN是一個比較好的開源版本控制工具,SVN常用客户端工具為TortoiseSVN。
2.成熟的商業工具