• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      軟件配置管理中版本控制的研究

      2019-10-08 09:01:51秦佳
      軟件 2019年3期

      秦佳

      摘? 要: 介紹了軟件配置管理及版本控制的基本概念,解釋了版本控制在軟件開發(fā)過程中的重要性。分析了兩種不同的版本控制方式,引出目前最熱門且最具潛力的Git版本控制系統(tǒng)。簡要介紹了Git,并詳細(xì)講解了Git的工作區(qū)域、文件狀態(tài)、分支和融合。

      關(guān)鍵詞: 版本控制;Git;版本控制系統(tǒng);軟件配置管理

      【Abstract】: The basic concepts of software configuration management and version control are introduced, and the importance of version control in the software development process is explained. Two different version control methods were analyzed to bring out the most popular and promising Git version control system. A brief introduction to Git and a detailed explanation of Git's workspace, file status, branching, and merging.

      【Key words】: Version control; Git; Version control system; Software configuration management

      0? 引言

      經(jīng)歷了軟件危機(jī)之后,軟件開發(fā)人員越發(fā)的重視起軟件工程的重要性,并把它當(dāng)做一門專門的學(xué)科進(jìn)行研究,提出了許多工程化的概念。在軟件開發(fā)過程中經(jīng)常會產(chǎn)生大量的文檔與代碼,且需求的不確定性決定了開發(fā)人員需要經(jīng)常性的迭代與修改項目文件,這產(chǎn)生了許多冗余的文檔管理工作。

      本文就軟件配置管理進(jìn)行探討,給開發(fā)人員介紹了一種簡便、高效的版本控制系統(tǒng),使開發(fā)人員能夠付出最小的代價,對開發(fā)過程中的變更進(jìn)行合理記錄與控制。

      1? 版本控制

      1.1? 基本概念

      在軟件工程領(lǐng)域中,軟件配置管理(Software configuration management)用來跟蹤和控制軟件中的變更,它屬于更大的跨學(xué)科概念:配置管理(Configuration management)。

      版本控制(Version Control),又有別名為Revi sion Control或Source Control,它屬于軟件配置管理(Software configuration management)的一部分,是對文檔、程序、大型網(wǎng)站或其他信息集合變化的一種管理。在軟件工程領(lǐng)域中,版本控制可以是任何與跟蹤歷史與控制源代碼變化有關(guān)的實現(xiàn)。開發(fā)人員不光會用版本控制軟件維護(hù)源代碼,還會用它來維護(hù)項目相關(guān)文檔和配置文件,實際上你可以對任何類型的文件進(jìn)行版本控制。

      1.2? 版本控制的重要性

      (1)如今,軟件的開發(fā)幾乎都是團(tuán)隊合作,在團(tuán)隊設(shè)計、開發(fā)和部署軟件時,通常會將同一軟件的不同的版本部署在不同的站點(diǎn)中并讓軟件開發(fā)人員同時進(jìn)行更新處理。軟件的漏洞通常出現(xiàn)在某些版本中,出于定位和修補(bǔ)漏洞的目的,能夠檢索和運(yùn)行不同版本的軟件來決定是哪個版本出了問題是很重要的。

      (2)軟件的開發(fā)很多都是迭代式的,也就有很多不同版本的程序副本。之前的做法是簡單的把所有副本都存儲起來,并為他們標(biāo)上不同的版本號。雖然這種方法可行,但它也有著許多的缺點(diǎn):第一,這種存儲方式十分低效。它需要開發(fā)者十分小心的將每個版本都標(biāo)清并存儲,通常版本的迭代數(shù)會十分的龐大,隨著時間推移,這會導(dǎo)致許多錯誤。第二,這種存儲方式會增加開發(fā)人員的重復(fù)工作。因為代碼庫是相同的,它需要像開發(fā)人員授予讀寫權(quán)限,這無疑增加了管理權(quán)限人員的壓力。因此,出于減少重復(fù)工作和錯誤的目的,需要一種能自動化進(jìn)行版本控制的系統(tǒng)。

      (3)軟件的開發(fā)更多的需要團(tuán)隊成員之間的合作,不同的團(tuán)隊成員編輯同一個文檔或者代碼變得越來越普遍,團(tuán)隊成員在空間上可能分散,在時間上也可能不同,且有著不同甚至相反的興趣和擅長的工作。因此,能夠給這些完全不同的團(tuán)隊成員提供一個可以跟蹤和記錄文檔與代碼更改的系統(tǒng)是十分有用且必不可少的。

      1.3? 集中式版本控制

      集中式版本控制(Centralized version control),為不同系統(tǒng)的開發(fā)者提供了協(xié)同工作的可能。它的特點(diǎn)是擁有一個單一集中的服務(wù)器,保存了所有項目文件的修訂版本,不同系統(tǒng)的開發(fā)者通過“check out”取出最新的文件,可以對它進(jìn)行修改之后把更新提交到服務(wù)器。大多數(shù)版本控制允許多個開發(fā)者同時修改同一個文件,許多版本控制系統(tǒng)提供自動便捷的“merge”功能融合無沖突的更新。

      但集中式版本控制最大的缺點(diǎn)就在于它對服務(wù)器的依賴性。如果服務(wù)器故障,當(dāng)機(jī)半天,那么在這半天內(nèi),無論哪個客戶端都無法提交更新。如果中心數(shù)據(jù)庫出現(xiàn)損壞,而沒有做好備份準(zhǔn)備,那么就會丟失所有的數(shù)據(jù),只剩下各個客戶端的不同版本,十分不利于軟件項目的開發(fā)。

      1.4? 分布式版本控制

      分布式版本控制(Distributed Version Control),很好的解決了集中式版本控制對服務(wù)器的依賴帶來的問題。這類版本控制的客戶端不只提取最新版本的文件快照,而是把中央代碼倉庫(Repository)完整的鏡像下來。這樣每一個客戶端都擁有完整的代碼倉庫備份,就算中央服務(wù)器宕機(jī)了,它的所有數(shù)據(jù)都可以幾乎無損的從任意一個客戶端中恢復(fù)。

      2? 版本控制系統(tǒng)

      2.1? Git基本概念

      Git是一種分布式版本控制系統(tǒng),也就是說它擁有以上介紹的分布式版本控制的所有特點(diǎn),它免費(fèi)且開源,目前被廣大開發(fā)者所使用且十分受歡迎。Git用于跟蹤文件中的變更,它的設(shè)計目標(biāo)包括:速度,簡單設(shè)計,完全分布式,對非線性開發(fā)的支持,處理像Linux內(nèi)核這樣大型項目的能力。

      2.2? Git的工作區(qū)域和文件狀態(tài)

      我們在使用Git時,主要打交道的有三個工作區(qū)域:Git倉庫(Git directory或Repository),工作目錄(Working directory)以及暫存區(qū)域(Staging area)。

      (1)Git倉庫是用來保存項目數(shù)據(jù)和數(shù)據(jù)庫的地方,這是Git中最重要的部分。Git中有一個git clone命令,可以克隆其他計算機(jī)的倉庫,這里拷貝的內(nèi)容就是Git倉庫中的數(shù)據(jù)。

      (2)工作目錄是對項目某個版本提取出來的內(nèi)容,它是從Git倉庫的壓縮數(shù)據(jù)庫中提取出的文件,放在本地磁盤供開發(fā)人員使用或修改,可以把它理解為你本次磁盤上的項目拷貝文件。

      (3)暫存區(qū)域是一個文件,它保存的是下次將要提交的文件列表信息,一般在git directory中。

      在Git中,工作目錄中的每個文件都無外乎兩種狀態(tài):跟蹤的(tracked)或者未跟蹤的(untracked)。跟蹤的文件是git知道的并且“跟蹤的”。跟蹤的文件可能會處于未修改(unmodified)、修改(modified)或暫存(staged)狀態(tài)。跟蹤的文件也就納入了版本控制的范疇,你在它上面所做的所有修改都會被Git記錄,如果你修改了文件內(nèi)容,它就會處于修改狀態(tài)。這時如果你想記錄這次更改,就可以使用git add命令將它加入到暫存區(qū)域,之后可以用git commit命令將這次更改操作提交到Git倉庫,最后通過git push將這個commit記錄到遠(yuǎn)程服務(wù)器上。

      從以上操作也可以看出Git分布式版本控制系統(tǒng)的優(yōu)點(diǎn):它大部分操作都在本地,只需要在有機(jī)會聯(lián)網(wǎng)時將之前所暫存的commit從Git倉庫中發(fā)布到遠(yuǎn)端服務(wù)器就可以完成工作,十分高效且不依賴網(wǎng)絡(luò)。

      2.3? Git分支與融合

      Git的分支(Branching)是它最杰出的功能,開發(fā)者可以利用分支功能實現(xiàn)多版本同時開發(fā)且隨時可切換當(dāng)前工作的不同版本,并在適當(dāng)?shù)臅r候把新增的分支特性融合(Merging)到主分支(通常為穩(wěn)定代碼)中,這樣就可以實現(xiàn)不改變當(dāng)前穩(wěn)定版本而增加特性分支實踐新特性的功能,這對大型復(fù)雜項目十分有幫助。

      實際上,Git的分支是一個指向提交對象的可變指針。它的默認(rèn)名字是master。每當(dāng)你提交(commit)了一個對象時,它就會自動向前移動,指向最后一個提交對象。

      創(chuàng)建分支十分簡單,只需要使用git branch命令再加上分支名就可以在當(dāng)前所在的提交對象上創(chuàng)建一個新分支。Git中還有一個叫HEAD的特殊指針,它指向當(dāng)前所在的本地分支,通過git checkout命令就可以隨時切換當(dāng)前所工作的分支(也就是改變HEAD指針的指向分支)。通過Git的分支特性,你可以將穩(wěn)定的版本放在master主分支上,如果開發(fā)過程中出現(xiàn)漏洞需要修復(fù)或有不確定的新功能需要測試,都可以在當(dāng)前的版本基礎(chǔ)上新建一個分支,它的本質(zhì)是一個指針,就會指向之前的提交對象,也就擁有穩(wěn)定版本的全部提交歷史,在此基礎(chǔ)上,就可以在不破壞主分支的前提下安全的測試新功能或修復(fù)漏洞。

      3? 結(jié)語

      利用版本控制,極大減少了軟件項目開發(fā)者冗余工作,且跟蹤版本歷史記錄有利于軟件項目的迭代與發(fā)展,在軟件工程中起著舉足輕重的作用。學(xué)會使用一種版本控制系統(tǒng),會加快軟件項目的開發(fā)進(jìn)度,并降低系統(tǒng)漏洞的風(fēng)險。Git的免費(fèi)與開源正逐步的吸引著世界各地的優(yōu)秀軟件人才,Github就是一個很好的開源平臺。學(xué)會使用正確的工具,也會最大限度的發(fā)揮人在項目管理中的作用,Git版本控制系統(tǒng)具有的潛力不可小覷。

      參考文獻(xiàn)

      [1]Scott Chacon. Pro Git[M]. Apress: 2009-09-30.

      [2]陳申平. 敏捷軟件開發(fā)中的配置管理探討[J]. 軟件, 2018, 39(05): 134-138.

      [3]攸陽, 楊素梅. 軟件配置管理在軍用軟件中的應(yīng)用[J]. 軟件, 2018, 39(06): 85-88.

      [4]楊瑞虹, 劉旺開, 霍振宇. 軟件配置管理中的版本控制工具[J]. 計算機(jī)時代, 2005(02): 8-9.

      [5]王海豐, 李金霞, 張鯤. 基于SVN版本控制的程序設(shè)計類課程教學(xué)研究[J]. 軟件, 2018, 39(04): 218-221.

      [6]路志, 戴志濤. 版本控制系統(tǒng)在嵌入式系統(tǒng)實驗中的應(yīng)用[J]. 軟件, 2014, 35(11): 86-90.

      [7]譚政. 一種協(xié)同編輯中版本控制與管理解決方案[J]. 軟件, 2014, 35(11): 118-123.

      [8]字鳳芹. 基于Git的協(xié)作小組學(xué)習(xí)資源庫的建設(shè)與研究[D]. 云南大學(xué), 2016.

      [9]劉悅之. 基于Git的分布式版本控制系統(tǒng)的設(shè)計與實現(xiàn)[J]. 科技傳播, 2012, 4(22): 197-198.

      [10]GitHub與社會化編程[J]. 硅谷, 2012(06): 51.

      [11]張智, 鄭卉, 蔣依伶, 袁歡歡, 鄭明清. 使用Github實現(xiàn)高效的團(tuán)隊協(xié)作開發(fā)[J]. 電腦知識與技術(shù), 2015, 11(07): 206-208.

      曲阜市| 樟树市| 丰都县| 读书| 乌苏市| 翁牛特旗| 双流县| 乌兰浩特市| 潜山县| 石楼县| 西青区| 香港 | 社会| 东源县| 日喀则市| 枣强县| 临夏县| 运城市| 天柱县| 马关县| 砚山县| 阿拉尔市| 南投市| 洛川县| 延安市| 惠水县| 六安市| 阿克陶县| 宁阳县| 西城区| 师宗县| 瑞昌市| 乡宁县| 夏津县| 长春市| 洛隆县| 伊春市| 临泉县| 永年县| 德昌县| 天门市|