說說項(xiàng)目管理工具SVN(svn是項(xiàng)目管理工具嗎)
項(xiàng)目管理工具SVN
1. SVN介紹
1.1 項(xiàng)目管理中的版本控制問題
軟件研發(fā)過程中,任意一個(gè)項(xiàng)目都是由一個(gè)團(tuán)隊(duì)完成的,而不能依靠單一個(gè)體完成。在團(tuán)隊(duì)開發(fā)過程中,資料數(shù)據(jù)的共享與同步將成為開發(fā)過程中比較突出的問題。
1.2 原始開發(fā)管理模式(COPY模式)缺點(diǎn):
① 代碼管理混亂;
② 備份多個(gè)版本,占用磁盤空間大;
③ 解決代碼沖突困難;
④ 容易引發(fā)BUG;
⑤ 難于追溯問題代碼的修改人和修改時(shí)間;
⑥ 難于恢復(fù)至以前正確版本;
⑦ 無法進(jìn)行權(quán)限控制;
⑧ 項(xiàng)目版本發(fā)布困難;
為保障團(tuán)隊(duì)開發(fā)過程中人員溝通各方面成本的降低,必須使用一種有效的方式減少溝通環(huán)節(jié),提高開發(fā)效率,對(duì)資源的共享進(jìn)行管理。
1.3 現(xiàn)階段的開發(fā)管理模式(Tools模式)相關(guān)概念:
1.4 作為一個(gè)管理共享資源的工具必須具備以下幾點(diǎn):
① 能夠記錄日常事務(wù)中所有的文件的新建,編譯,刪除;
② 能夠記錄文件的操作人,操作時(shí)間,操作描述信息;
③ 對(duì)于同一個(gè)文件,能夠提供更多的歷史版本供適用者參考;
④ 對(duì)于不同的文件,能夠提供更高的管理權(quán)限,限制用戶的使用能力;
⑤ 對(duì)于不同的項(xiàng)目/Case,能夠提供更多的空間管理模式;
對(duì)于不同的用戶,提供遠(yuǎn)端訪問支持,使用戶更快捷進(jìn)行資源共享。通常軟件開發(fā)由多人協(xié)作開發(fā),如果對(duì)代碼文件、配置文件、文檔等沒有進(jìn)行版本控制,將會(huì)出現(xiàn)很多問題:
① 備份多個(gè)版本,占用磁盤空間大;
② 解決代碼沖突困難 ;
③ 容易引發(fā)BUG ;
④ 難于追溯問題代碼的修改人和修改時(shí)間;
⑤ 難于恢復(fù)至以前正確版本;
⑥ 無法進(jìn)行權(quán)限控制 ;
⑦ 項(xiàng)目版本發(fā)布困難;
2. 什么是版本控制
版本控制(Revision control)是維護(hù)工程藍(lán)圖的標(biāo)準(zhǔn)做法,能追蹤工程藍(lán)圖從誕生到定案的過程。是一種記錄多個(gè)文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng)。
版本控制最主要的功能就是追蹤文件的變更。它將什么時(shí)候、什么人更改了文件的什么內(nèi)容等信息忠實(shí)地了記錄下來。每一次文件的改變,文件的版本號(hào)都將增加。除了記錄版本變更外,版本控制的另一個(gè)重要功能是并行開發(fā)。軟件開發(fā)往往是多人協(xié)同作業(yè),版本控制可以有效地解決版本的同步以及不同開發(fā)者之間的開發(fā)通信問題,提高協(xié)同開發(fā)的效率。并行開發(fā)中最常見的不同版本軟件的錯(cuò)誤(Bug)修正問題也可以通過版本控制中分支與合并的方法有效地解決。
具體來說,在每一項(xiàng)開發(fā)任務(wù)中,都需要首先設(shè)定開發(fā)基線,確定各個(gè)配置項(xiàng)的開發(fā)初始版本,在開發(fā)過程中,開發(fā)人員基于開發(fā)基線的版本,開發(fā)出所需的目標(biāo)版本。當(dāng)發(fā)生需求變更時(shí),通過對(duì)變更的評(píng)估,確定變更的影響范圍,對(duì)被影響的配置項(xiàng)的版本進(jìn)行修改,根據(jù)變更的性質(zhì)使配置項(xiàng)的版本樹繼續(xù)延伸或產(chǎn)生新的分支,形成新的目標(biāo)版本,而對(duì)于不受變更影響的配置項(xiàng)則不應(yīng)發(fā)產(chǎn)生變動(dòng)。同時(shí),應(yīng)能夠?qū)⒆兏a(chǎn)生的對(duì)版本的影響進(jìn)行記錄和跟蹤。必要時(shí)還可以回退到以前的版本。例如當(dāng)開發(fā)需求或需求變更被取消時(shí),就需要有能力將版本回退到開發(fā)基線版本。在曾經(jīng)出現(xiàn)過的季度升級(jí)包拆包和重新組包的過程中,其實(shí)就是將部分配置項(xiàng)的版本回退到開發(fā)基線,將對(duì)應(yīng)不同需求的不同分支重新組合歸并,形成新的升級(jí)包版本。
版本控制是軟件配置管理的核心功能。所有置于配置庫(kù)中的元素都應(yīng)自動(dòng)予以版本的標(biāo)識(shí),并保證版本命名的唯一性。版本在生成過程中,自動(dòng)依照設(shè)定的使用模型自動(dòng)分支、演進(jìn)。除了系統(tǒng)自動(dòng)記錄的版本信息以外,為了配合軟件開發(fā)流程的各個(gè)階段。還需要定義、收集一些元數(shù)據(jù)來記錄版本的輔助信息和規(guī)范開發(fā)流程,并為今后對(duì)軟件過程的度量做好準(zhǔn)備。當(dāng)然如果選用的工具支持,這些輔助數(shù)據(jù)將能直接統(tǒng)計(jì)出過程數(shù)據(jù),從而方便軟件過程改進(jìn)活動(dòng)的進(jìn)行。對(duì)于配置庫(kù)中的各個(gè)基線控制項(xiàng),應(yīng)該根據(jù)其基線的位置和狀態(tài)來設(shè)置相應(yīng)的訪問權(quán)限。一般來說,對(duì)于基線版本之前的各個(gè)版本都應(yīng)處于被鎖定的狀態(tài),如需要對(duì)它們進(jìn)行變更,則應(yīng)按照變更控制的流程來進(jìn)行操作。
3. SVN是什么
SVN(Subversion)是近年來崛起的版本管理工具,在當(dāng)前的開源項(xiàng)目里(J2EE),幾乎95%以上的項(xiàng)目都用到了 SVN。Subversion 項(xiàng)目的初衷是為了替換當(dāng)年開源社區(qū)最為流行的版本控制軟件 cvs,在 CVS的功能的基礎(chǔ)上有很多的提升同時(shí)也能較好的解決 CVS 系統(tǒng)的一些不足。
SVN(subversion)是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數(shù)開源軟件都使用SVN作為代碼版本管理軟件。不要狹義的理解只服務(wù)于軟件研發(fā),很多公司都適用SVN管理整個(gè)公司的文檔。
4. SVN的作用
針對(duì)軟件研發(fā)企業(yè)的軟件生產(chǎn)過程而言,SVN用于管理整個(gè)開發(fā)過程中的源碼,進(jìn)行版本控制。
5. 主流版本控制工具
VSS: Visual Source Safe(Microsoft Visual Studio成員)主要任務(wù)是負(fù)責(zé)項(xiàng)目文件的管理。
CVS:Concurrent Versions System, march-hare出品的一套用于進(jìn)行文件版本控制軟件。
SVN:Subversion,Apache軟件基金會(huì)名下的一套用于進(jìn)行文件版本控制軟件。
在2000年初,開發(fā)人員要寫一個(gè)CVS的自由軟件代替品,它保留CVS的基本思想,但沒有它的錯(cuò)誤和局限,保留CVS的基本特性但去除CVS的bug和不好的特性。
在2000年2月,他們聯(lián)系《使用CVS開發(fā)開源項(xiàng)目》(Open Source Development with CVS)(Coriolis, 1999)的作者Karl Fogel,并征求了他是否愿意在這個(gè)新的項(xiàng)目中擔(dān)任一個(gè)角色。巧合的是,當(dāng)時(shí)Karl已經(jīng)和他的朋友Jim Blandy討論了一個(gè)關(guān)于新的版本控制系統(tǒng)的設(shè)計(jì)。在1995年,這兩人就成立了Cyclic Software,一個(gè)提供CVS的商業(yè)支持的軟件公司。雖然他們經(jīng)營(yíng)商業(yè)服務(wù),但是仍然在每天都在工作中使用CVS。使用CVS的挫折感使得Jim認(rèn)真思考更好的方法來管理數(shù)據(jù),不但確定名字為“Subversion”,而且完成了Subversion檔案庫(kù)的基礎(chǔ)設(shè)計(jì)。
當(dāng)CollabNet的電話到來時(shí),Karl立即答應(yīng)了加入項(xiàng)目中,而且Jim讓他的雇主RedHat Software同意讓他在這個(gè)項(xiàng)目中不定期工作。CollabNet雇用了Karl和Ben Collins-Sussman,并在5月開始了詳細(xì)設(shè)計(jì)工作。在得到了來自CollabNet的Brian Behlendorf、Jason Robbins和Greg Stein(當(dāng)時(shí)是一名活躍在WebDAV/DeltaV規(guī)范過程的自由程序員)很多創(chuàng)意的幫助下,Subversion很快地引起了一個(gè)活躍開發(fā)者社區(qū)的注意。它找出并歡迎很多同樣在CVS上受到挫折的社員能來為這個(gè)項(xiàng)目做點(diǎn)什么。
Subversion 最初的設(shè)計(jì)Team定下了幾個(gè)簡(jiǎn)單的目標(biāo)。 它必須在功能上可取代 CVS,也就是說, 所有 CVS 可做到的事, 它都要能夠作到。 在修正最明顯的瑕疵的同時(shí), 還要保留相同的開發(fā)模式。 還有, Subversion 應(yīng)該要和 CVS 很相像, 任何 CVS 使用者只要花費(fèi)少許的力氣, 就可以很快地上手。
經(jīng)過十四個(gè)月的編碼后, Subversion 于2001年8月31日開始實(shí)現(xiàn) “自行管理”。 也就是說, 開發(fā)人員不再使用 CVS 來管理 Subversion 的代碼, 而以 Subversion 自己來管理。
2009年11月,Subversion被Apache Incubator專案所接收。
2010年1月,正式成為Apache軟件基金會(huì)的一個(gè)頂級(jí)專案,所以為Apache Subversion。
6. SVN體系結(jié)構(gòu)圖
點(diǎn)贊收藏不迷路,更多精彩關(guān)注#蝌蚪成長(zhǎng)記#,敬請(qǐng)期待!