版本控制系統小調查

2021-04-12 11:42:26 字數 3832 閱讀 6717

到目前為止已經接觸了四,五種版本控制系統了,但是個人覺得還是比較喜歡用cvs.儘管cvs有不少的缺陷的,儘管cvs的原作者已經有了新的替代版本syn,但是我覺得到現在為止cvs的使用者群依然不小. 尤其是open source的專案.

花了點時間,比較了一下各個版本控制系統的優點和缺點.

1.vss(visual source safe)

工作原理

lock-modify-unlock(有檔案鎖定機制)

優點

與微軟公司自己的產品無縫結合,而且使用方便,操作簡單

缺點

只能在windows下執行,不能在unix, linux下執行。sourcesafe不支援異構環境下的配置管理,對使用者而言是個麻煩事。這不是技術問題,是微軟公司產品戰略決定的。 適合於區域網內的使用者群,並且使用人數比較少的時候比較適合.不適合於通過internet連線的使用者群,因為sourcesafe是通過「共享目錄」方式儲存檔案的。

另外,vss有檔案鎖定機制,這也決定了它不太適合用於比較大的專案,當開發人員比較多時,必定很多檔案都被其它程式設計師鎖定,確實回影響開發的進行.   

說明

sourcesafe是microsoft公司推出的配置管理工具 ,是visual studio的套件之一。 不過vss不是微軟的產品,是微軟收購的產品, vss最初的名字叫source safe,是一家小公司的產品,92年曾經獲了最佳小型管理工具獎,然後立即被微軟收購.  sourcesafe的介面確實很難看。但是難看不礙事,確實簡單比較容易使用. 新版本的vss我確實沒用過,我相信一定有不少的改進.

2.cvs(concurrent versions system)

工作原理

copy-modify-merge

優點

cvs支援併發的版本管理,與vss不同的是,vss有檔案鎖定機制,有就意味著在同乙個時候著能夠有乙個程式設計師修改同乙個檔案.而cvs則沒有這個限制。因此才會有後面的衝突的解決機制.

缺點

多個程式設計師修改乙個檔案的時候,可能回產生衝突,對於不能夠自動合併的**需要手工解決這些衝突,確實比較麻煩.另外在linux下面安裝和配置乙個cvs伺服器也不是一件簡單的事情,每次都會花費我很長的時間. 

管理和使用對初學者有一定難度,不易上手.

目錄不受版本控制,不利於大規模專案的完整控制.

對於併發程度較高的模組,多人同時更新情況下,檔案的合併操作不易完成.

只適合管理**,不太適合管理文擋.

說明

普及程度就不用說了,用本山大叔的那句話,"地球人都知道".

cvs代表協作版本系統或者併發版本系統,是一種版本控制系統,方便軟體的開發和使用者協同工作。

這是乙個將一組檔案放在層次目錄樹中以保持同步的系統。人們可以從 cvs 伺服器上更新他們的本地層次樹副本,並將修改的結果或新檔案發回;或者刪除舊檔案。 cvs 基於客戶端/伺服器的行為使得其可容納多使用者,構成網路也很方便。這一特性使得 cvs 成為位於不同地點的人同時處理資料檔案(特別是程式的源**)時的首選。

典型配置(windows平台)

cvsnt + tortoisecvs

cvs確實比較複雜,但是那是在linux下面,無論是配置還是使用都不容易入門.不過在windows下面的使用比vss還更簡單方便,一樣有gui..強烈推薦

tortoisecvs做為

cvs的客戶端.另外wincvs也不錯。服務端在windows下用cvsnt,也比較簡單.

相關資源

cvs的相關資源可以說是多如牛毛,到出都是.另外,有本叫《版本控制之道》的書專門講cvs的使用,翻了一下,確實沒有什麼幫助,確實很爛。下面是一些官方的website.

沒有具體研究過這個系統,只是大概用了一下.下面的資料來自其它地方.

說明

