摘 要:版本控制是軟件配置管理中的重要內(nèi)容,版本控制的質(zhì)量關(guān)乎軟件配置管理的整體水平?;诖?,本文將簡單介紹版本控制和軟件管理中常見的兩個版本控制,最后探究版本控制系統(tǒng)在軟件配置管理中的應(yīng)用。
關(guān)鍵詞:軟件配置;配置管理;版本控制
引言:軟件危機之后,軟件開發(fā)人員越來越重視對軟件配置管理中的版本控制。此后,版本控制被人們當(dāng)作一門專門學(xué)科,并花費了大量的時間對該學(xué)科進行研究。如今,我國軟件配置管理中的版本控制理論已經(jīng)相對完整。
1 版本控制概述
軟件管理中的版本控制屬于軟件工程領(lǐng)域的范疇,版本控制質(zhì)量關(guān)乎我國軟件工程的未來發(fā)展方向,因此國家以及社會非常重視對軟件配置管理中的版本控制質(zhì)量的把控。版本控制的主要目的是用來跟蹤和控制軟件中發(fā)生的變更,版本控制理論研究難度較大,它屬于配置管理的一個分支。軟件配置管理中的版本控制英文名稱為Version Control,別名為Revision Control或者Source Control。版本控制的內(nèi)容包含對程序、文檔、大型網(wǎng)站以及其他信息集合變化等的管理。在軟件工程領(lǐng)域中,通過版本控制能夠?qū)崿F(xiàn)歷史追蹤和控制源代碼的變化。軟件工程開發(fā)人員使用版本控制能夠?qū)崿F(xiàn)對軟件源代碼的控制,同時還能使用版本控制維護相關(guān)配置文件和文檔??偠灾?,使用版本控制,能夠?qū)崿F(xiàn)對任何類型文檔的控制。版本控制的重要性明顯,主要體現(xiàn)在三個方面。第一,進行版本控制能夠通過檢索不同的版本的軟件,找出出現(xiàn)問題的軟件版本,由此可進行漏洞修補,降低對人力以及資金的浪費。第二,進行版本控制后,能夠減輕管理人員的工作壓力,降低軟件系統(tǒng)出現(xiàn)問題和錯誤的概率。第三,進行版本控制能夠為軟件開發(fā)團隊提供一個可進行跟蹤、記錄文檔以及修改代碼的系統(tǒng),由此可實現(xiàn)團隊各人員之間的協(xié)同合作,有效提高工作效率和質(zhì)量[1]。
2 軟件配置管理中常見的版本控制
2.1 分布式軟件配置管理版本控制
分布式版本控制英文名為Distributed Version Control,使用該類型的版本控制能夠有效解決集中式版本控制過度依賴服務(wù)器帶來的系列問題。使用這一類版本控制的任一客戶端都能夠提取出最新版的文件快照,同時還能將中央代碼庫完整的復(fù)制下來。將這一類型的版本控制應(yīng)用進來后,當(dāng)中央服務(wù)器癱瘓后,使用該版本控制依舊能夠從任一客戶端中近乎無損的恢復(fù)所有數(shù)據(jù)。因此,將分布式版本控制應(yīng)用進來后,能夠很好的避免數(shù)據(jù)損失,如今,大部分系統(tǒng)使用的版本控制均為分布式版本控制,由此可知分布式版本控制的重要作用。
2.2 集中式軟件配置管理版本控制
相對于分布式版本控制,集中式版本控制的優(yōu)勢并不明顯,使用集中式版本控制,不能很好的對丟失的數(shù)據(jù)進行恢復(fù),但是該類型的版本控制也有自己的優(yōu)勢。首先,將集中式版本控制應(yīng)用進來后,不同系統(tǒng)開發(fā)者之間能夠?qū)崿F(xiàn)協(xié)同工作。主要原因是集中式版本控制使用了一個單一且集中的服務(wù)器,能夠?qū)崿F(xiàn)對所有項目文件修訂版本的儲存與管理。其次,在具體的實踐中,不同系統(tǒng)的開發(fā)者使用集中式版本控制的check out功能即可完成對系統(tǒng)最新文件的提取,修改后將文件遞交給系統(tǒng)服務(wù)器。集中式版本控制允許多個系統(tǒng)開發(fā)人員在相同的時間對同一個文件進行修改,且集中式版本控制系統(tǒng)中攜帶的merge功能還能在最短的時間內(nèi)將不會發(fā)生沖突的更新融合。但是,集中式版本控制比較依賴服務(wù)器,當(dāng)服務(wù)器發(fā)生故障后,集中式版本控制無法繼續(xù)工作,同時還不能恢復(fù)因服務(wù)器故障造成的數(shù)據(jù)丟失。因此使用該類型的版本控制,需要提前將重要數(shù)據(jù)備份到中心數(shù)據(jù)庫中,這樣才能有效避免服務(wù)器故障造成的數(shù)據(jù)丟失。
3 版本控制系統(tǒng)在軟件配置管理中的應(yīng)用
3.1 Git控制系統(tǒng)
Git控制系統(tǒng)為一種分布式版本控制系統(tǒng),該系統(tǒng)具備分布式版本控制的所有優(yōu)勢,使用該系統(tǒng)能夠在系統(tǒng)服務(wù)器故障且中心數(shù)據(jù)庫沒有備份數(shù)據(jù)的情況下,從任意一個客戶端將丟失的數(shù)據(jù)進行恢復(fù)。由于分布式版本控制優(yōu)勢明顯,因此Git分布式版本控制系統(tǒng)受到了廣大系統(tǒng)開發(fā)者的喜歡。與此同時,Git分布式版本控制系統(tǒng)對外開放,免費給廣大系統(tǒng)開發(fā)者使用,其該控制系統(tǒng)開源免費,因此市場上幾乎所有的系統(tǒng)使用的控制系均為Git分布式版本控制系統(tǒng)。系統(tǒng)開發(fā)者使用Git控制系統(tǒng)能夠?qū)ψ兏奈募M行跟蹤,使得無論發(fā)生何種故障,使用Git控制系統(tǒng)都能夠?qū)G失的數(shù)據(jù)進行恢復(fù)。Git控制系統(tǒng)的設(shè)計簡單,系統(tǒng)處理數(shù)據(jù)的速度迅速,Git控制系統(tǒng)為完全分布式,使用該控制系統(tǒng)能夠支持線性開發(fā),同時還能處理Linux等內(nèi)核的大型項目。
3.2 工作區(qū)域和文件狀態(tài)
Git完全分布式版本控制系統(tǒng)的工作區(qū)域主要有三個,分別是工作目錄、Git倉庫以及暫存區(qū)域。第一,工作目錄是系統(tǒng)開發(fā)人員從某一個項目某一個版本中提取出來的內(nèi)容,同時也是從Git倉庫中提取出來的一個文件,該工作目錄被放置于系統(tǒng)本地磁盤中,系統(tǒng)開發(fā)人員可對該工作目錄進行使用和修改。第二,Git倉庫。Git倉庫的作用是實現(xiàn)對項目數(shù)據(jù)以及數(shù)據(jù)庫的保存管理,系統(tǒng)開發(fā)人員使用Git倉庫中的git clone命令,能夠?qū)ζ渌嬎銠C的Git倉庫進行克隆和使用,使用該命令能夠拷貝其他計算機Git倉庫中的所有數(shù)據(jù)。第三,暫存區(qū)域?qū)嵸|(zhì)上為一個文件,該文件主要作用是對下一次即將提交的文件列表信息進行保存,下一次提交的文件列表信息一般來源于Git倉庫的git directory中[2]。
在Git完全分布版本控制系統(tǒng)中,工作目錄的文件狀態(tài)幾乎只有兩種,分別是未跟蹤文件和跟蹤文件。未跟蹤文件不能進行修改和管理,因此意義不大。跟蹤文件為git知道且進行跟蹤的文件,跟蹤文件存在三個狀態(tài),分別是未修改、修改以及暫存。跟蹤文件屬于版本控制的范圍,系統(tǒng)開發(fā)人員對跟蹤文件做的任何修改都會被git記錄下來。例如,當(dāng)系統(tǒng)開發(fā)人員修改了跟蹤文件后,git就會將該文件記錄為修改文件。當(dāng)系統(tǒng)開發(fā)人員對跟蹤文件進行修改后,可以使用git add命令將跟蹤文件的修改狀態(tài)記為已修改狀態(tài),之后該跟蹤文件就會被暫存于暫存區(qū)域中,系統(tǒng)開發(fā)人員使用git commit命令即可將此次更改操作提交到Git倉庫中,最后使用git push即可將該修改操作記錄到遠程服務(wù)器中。
3.3 Git分支與融合
Git的分支是Git分布式版本控制系統(tǒng)的重要功能,系統(tǒng)開發(fā)者使用Git的分支功能能夠?qū)Χ鄠€版本的控制系統(tǒng)進行開發(fā),同時還可隨時切換到當(dāng)前控制系統(tǒng),之后可在特定時間將開發(fā)的分支系統(tǒng)融合到主分支系統(tǒng)中。通過這種方式,能夠在不改變原版本控制系統(tǒng)的基礎(chǔ)上,增加新的分支功能,系統(tǒng)開發(fā)團隊使用融合后的系統(tǒng)能夠?qū)崿F(xiàn)對大型、復(fù)雜項目的開發(fā)和管理。Git分支的創(chuàng)建步驟很簡單,系統(tǒng)開發(fā)人員使用git branch命令,并在當(dāng)前提交對象上創(chuàng)建一個新的系統(tǒng)分支,即可完成Git的分支功能創(chuàng)建。實際上,Git屬于一個可變指針,該指針指向被提交對象,被提交對象被系統(tǒng)默認為master,當(dāng)系統(tǒng)開發(fā)者提交master后,master會自動前移并指向開發(fā)者提交的最后一個對象。
結(jié)束語:總而言之,版本控制在軟件配置管理中的重要性明顯,為確保不會再發(fā)生軟件危機,國家相關(guān)部門以及社會相關(guān)企業(yè)要加大對版本控制的研究力度,只有這樣才能從根本上解決軟件配置管理中存在的問題,提升軟件配置管理質(zhì)量。
參考文獻:
[1]閔嘯,張名明,凌旺.關(guān)于軟件配置管理中版本控制[J].電子技術(shù)與軟件工程,2020(17):67-68.
[2]秦佳.軟件配置管理中版本控制的研究[J].軟件,2019,40(03):137-139.
作者簡介:
雷靜(1988.07—),女,漢族,湖南郴州人,碩士,助理工程師,研究方向:通信工程。
(中車株洲電力機車研究所有限公司,湖南 株洲 412001)