軟體組態管理中的SVN

來源:互聯網
上載者:User

標籤:

一.簡介

1、什麼是軟體組態管理

軟體組態管理是指通過執資料列版本設定、變更控制的規程,以及使用合適的組態管理軟體,來保證所有配置項的完整性和可跟蹤性。組態管理是對工作成果的一種有效保護。

2、為什麼需要組態管理

如果沒有軟體組態管理,最大的麻煩是工作成果無法回溯。隨著工作的進展新的程式覆蓋了老的程式,當突然發現新程式有問題而老程式正確時怎麼辦?那隻能重寫老的程式來覆蓋新的程式。過一段時間又發現原來的老程式有問題,而解決方案在原來的新程式中……您是不是快要發瘋了。

為了避免成果被覆蓋,包括我自己在內的很多人早期採用手工管理版本的方式,例如當一個新版本產生時用當時的日期來命名檔案夾大發生然後再複製一下以後的修改在複製的檔案夾內進行,這樣上一個版本就被儲存下來了,周而復始不同的版本不會被覆蓋。雖然這種方式可以從某種程度上解決版本的回溯問題,但他存在的缺點是顯而易見的:第一點如果保留結果過於頻繁,將會導致產生大量的有著重複內容的檔案夾,龐大的物理空間,管理起來很麻煩;如果保留舊版本的時間間隔太長,可能產生某些有用的老程式無法回溯。拿我最近開發的一個程式來說程式只有幾十兆,經過一年的開發各版本累計到1G。第二容易產生版本的混亂,如果是團隊開發軟體,這種簡單的方法更難解決問題的本質了。

3、人的問題

組態管理的方法是成熟的,而且相應的軟體工具也是成熟的,基本上不存在看不懂、不會用的問題。組態管理的執行效果如何,完全是事在人為。妨礙組態管理的主要問題是人們嫌麻煩和僥倖心理作怪。

在沒出亂子的情況下,執資料列版本設定看起來有些麻煩。每次修改工作的時候總是要GetLatest Version,接著Check Out,修改完後又要Check In,多做了三步。其實這三步加起來也就十幾秒鐘,而且不費腦子,根本沒有添加多少麻煩,僅僅是個人感覺不爽而以。然而不執資料列版本設定的話,萬一發生工作成果被覆蓋或丟失等問題,麻煩就大了。

4、軟體組態管理規範

軟體研發和管理過程中會產生許許多多的工作成果,例如文檔、程式和資料等,他們都應當妥善地保管起來,以便查閱和修改。如果把所有檔案一股腦的塞進電腦裡,那麼使用起來很麻煩。

凡是納入組態管理範疇的工作成果統稱為配置項配置項主要有兩大類:一類是屬於產品的組成部分,例如需求文檔、設計文檔、原始碼、測試案例等等;另一類是在管理過程中產生的文檔,例如各種計劃、報告等。每個配置項的主要屬性有名稱、標識符、檔案狀態、版本、作者、日期等。配置項及曆史紀錄反映了軟體的演化過程。

版本控制的目的是按照一定的規則儲存配置項的所有版本,避免發生版本丟失或混亂等現象。配置項的狀態有三種:“草稿”、“正式發布”和“正在修改”

配置項的版本號碼與配置項的狀態緊密相關:

(1)處於“草稿”狀態的配置項的版本號碼格式為:0.YZ

(2)處於“正式發布”狀態的配置項的版本號碼格式為:X.Y。 一般只是Y值遞增,當Y值到達一定的範圍時X值才發生變化。

(3) 處於“正在修改”狀態的配置項的版本號碼格式為:X.YZ。 一般只增大Z值,當配置項修改完畢,狀態重新變成“正式發布”時,將Z值變為0,增加X.Y值。


二.初識SVN

1.在進行TortoiseSvn(管理員用戶端)+ AnkhSvn(VS2008外掛程式) +VisualSvn Server(版本控制伺服器)進行原始碼版本控制前,有必要先瞭解下Subversion(Svn)。

