常用源代码管理软件 及 比较

常用源代码管理软件

全称

出处

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本身的客户端软件进行同步,提高了工作效率。

posted @ 2012-01-12 16:38  Dance With Automation  Views(4253)  Comments(0Edit  收藏  举报