常用源代碼管理軟件 及 比較


常用源代碼管理軟件

全稱

出處

CVS

Concurrent Versions System

Open Source

SVN

Apache Subversion

Open Source

VSS

Visual Source Safe

Microsoft

TFS

Team Foundation Server

Microsoft

P4

Perforce

Perforce

Git

Git, 中文蠢貨,作者自嘲之意

Open Source

CC

ClearCase

IBM Rational

 

名稱

幕后推手

狀態

架構

並發模式

授權

支持平台

AccuRev SCM

AccRev

持續開發

C/S

Merge

(合並) or lock

(加鎖)

商業

支持Java

虛擬機的大多數平台

Bazaar

Canonical

持續開發

分布式

Merge

GPL

Unix家族,

Windows,

Mac OS X

ClearCase

IBM

持續開發

C/S

Merge or lock

商業

Linux,

Windows,

AIX,

Solaris,

HP UX,

I5/OS,

OS/390,

Z/OS

CVS

CVS開發團隊

維護

C/S

Merge

GPL

UNIX家族,

Windows,

Mac OS X

Git

Junio Hamano

持續開發

分布式

Merge

GPL

POSIX,

Windows,

Mac OS X

Monotone

Nathaniel Smith,

Graydon Hoare

持續開發

分布式

Merge

GPL

Unix家族,

Windows,

Mac OS X

Perforce

Perforce

持續開發

C/S

Merge or

Lock

商業

Unix家族,

Windows,

Mac OS X

Rational Team Concert

IBM

持續開發

C/S

Merge or

Lock

商業

同ClearCase

SCM Anywhere

Dynamsoft

持續開發

C/S

Merge Or

Lock

商業

Unix家族,

Windows,

Mac OS X

StarTeam

Borland

持續開發

C/S

Merge or

Lock

商業

Windows和基於Java的跨平台操作系統

Subversion (SVN)

Apache Software Foundation

持續開發

C/S

Merge or

Lock

Artistic

/GPL

Unix家族,

Windows,

Mac OS X

Team Foundation Server

Microsoft

持續開發

C/S

Merge or

Lock

商業

Windows

Visual SourceSafe

Microsoft

僅修復嚴重bug

共享文件夾

Merge or

Lock

商業

Windows

 

注:

幕后推手,目前負責該軟件開發和維護的組織或企業;

狀態,目前項目的開發狀態;

架構,描述版本控制服務器和開發人員客戶端的關系,C/S架構為客戶端/服務器(Client/Server)模式,這種模式下客戶端上的文件僅是服務器的一份副本拷貝,要想與其它客戶端同步,必須先把修改提交到服務器,再有其它要同步的客戶端和服務器進行同步。分布式架構則意味每一個客戶端都可以作為同步源並維護一個本地的版本庫。