Svn(Subversion)是近年來崛起的版本管理工具,是CVS的接班人。目前,絕大多數開源軟體都使用Svn作為代碼版本管理軟體。

Svn用戶端

Subversion的用戶端有兩類,一類是webSvn等基於web的,一種是以TortoiseSvn為代表的用戶端軟體。前者需要web伺服器的支援,後者需要使用者在本地安裝用戶端。

Svn伺服器

Subversion支援linux和windows,更多是安裝在linux下。

Svn伺服器有2種運行方式:獨立伺服器和藉助apache。2種方式各有利弊。

Svn儲存版本資料也有2種方式:BDB和FSFS。因為BDB方式在伺服器中斷時,有可能鎖住資料,所以還是FSFS方式更安全一點。

VisualSvn 、VisualSvn Server

VisualSvn是Svn的用戶端,和VisualStudio整合在一起,但是是商業軟體,收費;VisualSvn Server是基於Windows平台上的Subversion伺服器,它是免費的。他具體包括了Subversion、Apache和一個相應的管理介面。所以推薦使用免費的TortoiseSvn用戶端以及VS外掛程式AnkhSvn 。

為什麼要用Svn,而不用Vss?

相同點:都能整合在VS2008下進行原始程式碼控制,都能完全內網開發。

不同點:Vss是基於“鎖定--編輯—解鎖”模式的,這個模式有一個弊端,就是當其他人在編輯相關單元檔案的時候,此單元檔案處於鎖定狀態,其他人如果想編輯這個單元檔案的話,只能處於等待狀態。後來在持續整合中我使用的Subversion替代Vss,Subversion是基於“修改—衝突—合并”的一個模式,也就是說多個人可以同時簽出一個單元檔案,編輯然後提交,如果多個人都修改了同一檔案的某一行的話,就會發生衝突,手工解決衝突。

Internet開發,和離線開發,VisualSvn會比Vss更勝一籌。

為什麼要用VisualSvn Server,而不直接用Subversion?

因為如果直接使用Subversion,那麼在Windows 系統上,要想讓它隨系統啟動,就要封裝Svn Server為windws service,還要通過修改設定檔來控制使用者權限,另外如果要想以Web方式【http協議】訪問,一般還要安裝配置Apache,如果是新手,豈不是很頭痛?而VisualSvn Serve整合了Subversion和Apache,省去了以上所有的麻煩。安裝的時候Svn Server已經封裝為windws service,Apache伺服器的配置也只是在映像介面上,指定認證方式、訪問連接埠等簡單操作;另外,使用者權限的管理也是通過映像介面來配置。

VisualSvnServer是完全開源和免費的,當然它的官方用戶端(VisualSvn)並不免費,不過沒關係, VisualSvn Serve用戶端有太多的免費版本供我們選擇,TortoiseSvn就是一個不錯的選擇。

2.TortoiseSvn 是 Subversion 版本控制系統的一個免費開源用戶端,可以超越時間的管理檔案和目錄。檔案儲存在中央版本庫,除了能記住檔案和目錄的每次修改以外,版本庫非常像普通的檔案伺服器。你可以將檔案恢複到過去的版本,並且可以通過檢查曆史知道資料做了哪些修改,誰做的修改。這就是為什麼許多人將 Subversion 和版本控制系統看作一種“時間機器”。

3.AnkhSVN是一款在VS中管理Subversion的外掛程式,您可以在VS中輕鬆的提交、更新、添加檔案,而不用在命令列或資源管理員中提交。而且該外掛程式屬於開源項目。


三.學習小結

經過對於軟體管理的學習,從整體上認識了軟體管理的必要性和重要性,很大程度上解決了設計過程中的版本回溯問題,很是為設計人員考慮,這也是大家學習的必要性。有好的管理方法,使得我們的項目設計過程更為靈活和多元化。而相對於SVN的學習就比較的抽象了,只是裝上了軟體和看看了教學的視頻,還未進行使用,接下來的時間裡,從實踐中去認識SVN吧!


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

軟體組態管理中的SVN

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.