趙之洛 張國偉
摘? 要:國家層面從戰(zhàn)略角度高度重視數(shù)字化轉(zhuǎn)型升級,軟件產(chǎn)業(yè)在其中扮演著十分重要的角色。使用高效、穩(wěn)定的版本控制與項目托管工具能夠持續(xù)不斷地改進(jìn)企業(yè)軟件開發(fā)過程能力,因此大部分軟件科技企業(yè)都很關(guān)注軟件工程項目中代碼質(zhì)量的控制和管理。本文從目前比較主流的幾類版本控制系統(tǒng)入手,介紹了各自的原理、特點,為開發(fā)團(tuán)隊的項目管理提供決策支持。
關(guān)鍵詞:軟件;項目管理;版本控制;代碼托管
近年來,加快構(gòu)建新型數(shù)字基礎(chǔ)設(shè)施體系,大力發(fā)展“新基建”的國家戰(zhàn)略為我國軟件行業(yè)帶來空前發(fā)展的機(jī)遇。新的發(fā)展現(xiàn)狀對軟件的質(zhì)量、性能等方面提出更高的要求。如何提高軟件質(zhì)量和可靠性就顯得尤其重要。傳統(tǒng)的軟件測試模型只考慮對軟件本身進(jìn)行測試,過程質(zhì)量管理則重視程度不夠,這將導(dǎo)致很多軟件質(zhì)量的隱患,并且修復(fù)的成本很高。當(dāng)前,版本控制系統(tǒng)的應(yīng)用能很好地規(guī)范軟件產(chǎn)品版本升級流程,優(yōu)化開發(fā)團(tuán)隊的溝通方式,對提高軟件開發(fā)項目質(zhì)量起到了至關(guān)重要的作用。
1.版本控制的定義
“版本”的概念最初是指書刊等出版物經(jīng)過多次印刷或以其他形式改變成不同樣式和內(nèi)容的成品,這些不同的成品就是不同的版本。隨著時代的發(fā)展,版本也開始應(yīng)用于軟件產(chǎn)品之上,表示同一軟件產(chǎn)品的不同表現(xiàn)形式。
版本控制是對軟件工程項目開發(fā)實施過程中各種程序源代碼、配置文件及說明文檔等文件變更的管理。版本控制系統(tǒng)最基礎(chǔ)的功能就是記錄若干文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng)。
2.版本控制的意義
根據(jù)版本控制的定義,一個版本控制系統(tǒng)的主要工作就是將記錄軟件版本迭代的記錄,包含某人、某時刻更改了項目列表的某些內(nèi)容等一系列關(guān)聯(lián)信息的記錄。它不僅對軟件源代碼作版本控制管理,實際上也能對項目中任何類型的文件進(jìn)行版本控制。每一次文件的改變,都會使得版本號自增。
使用版本控制系統(tǒng)可以將文件回溯到之前的某個時間點。版本控制系統(tǒng)一般都集成有文件比較工具,可以就某一文檔在不同版本時期的內(nèi)容進(jìn)行對比,開發(fā)人員可根據(jù)實際需要,將某些文檔回退到過去某個時間點的狀態(tài)。因此利用版本控制系統(tǒng)可以排查出導(dǎo)致系統(tǒng)嚴(yán)重出錯的源頭,追溯到誰在何時的修改導(dǎo)致某個功能缺陷的出現(xiàn)。對于工作中出現(xiàn)的誤刪、誤加、誤改的內(nèi)容都可以通過版本控制工具恢復(fù)到原樣,而且額外增加的工作量卻是微乎其微的。
軟件工程項目往往是團(tuán)隊協(xié)作開發(fā),版本控制系統(tǒng)能夠保證持續(xù)的并行開發(fā),這是提高團(tuán)隊開發(fā)效率的關(guān)鍵。版本控制系統(tǒng)有效地解決不同開發(fā)者之間項目文件版本的同步問題,并行開發(fā)中最常見的不同版本軟件的錯誤修正問題也可以通過版本控制中分支與合并的方法有效地解決。
3.版本控制系統(tǒng)的分類
目前主要有3類版本控制系統(tǒng),分別是:本地版本控制系統(tǒng)、集中式版本控制系統(tǒng)和分布式版本控制系統(tǒng)。
本地版本控制系統(tǒng)是通過使用本地數(shù)據(jù)庫文件來保存文件的歷次更新差異。其中最流行的一種叫做 RCS,它會在磁盤上以一種特殊方式保存補(bǔ)丁集(補(bǔ)丁是指文件修訂前后的差異),通過疊加補(bǔ)丁的方式將文件恢復(fù)到某個歷史狀態(tài)。
在集中式版本控制系統(tǒng)中,版本庫實際上是存放在一個中央服務(wù)器上面,項目中的協(xié)作開發(fā)人員通過特定的客戶端連接到這臺中心服務(wù)器,從服務(wù)器獲得最新版本的數(shù)據(jù),然后將自己的修改推送到服務(wù)端。SVN就是一款非常知名的集中式版本控制系統(tǒng),它適合于中小型的項目開發(fā)。
分布式版本控制系統(tǒng)設(shè)計是為了支持大型開源團(tuán)隊的需要,它能夠解決單點服務(wù)器故障所帶來的一系列問題。這種版本控制系統(tǒng)中沒有所謂的“中央服務(wù)器”,每位開發(fā)成員的客戶端以及服務(wù)器上都擁有一個完整的倉庫鏡像,每次的檢出操作都是一次完整的備份,所以各個成員都可以利用自己的本地鏡像來恢復(fù)服務(wù)器。
Git 是一個典型的、開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的軟件項目。該系統(tǒng)的發(fā)明者是芬蘭的計算機(jī)科學(xué)家Linus Torvalds,他設(shè)計這個版本控制系統(tǒng)的目的是為了更好地管理Linux內(nèi)核的開發(fā)工作。Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)。
4.基于Git的幾種分布式版本控制系統(tǒng)
GitHub、GitLab、Gitee這三個代碼托管服務(wù)平臺都是基于web的Git倉庫。使用起來相差不多,都為分享開源項目提供了的平臺。
(一)GitHub
GitHub是世界上最大的代碼托管服務(wù)平臺,很多推出數(shù)字產(chǎn)品的軟件開發(fā)人員或公司都在GitHub上保持著某種存在,截止目前平臺已經(jīng)擁有73億多的開發(fā)人員、4億多的組織和200億多的代碼項目倉庫。注冊開發(fā)者可以將項目源代碼存儲在云端,并且可以利用Git進(jìn)行管理,開發(fā)團(tuán)隊提供了存儲、分享、發(fā)布和合作開發(fā)項目的中心化云存儲的場所。它提供了私有、公共兩種倉庫類型,使用私有的倉庫需要付費。
(二)GitLab
GitLab也是一種基于Git的托管服務(wù),與GitHub相比較它允許用戶免費建立私人倉庫,并且允許免費設(shè)置倉庫管理的各種權(quán)限,可以分享工程給其他開發(fā)者,能夠配置不同用戶對于工程的獲取權(quán)限,粒度較細(xì),有力提升了項目文件的安全性。
(三)Gitee
Gitee是一款國產(chǎn)的代碼托管服務(wù)平臺,在國內(nèi)也叫做“碼云”,它是開源中國于2013年推出的產(chǎn)品。和前面介紹的GitHub、GitLab相類似,都是基于Git實現(xiàn)的Web應(yīng)用。因為Gitee部署在國內(nèi)的服務(wù)器,所以與前兩者相比較,訪問速度更快,可以設(shè)置免費的私人倉庫。除了提供最基礎(chǔ)的 Git 代碼托管之外,還繼承了代碼在線預(yù)覽、代碼質(zhì)量檢測、歷史版本查詢。推薦使用Fork + PullRequest模式,方便派生倉庫和提交變更。
5.結(jié)束語
當(dāng)前,以數(shù)字化、網(wǎng)絡(luò)化以及智能化為特點的第四次工業(yè)革命正在興起,而軟件研發(fā)已成為驅(qū)動這場生產(chǎn)力變革的關(guān)鍵,是“新基建”中的基建。隨著全社會對信息技術(shù)認(rèn)可度的提高,軟件企業(yè)要占據(jù)穩(wěn)定的市場地位,就必須借助優(yōu)秀的軟件產(chǎn)品,因此軟件產(chǎn)品的質(zhì)量直接關(guān)系著產(chǎn)品的市場認(rèn)可度,在整個軟件工程項目的實施過程中,對項目源碼的版本控制是保證軟件質(zhì)量的重要管理手段。目前基于Git分布式版本控制系統(tǒng)開發(fā)的各大服務(wù)平臺為企業(yè)團(tuán)隊軟件協(xié)作開發(fā)管理提供云服務(wù),并能有效提升軟件研發(fā)全流程的管理水平。
參考文獻(xiàn)
[1]王真.版本控制工具在軟件開發(fā)項目管理中的應(yīng)用——以GIT為例[J].項目管理技術(shù),2020,18(06):131-134.
[2]徐婭.Git版本控制工具在團(tuán)隊協(xié)作項目中的應(yīng)用[J].智能計算機(jī)與應(yīng)用,2019,9(05):341-343.