並發模式(Concurrency Model,描述如何規避多個客戶端同時修改同一文件並提交導致的沖突。如果是加鎖(lock)模式,則一個文件被鎖住的同時其他人不能簽出,即同一時間同一文件只允許一個簽出,如果是合並(Merge)模式,則交由版本控制系統對來自不同開發人員的多個修改進行合並。

 

歷史

名稱

歷史

關鍵用戶

AccuRev SCM

2002年第一版發布

福特,閃迪,索尼,Orbitz,美航,Polycom

Bazaar

其前身是由Canonical的開發者Rovert Collins開發的Baz。

Ubuntu, Launchpad, KatchTV, MySQL, Bugzilla, GNU Emacs

ClearCase

1990由Atria主導開發,后被IBM收購,2009年發布7.1.1版本

IBM, 阿爾卡特-朗訊, 思科, 摩托羅拉, 西門子,愛立信,諾基亞以及其它大型組織

CVS

1986年發布第一版,其前身是RCS

廣泛

Git

由Linux Torvalds(Linux之父)發起

Linux Kernel, GNOME, Perl 5, X.org, Qt,

Cairo, Samba, OpenEmbedded, Ruby on Rails, …

Monotone

2003第一版

CTWM, Pidgin, Xaraya, I2P

Perforce

Perforce公司在1995年由Christopher Serwald創建

被廣泛使用

Rational Team Concert

2008年發布第一版

IBM

StarTeam

1995年第一版,StarBase出品,后被Borland收購,現Borland已被Micro Focus收購

Borland, BT, Cintas, EDS, Kaiser Permanente, Met Office, Quest Software, 西門子以及其他國際大型組織

Subversion (SVN)

2000年由一小撮人發起,旨在推出能夠替換CVS得更好的版本控制軟件系統。

ASF, SourceForge, FreeBSD, Google Code, KDE, GCC, Ruby, Mono, PuTTY, 以及其他更廣泛的組織。

Team Foundation Server

2006年第一版

微軟以及其它大型組織

Visual SourceSafe

第一版由一家叫做One Tree Software的公司開發,后備微軟收購並在1995年推出4.0版本

曾經廣泛使用過,但逐漸被淘汰。

注:關鍵用戶,采用該版本控制系統的知名組織或企業。

功能與特性比較(一)

名稱

原子提交

文件重命名

符號鏈接

事件鈎子

版本簽名

EOL轉換

AccuRev SCM

支持

支持

支持

支持

支持

支持

Bazaar

支持

支持

支持

支持

部分支持

支持

ClearCase

部分支持

支持

支持

支持

支持

支持

CVS

不支持

不支持

不支持

部分支持

不支持

支持

Git

支持

支持

支持

支持

部分支持

支持

Monotone

支持

支持

不支持

支持

強制支持

支持

Perforce

支持

支持

支持

支持

支持

支持

Rational Team Concert

支持

支持

支持

支持

支持

支持

StarTeam

支持

支持

不支持

不支持

不支持

支持

Subversion (SVN)

支持

支持

支持

支持

不支持

支持

Team Foundation Server

支持

支持

支持

支持

支持

支持

Visual SourceSafe

不支持

不支持

部分支持

支持

不支持

未知

注:

原子提交(Atomic Commits,每一次提交都認為是不可分割的,提交失敗則意味全部沒有提交,而不會發生因網絡中斷等異常造成只提交成功了部分的情況。

文件重命名,在重命名文件的同時能夠保持文件版本信息。

符號鏈接(Symbolic links),是否支持符號鏈接文件的版本控制。

事件鈎子(Pre/post event hooks),在事件發生前后是否可以觸發自定義的命令。

版本簽名(Signed revisions),是否支持對版本進行數字簽名。

EOL轉換(End of line conversions),是否支持文本類型能夠根據操作系統不同自適應文件行尾字符。

功能與特性比較(二)

名稱

合並重命名文件

合並跟蹤

標簽

國際化版本

Unicode文件名

大規模代碼庫

AccuRev SCM

支持

不支持

不支持

未知

未知

Bazaar

支持

支持

支持

支持

未知

ClearCase

支持

支持

支持

未知

支持

CVS

不支持

支持

支持

未知

不支持

未知

Git

支持

支持

支持

部分有

支持

支持

Monotone

支持

支持

支持

未知

支持

未知

Perforce

支持

支持

支持

支持

支持

Rational Team Concert

支持

支持

支持

支持

未知

StarTeam

未知

支持

支持

支持

未知

Subversion (SVN)

不支持

支持

部分支持

未知

支持

Team Foundation Server

支持

支持

支持

支持

支持

Visual SourceSafe

未知

不支持

支持

未知

未知

注,

合並重命名文件(Merge file renames),是否支持在文件在重命名后還能同步並合並修改,或者與另一個分支上的同名文件進行合並。

合並跟蹤(Merge tracking),是否支持一個分支同步合並另一個分支時,只合並那些被修改的部分,而不是全部更新,這意味着每一個分支版本庫都會維護一個自己版本修改的歷史記錄。

標簽(Tags),是否支持為每一個版本或者提交加上一段描述性文字。

國際化版本,支持多國版本。

Unicode文件名,支持不同字符集下的文件名。

大規模代碼庫(Supports large repos),是否支持超大規模代碼和數據的版本維護。

技術實現比較

名稱

編程語言

網絡協議

版本號格式

改動影響范圍

儲存模型

AccuRev SCM

C++,Java

定制化

數字

未知

增量集

(Changeset)

Bazaar

Python,

Pyrex,

C

Http,

FTP,

ssh,

SFTP,

WebDAV(帶插件)

Email包

偽隨機

快照

(Snapshot)

ClearCase

C,Java,Perl

Http,

CCFS,

MVFS

數字

僅文件

Changeset

CVS

C

ssh,

pserver

數字

僅文件

Changeset

Git

C,

Shell腳本,

Perl

基於tcp和ssh的Git服務器協議,

Rsync,

Http/https,

Email包

SHA-1哈希

Snapshot

Monotone

C++

Netsync,

ssh,

文件系統

SHA-1哈希

混合型

Perforce

C++,C

定制化

數字

Changeset

Rational Team Concert

Java

基於

Http/https

的REST服務

數字

Changeset

StarTeam

C,Java

定制化,

Tcp/ip

MD5哈希

未知

Snapshot

Subversion (SVN)

C

定制化,

ssh,

Http

SSL

數字

Snapshot

和Changeset

Team Foundation Server

C++,

C#

基於Http或

https的

SOAP

數字

未知

Changeset

Visual SourceSafe

C

SBM,

DCOM

數字

文件

Snapshot

注,

編程語言,版本控制系統開發的語言

網絡協議,文件同步(如在客戶端和服務器之間同步)所使用的網絡協議。

版本號格式,內部用來表示文件版本的格式,數字或者其他類型。

改動影響范圍(Scope of Change),記錄修改的方式是僅僅記錄修改的文件還是整個文件夾。

儲存方式(History model),描述每次提交的變化被儲存的方式,快照(snapshot)方式用來儲存修改前以及修改后兩次針對文件樹的副本。修改增量集(changeset)方式記錄修改前的文件樹的副本以及代表當前修改的集合。

用戶交互方式比較

名稱

Web接口

獨立的圖形界面

IDE插件

AccuRev SCM

支持

Windows

(集成了資源管理器)

Linux,

Unix,

BeOS

IntelliJ IDEA,

Eclipse,

Visual Studio

Bazaar

簡單的webserver,

基於webserve,

Trac,Launchpad,

Loggerhead的插件

Olive,

bzr-gtk,

Bazaar Explorer,

QBzrr,

TortoiseBzr

Eclipse,

Visual Studio,

TextMate,

Komodo IDE

ClearCase

支持,

CC Web借口

Windows,

Unix家族,

z/OS

Emacs,

Eclipse,

Visual Studio,

KDevelop,

IntelliJ IDEA

CVS

cvsWeb,

ViewVC,

codeBeamer,

其它

TortoiseCVS,

WinCVS,

Mac OS X,

GTK

Eclipse,

KDevelop,

IntelliJ IDEA,

Emacs,

BBEdit,

Komodo IDE

Git

gitweb,

wit,

cgit,

GitHub,

gitorious,

Trac,

codeBeamer

gitk,

git-gui (Tcl/Tk),

tig,

Gitbox (Mac OS X),

TortoiseGit,

qgit,

gitg (GNOME/GTK),

(h)gct (Qt),

git-cola (Qt),

Git Extensions

(Windows資源管理器),

SmartGit, Tower,

SourceTree,

Sprout (Mac OS X),

GitX (Mac OS X)

Aptana 3 Beta;

Eclipse

(JGit/EGit);

Netbeans (NbGit);

Visual Studio 、

(Git Extensions);

Emacs

(extension);

TextMate

(Git TextMate Bundle);

Vim (plugin);

IntelliJ IDEA >8.1;

Komodo IDE;

Anjuta

Monotone

ViewMTN,

TracMonotone

Monotone-Viz (GTK+),

Guitone (Qt),

Monotone Browser

(GTK+, Perl)

未知

Perforce

P4Web,

P4FTP

Windows,

Linux,

Unix,

Mac OS X,

BeOS available

Eclipse,

Visual Studio (P4SCC),

KDevelop (standard?),

IntelliJ IDEA,

Komodo IDE,

BBEdit,

Emacs (p4.el)

Rational Team Concert

支持

基於Eclipse的圖形界面

集成Eclipse和Visual Studio

StarTeam

包含

Windows,

Java,

Eclipse,

Visual Studio,

BDS2006,

IntelliJ IDEA,

Visual Studio,

JBuilder,

Eclipse

Subversion (SVN)

Apache 2 模塊,

WebSVN,

ViewSVN,

ViewVC,

Trac,

SharpForge,

sventon,

Warehouse,

codeBeamer

Java,

KDESVN,

Mac OS X[128],

Nautilus,

Qt,

RabbitVCS,

RapidSVN,

TortoiseSVN

(Windows 資源管理器)

Anjuta,

BBEdit,

Eclipse,

Emacs,

IntelliJ IDEA,

KDevelop,

Komodo IDE,

MonoDevelop,

Netbeans,

RabbitVCS,

TextMate,

Visual Studio

Team Foundation Server

包含

Windows,

Mac OS,

Unix

Visual Studio,

Eclipse IDE,

IntelliJ IDEA

Visual SourceSafe

SSWI,

VSS Remoting

Windows,

Linux,

Mac OS,

Solaris,

Visual Studio,

IntelliJ IDEA

注:

Web接口,描述系統是否提供Web接口和管理界面。

獨立的圖形界面,通過圖形界面窗口管理和使用系統,其相對的是命令行方式。

IDE插件,是否能夠集成到開發環境或者作為插件使用,比如Perforce的插件可以集成到Visual Studio中,這樣就可以在Visual Studio中進行源代碼的同步,而不必通過Perforce本身的客戶端軟件進行同步,提高了工作效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM