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