subversion相對於最常見的rcs,cvs,採用了更先進的分支管理系統,它的設計目標就是取代cvs,不過由於是乙個比較新的系統,因此目前在開源中應用還不是非常常見,不過已經有不少的專案採用它作為版本控制系統了。

優於cvs之處

原子提交。一次提交不管是單個還是多個檔案,都是作為乙個整體提交的。在這當中發生的意外例如傳輸中斷,不會引起資料庫的不完整和資料損壞。

重新命名/拷貝/刪除檔案這些動作都儲存在版本歷史紀錄當中

對於二進位制檔案,使用了非常節省空間的方法儲存(簡單的理解,就是只儲存和上一版本不同之處)

目錄也是有版本歷史的。整個目錄樹可以被移動或者拷貝,操作很簡單,而且能夠保留全部版本記錄

分支的開銷非常小

優化過的資料庫訪問,使得一些操作不必訪問資料庫就可以做到。這樣減少了很多不必要的和資料庫主機之間的網路流

4.clearcase

也沒用過這個工具,資料僅供參考.

rational公司的clearcase是軟體行業公認的功能最強大、**最昂貴的配置管理軟體。最早的clearcase並不是rational的產品.也是收購其它公司的產品.

clearcase主要應用於複雜產品的並行開發、發布和維護,其功能劃分為四個範疇:版本控制、工作空間管理(workspace management)、構造管理(build management)、過程控制(process control)。clearcase通過tcp/ip來連線客戶端和伺服器。另外,clearcase擁有的浮動license可以跨越unix和 windows nt平台被共享。

clearcase的功能比cvs、sourcesafe強大得多,但是其使用者量卻遠不如cvs、sourcesafe的多,主要原因是:clearcase**太昂貴.

5.hg(mercurial)

mercurial中文就是"水銀"的意思,而在化學上"水銀"寫著hg,因此得名。

我現在正在使用的版本控制工具.和cvs有比較大的不同,cvs是2層的c/s模式,而hg是3層模式,任何人都可以維護乙個hg才**倉庫.但是這樣做有個缺點就是,每個人都要必須擁有乙個**倉庫,所以網路上的資料傳輸量相當大,第一次pull**的時候相當費時間.

優點

系統版本化,cvs裡面是檔案版本化,每乙個檔案都有乙個修訂版本號,實際上這比較分散,不容易管理,而在hg裡面是很多個檔案擁有乙個版本號,一般來說是比較相關的改動.在hg裡面這個叫changeset.

其他

這個工具在國內很少人使用,所以中文資料匱乏.只有官方的website上有一些少得可憐的中文資料了.hg也有windows版本的,但是只有命令列的,沒有gui.所以沒有tortoisesvn,tortoisecvs

那麼好用了。

官方**

其他的就是我只聽說過名字,但從來都沒有用過的了,不知道有沒有人接觸過,歡迎補充.

6.rcs

老古董,好象是比cvs還早的乙個版本控制系統。

7.starteam

8.harvest

攝像頭小調查

最近在做監控類的專案,需要選擇合適的攝像頭,所以進行了乙個簡單調查,主要考慮的因素有 通訊方式 體積 解析度。下面進行總結。就通訊方式來說,有兩種 無線和有線。無線網路攝像頭 現在的無線網路攝像頭一般是家庭版的,體積小,便宜,而且一般帶有語音功能,提供二次開發包,比較簡單。清晰度一般最大640 48...

wr學姐的小調查

先輸入乙個n,代表有n個同學,再依次輸入輸入n個同學的名字,出生年份,出生月份,出生日期,按照年齡大小從大到小進行排序,然後輸出對應的名字。如果年月日都相同,則後輸入的先輸出。這道題目是乙個極其簡單的結構體的題目,所要使用的知識總共3點 1.正確定義結構體,我們要先定義乙個結構體將乙個的所有資料進行...

版本控制系統

linux一直痛恨的cvs及svn都是集中式的版本控制系統,而git是分布式版本控制系統,集中式和分布式版本控制系統有什麼區別呢?1 集中式版本控制系統 代表 svn cvs 版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再...