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