郝 杰
(遼寧師范大學(xué)城市與環(huán)境學(xué)院大連市116029)
分布式版本控制系統(tǒng)在海洋管理軟件開(kāi)發(fā)中的應(yīng)用研究
郝 杰
(遼寧師范大學(xué)城市與環(huán)境學(xué)院大連市116029)
對(duì)分布式版本控制系統(tǒng)進(jìn)行介紹,剖析其原理及優(yōu)勢(shì),并對(duì)當(dāng)前海洋管理軟件的開(kāi)發(fā)過(guò)程進(jìn)行研究。通過(guò)引入分布式版本控制系統(tǒng)輔助提升海洋管理軟件開(kāi)發(fā)的效率,規(guī)范整個(gè)開(kāi)發(fā)過(guò)程中的軟件發(fā)布,新功能測(cè)試及上線,發(fā)布補(bǔ)丁等一整套流程,極大地提高了整個(gè)軟件開(kāi)發(fā)過(guò)程的系統(tǒng)性和便利性。
分布式版本控制;GIT;海洋管理軟件
我國(guó)海域面積廣闊,蘊(yùn)藏著豐富的資源,為了對(duì)海洋進(jìn)行系統(tǒng)管理,更好的對(duì)海洋資源系統(tǒng)進(jìn)行開(kāi)發(fā),并對(duì)一些海域海岸帶進(jìn)行規(guī)劃修復(fù)等,這些都需要開(kāi)發(fā)專用的海洋管理軟件,例如海洋環(huán)境分析軟件、海域整治修復(fù)軟件等。在這些海洋管理軟件的開(kāi)發(fā)過(guò)程中需要將已經(jīng)完成的軟件穩(wěn)定版本上線,同時(shí)著手進(jìn)行新功能的開(kāi)發(fā)測(cè)試,穩(wěn)定后將新功能集成到軟件中,或者在新功能的開(kāi)發(fā)過(guò)程中需要緊急為已經(jīng)發(fā)布的穩(wěn)定版本打補(bǔ)丁,這些問(wèn)題在傳統(tǒng)的軟件開(kāi)發(fā)方法中難以解決,并且開(kāi)發(fā)過(guò)程繁瑣,安全性低,稍有不慎,就會(huì)引發(fā)軟件的錯(cuò)誤,導(dǎo)致前功盡棄。所以急需一種版本控制系統(tǒng)來(lái)解決軟件開(kāi)發(fā)中的各種問(wèn)題,使軟件開(kāi)發(fā)過(guò)程安全可控方便快捷。
軟件工程師在軟件開(kāi)發(fā)過(guò)程中常常需要保留一個(gè)程序的許多不同版本,并且為它們做不同的標(biāo)記,這種方法在很多大型的軟件項(xiàng)目中經(jīng)常使用,該方法雖然可行,但效率很低。首先,必須同時(shí)維護(hù)很多幾乎一樣的源碼備份;而且極度依賴軟件工程師的自我修養(yǎng)與開(kāi)發(fā)習(xí)慣,經(jīng)常因?yàn)檫@個(gè)原因使軟件發(fā)生了很多錯(cuò)誤;其次,一個(gè)程序同時(shí)存有兩個(gè)以上的版本很有必要,例如:其中一個(gè)版本為開(kāi)發(fā)完成的穩(wěn)定版本;而另一個(gè)開(kāi)發(fā)版本則有新的功能正在開(kāi)發(fā),這使得同一時(shí)間需要不同的版本。為了解決這些問(wèn)題,誕生了自動(dòng)化的版本控制系統(tǒng),版本控制的功能在于跟蹤記錄整個(gè)軟件的開(kāi)發(fā)過(guò)程,包括軟件本身和相關(guān)文檔[1],版本控制可以記錄工程項(xiàng)目中各個(gè)模塊的改動(dòng),并且為每次改動(dòng)做出標(biāo)記,開(kāi)發(fā)人員可以根據(jù)需要將工程項(xiàng)目還原到有標(biāo)記的任何一次改動(dòng)。
版本控制系統(tǒng)主要分為兩種,一種是集中式版本控制系統(tǒng),另一種是分布式版本控制系統(tǒng)。之前的版本控制系統(tǒng)使用集中式版本控制比較多,所有版本的工作在一個(gè)服務(wù)器進(jìn)行,由中央服務(wù)器進(jìn)行管理工作,指定權(quán)限,一次只能允許一個(gè)開(kāi)發(fā)者工作,存在著較多的缺陷,對(duì)唯一的版本庫(kù)過(guò)分依賴,一旦不能正常連接到集中式的版本庫(kù),整個(gè)系統(tǒng)就會(huì)陷入癱瘓[2]。為了解決集中式版本控制系統(tǒng)中存在的問(wèn)題,誕生了分布式版本控制系統(tǒng),Linux系統(tǒng)的創(chuàng)始人林納斯·托瓦茲發(fā)明了分布式版本控制系統(tǒng)GIT,分布式版本控制系統(tǒng)允許開(kāi)發(fā)者直接在各自的本地文件庫(kù)中工作,多個(gè)開(kāi)發(fā)者可以同時(shí)修改同一文件,每個(gè)文件庫(kù)有合并各個(gè)改變的功能。分布式版本控制讓開(kāi)發(fā)者在沒(méi)有網(wǎng)絡(luò)的情況下也能夠繼續(xù)工作,也讓開(kāi)發(fā)者有充分的版本控制能力,而不需要經(jīng)過(guò)中央服務(wù)器的許可。
分布式版本控制系統(tǒng)并不存在“中央服務(wù)器”,每個(gè)開(kāi)發(fā)者的電腦上都是一個(gè)完整的版本庫(kù),這樣的優(yōu)勢(shì)是工作時(shí)可以不需要網(wǎng)絡(luò)連接,因?yàn)榘姹編?kù)就在開(kāi)發(fā)者自己的電腦上。這種方式也有利于開(kāi)發(fā)團(tuán)隊(duì)的多人協(xié)作,當(dāng)一名開(kāi)發(fā)者在自己的電腦上修改了文件A,此時(shí)同事也在他的電腦上修改了文件A,兩個(gè)開(kāi)發(fā)者之間只需要把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改;同時(shí)分布式版本控制系統(tǒng)的安全性很高,每個(gè)開(kāi)發(fā)者電腦里都有完整的版本庫(kù),當(dāng)項(xiàng)目文件損壞時(shí),可以從其他開(kāi)發(fā)者電腦上進(jìn)行拷貝。而集中式版本控制系統(tǒng)的中央服務(wù)器如果出現(xiàn)錯(cuò)誤,則所有開(kāi)發(fā)者都會(huì)受到影響。
如圖1所示,GIT主要包括兩部分,一部分是工作區(qū),也就是開(kāi)發(fā)者電腦中的項(xiàng)目目錄,另一部分則是版本庫(kù),版本庫(kù)中包括很多東西,其中最重要的就是稱為stage(或index)的暫存區(qū),還有則是Git自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針HEAD。當(dāng)開(kāi)發(fā)者在電腦中對(duì)項(xiàng)目作出修改后輸入git add命令,改動(dòng)就會(huì)被提交到暫存區(qū),而不是直接提交到master分支,這種設(shè)計(jì)避免了對(duì)master分支的頻繁修改,當(dāng)用戶最終確定修改方案時(shí),就可以用git commit命令將改動(dòng)推送到master分支,將軟件的穩(wěn)定版本上線供用戶使用。
圖1 GIT原理圖
如圖2所示,當(dāng)穩(wěn)定版上線后還需要增加新的功能,這時(shí)就可以通過(guò)建立新的開(kāi)發(fā)分支dev進(jìn)行新功能的測(cè)試和提交,所有的一切改動(dòng)都會(huì)保存在dev分支中,而不會(huì)對(duì)已經(jīng)上線的穩(wěn)定版本master形成干擾。當(dāng)新功能測(cè)試完成后就可以加入穩(wěn)定版本發(fā)布,可以通過(guò)將dev分支與master分支合并來(lái)完成。HEAD代表當(dāng)前分支,HEAD指針指向dev分支時(shí)所做的修改就會(huì)保存在dev分支中,指向master分支時(shí)則代表當(dāng)前分支是master分支,所做的改動(dòng)不會(huì)對(duì)dev分支形成干擾,確保軟件開(kāi)發(fā)正常進(jìn)行。
圖2 GIT分支圖
在海域整治修復(fù)系統(tǒng)的開(kāi)發(fā)過(guò)程中,分布式版本控制系統(tǒng)極大地提高了軟件開(kāi)發(fā)的效率。首先可以使用GIT的克隆命令,直接從倉(cāng)庫(kù)同步海域整治修復(fù)系統(tǒng)的最新版本,同步完成后直接進(jìn)行開(kāi)發(fā),降低了傳統(tǒng)開(kāi)發(fā)方法傳輸和配置上的困難,完成對(duì)項(xiàng)目的修改可以及時(shí)推送給其他開(kāi)發(fā)人員,將代碼合并后可以一并推送到版本庫(kù),GIT大大降低了多人協(xié)作進(jìn)行軟件開(kāi)發(fā)的難度。在海洋整治修復(fù)軟件的開(kāi)發(fā)過(guò)程中,最重要的是可以使用GIT diff命令對(duì)比兩次提交之間的代碼或者項(xiàng)目差異,省去了人工對(duì)比造成的效率低下。
圖3 海域整治修復(fù)系統(tǒng)主界面圖
在開(kāi)發(fā)海域整治修復(fù)系統(tǒng)的過(guò)程中,通過(guò)對(duì)傳統(tǒng)軟件開(kāi)發(fā)方法的分析,結(jié)合項(xiàng)目實(shí)際,采用了現(xiàn)代化的分布式版本控制系統(tǒng)來(lái)輔助軟件開(kāi)發(fā),GIT操作簡(jiǎn)單,易上手,對(duì)軟件的改動(dòng)都可以記錄下來(lái),便于對(duì)代碼的回滾撤銷(xiāo),同時(shí)可以方便地為多人協(xié)作開(kāi)發(fā)提供支持,降低了團(tuán)隊(duì)軟件開(kāi)發(fā)的難度和繁瑣性,大大提高了開(kāi)發(fā)的效率。
[1]劉悅之.基于Git的分布式版本控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].科技傳播,2012(22):197-198.
[2]宋冬生.Git——版本管理之利器[J].程序員,2007(11):118-119.
2017-03-02