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