软件项目管理概览----版本控制
??? 隨著技術(shù)的發(fā)展,新的管理技術(shù)以及管理理念不斷涌現(xiàn)。版本控制、單元測試、以及項目自動化這三大技術(shù)現(xiàn)在已經(jīng)成為很多軟件項目賴以成功的基石。
??? 版本控制
??? 為什么要使用版本控制系統(tǒng)?
??? ??給團(tuán)隊提供一個項目級別的撤銷按鈕
??? ??記錄著項目每時每刻的改動
??? ??使得多個程序員可以有序的同時為一個項目寫代碼
??? 國內(nèi)早期的版本管理多數(shù)使用Microsoft的Visual SourceSafe6.0簡稱VSS,使用這種管理方式多數(shù)是單線的管理方式,雖然VSS也提供一些分支與共享功能,但是它的性能低下,而且經(jīng)常會出現(xiàn)問題,其可用性不高。其主要的版本管理模式如下圖。
??? 圖1:VSS中的代碼倉庫生命周期
?
??? 中間的方塊顯示了我們代碼倉庫的狀態(tài),在最開始只有一個主干(標(biāo)準(zhǔn)版)程序,我們把這個程序應(yīng)用于項目1的時候,可能會發(fā)現(xiàn)一些新需求或者新BUG。然后我們在代碼倉庫上進(jìn)行修改,把這些改動簽入了版本庫,這時我們的標(biāo)準(zhǔn)版仍有可能在改動,程序員可能會為標(biāo)準(zhǔn)版添加一些新特性(用*表示改動了),這就意味著版本可能出于一種不穩(wěn)定的狀態(tài),新特性可能短時間內(nèi)不能達(dá)到可以發(fā)布的狀態(tài),這時給項目1的團(tuán)隊更新程序(即發(fā)布新版本)時就要把這些不穩(wěn)定的新特性代碼過濾掉,再進(jìn)行發(fā)布,當(dāng)多個項目同時使用這個代碼倉庫時,會造成了一個目錄中實際疊加了多個項目的代碼。這是這種早期版本控制方式的主要缺陷。在VSS之后出現(xiàn)的CVS(Concurrent Version System)軟件統(tǒng)治了版本管理領(lǐng)域相當(dāng)長一段時間,CVS針對VSS存在的問題做出了一定的改善,但是仍不能滿足需求。最終Subversion(簡稱SVN)出現(xiàn)了,總結(jié)了CVS的長處,改進(jìn)了不足,力圖成為CVS的接班人,它也的確做到了?,F(xiàn)在幾乎主流的開源組織,以及提供網(wǎng)上代碼倉庫的網(wǎng)站都在使用Subversion,他們包括鼎鼎大名的Apache Software Foundation、Google Code、SourceForge.net等Subversion中分支是非常重要的概念。Subversion認(rèn)為:開發(fā)者應(yīng)該使用分支把與主線開發(fā)(標(biāo)準(zhǔn)版開發(fā))具有不同生命周期的代碼(如各項目的發(fā)布版)從主線中分離出去。Subversion中項目具有如下的結(jié)構(gòu)。
??? 圖2:Subversion中代碼倉庫的生命周期
?
??? 程序員們在主干目錄上進(jìn)行開發(fā)。當(dāng)代碼已經(jīng)處于比較完善的狀態(tài)時,決定發(fā)布它并在項目1中使用。這時我們應(yīng)該在分支目錄中為主干目錄創(chuàng)建一個分支(在Subversion中即一個拷貝)并打上一個標(biāo)簽(如XX月XX日發(fā)貨,打標(biāo)簽在Subversion中也是一個拷貝),然后項目1的工作組負(fù)責(zé)對這個分支進(jìn)行維護(hù),而主要的開發(fā)團(tuán)隊仍在主干上進(jìn)行開發(fā)。這樣主干和項目分支物理上處于不同的目錄,各自有獨立的生命周期,程序員對主干的標(biāo)準(zhǔn)版程序添加代碼不會對項目1造成影響,項目1分支中的代碼將會保持相對的穩(wěn)定,對項目1的修改也可以有選擇的轉(zhuǎn)移到標(biāo)準(zhǔn)版中(這個轉(zhuǎn)移混合的過程在Subversion中是非常容易實現(xiàn))。各個版本不會互相混淆,隨時可以取得各個發(fā)布版本。在Subversion中,分支主要用于發(fā)布、BUG修正、以及技術(shù)試驗。除此之外Subversion還提供了很多很好的特性,如:
??? 1.所有的文件統(tǒng)一使用一個版本號,這樣每一個版本號在項目生命周期代表一個切片,保留了一個一致性的快照。
??? 2.支持多人同時遷出一個文件,只要不同時修改同一行,Subversion都可以智能的進(jìn)行合并,如果在同一行上存在沖突,Subversion會提示你解決他。你也可以鎖定這個文件以避免其他人簽出。
??? 3.一次提交不管是單個還是多個文件,都是作為一個整體提交的,在這當(dāng)中發(fā)生的意外例如傳輸中斷,不會引起數(shù)據(jù)庫的不完整和數(shù)據(jù)損壞。
??? Subversion的理念與VSS是不同的。使用VSS的感覺像套著沉重的枷鎖,而Subversion更像是是一個輕巧的拐棍,幫助你將項目不同的版本管理的井井有條。
轉(zhuǎn)載于:https://www.cnblogs.com/mideasoft/archive/2009/05/19/1459892.html
總結(jié)
以上是生活随笔為你收集整理的软件项目管理概览----版本控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP代码审计工具Rips的使用
- 下一篇: 小松鼠邮件(squirrelmail)服