版本控制软件比较
以下是版本控制软件比较。下表包括知名的版本控制和软件配置管理(SCM)软件的一般信息和技术信息。对不适用源代码的SCM软件,见开源配置管理软件比较。
一般信息
表格说明
- 库模式表示源码库各个副本之间的关系。在一个主从式架构中,用户通过客户端访问总库;一般而言,他们本地机器只保存项目树的一个工作副本。工作副本的变化必须提交到总库之后才能反映给其他用户。而在分布式架构中,库之间是平等的,用户一般除了他们的工作副本之外,还有本地库来存放版本历史。
- 并发模式表示如何管理工作副本的变化,以防止同时编辑造成库中的数据混乱。在锁定模式下,只有用户从总库请求并得到了一个文件的排他锁,才允许改变文件。在合并模式下,用户可以自由编辑文件,但当他们提交变化到总库时会被告知可能存在冲突,随后版本控制系统可能会对双方合并这些变化,或者当发生冲突时让用户来决定。注意,分布式版本控制几乎都是合并的并发模式。
软件 | 维护者 | 开发状态 | 库模式 | 并发模式 | 许可证 | 平台支持 | 费用 |
---|---|---|---|---|---|---|---|
AccuRev SCM | Micro Focus International | 活跃 | 主从式 | 合并或锁定 | 专有 | 大部分Java平台(类Unix系统、Windows、OS X) | 付费($350/人) |
GNU Bazaar | Canonical公司 | 活跃 | 分布式、主从式 | 合并 | GNU GPL | 类Unix系统、Windows、OS X | 免费 |
BitKeeper | BitMover公司 | 活跃 | 分布式 | 合并 | Apache | 类Unix系统、Windows、OS X | 免费 |
ClearCase | IBM Rational | 活跃 | 主从式 | 合并或锁定[nb 1] | 专有 | Linux、Windows、AIX、Solaris、HP-UX、i5/OS、OS/390、z/OS | 付费($4600/浮动许可证)(每个用户自动持有至少30分钟,可以手动释放) |
Code Co-op | Reliable软件 | 活跃 | 分布式 | 合并 | 专有 | Windows | 付费($150/人) |
Codeville | Ross Cohen | 官方网站已下线;最新版本为2007年7月13日 | 分布式 | 精确codeville合并 | BSD | 类Unix系统、Windows、OS X | 免费 |
CVS | CVS团队[1] | 维护但不增加新功能 | 主从式 | Merge | GNU GPL | 类Unix系统、Windows、OS X | 免费 |
CVSNT | March Hare软件[2]及社区成员 | 维护且新功能开发中 | 主从式 | Merge or lock | GPL或专有 | 类Unix系统、Windows、OS X、i5/OS | 老版本免费(有£425配送费),CVS Suite或Change Management Server最新版本的商业许可证£85 |
darcs | Darcs团队 | 活跃 | 分布式 | 合并 | GNU GPL | 类Unix系统、Windows、OS X | 免费 |
Dimensions CM | Serena软件 | 活跃 | 主从式 | 合并或锁定 | 专有 | Windows、Linux、Solaris、AIX、HP UX、z/OS | 付费 |
Endevor | CA公司[3] | 活跃 | 主从式 | 合并或锁定 | 专有 | z/OS | 付费 |
Fossil | D. Richard Hipp | 活跃 | 分布式 | 合并 | BSD | POSIX、Windows、OS X及其它 | 免费 |
Git | 滨野纯 | 活跃 | 分布式 | 合并 | GNU GPL | POSIX、Windows、OS X | 免费 |
GNU arch | Andy Tai | 不维护 | 分布式 | Merge | GNU GPL | 类Unix系统、Windows、OS X | 免费 |
IC Manage | IC Manage公司 | 活跃 | 主从式 | 合并或锁定 | 专有 | 类Unix系统、Windows、OS X | 付费(商业的) |
MKS Integrity | Integrity,PTC的子公司 | 活跃 | 主从式 | 合并或锁定 | 专有 | 类Unix系统、Windows | 付费 |
Mercurial | Matt Mackall | 活跃 | 分布式 | 合并 | GNU GPL | 类Unix系统、Windows、OS X | 免费 |
Monotone | Nathaniel Smith, Graydon Hoare | 活跃 | 分布式 | 合并 | GNU GPL | 类Unix系统、Windows、OS X | 免费 |
Perforce | Perforce软件公司 | 活跃 | 主从式 | 合并或锁定 | 专有 | 类Unix系统、Windows、OS X | 可以申请获得免费许可证,限开源或学习用途;也可以免费供最多20个用户、20个工作区使用,不限制文件数;[4]或者免费供最多1,000个文件使用,不限制用户数;否则$740–$900/人永久使用,或者$144–$300/人/年订阅,量大优惠[5] |
Plastic SCM | Codice软件 | 活跃 | 主从式 | 合并或锁定 | 专有 | Linux、Windows、OS X | 免费供最多15个用户;否则$595/人起,或者$3,500/25人/年[6] |
PVCS | Serena软件 | 活跃 | 主从式 | 锁定 | 专有 | Windows、类Unix系统 | 付费 |
Rational Team Concert | IBM Rational | 活跃 | 主从式[nb 2][7][8] | 合并或锁定 | 专有 | Linux、Windows、AIX、Solaris、HP-UX、i5/OS、OS/390、z/OS、OS X | 免费供最多10人使用;否则不免费 |
Revision Control System | Thien-Thi Nguyen | 活跃 | 本地 | 合并或锁定 | GNU GPL | 类Unix系统 | 免费 |
SCM Anywhere | Dynamsoft公司 | 活跃 | 主从式 | 合并或锁定 | 专有 | 类Unix系统、Windows、OS X | 付费(单用户免费;$299/人,量大优惠) |
Source Code Control System | Jörg Schilling[nb 3] | 活跃 | 本地 | 锁定[nb 4] | CDDL / proprietary[nb 5] | 类Unix系统、Windows、OS X | 习惯上,SCCS被捆绑进商业UNIX分发,也存在免费的CDDL-许可证版本 |
StarTeam | Borland(Micro Focus) | 活跃 | 主从式 | 合并或锁定 | 专有 | Windows并通过Java客户端跨平台 | 付费(Quoted on an individual basis) |
Subversion(SVN) | Apache软件基金会[9] | 活跃 | 主从式[nb 6] | 合并或锁定[nb 7] | Apache | 类Unix系统、Windows、OS X | 免费 |
Surround SCM | Seapine软件 | 活跃 | 主从式 | 合并或锁定 | 专有 | Linux、Windows、OS X | 付费($595/人;订阅$29/月) |
SVK | Best Practical | 不维护 | 主从式,去中心化的 | Merge | Artistic/GPL | 类Unix系统、Windows、OS X | 免费 |
Team Foundation Server(TFS) | 微软 | 活跃 | 主从式、分布式 | 合并或锁定 | 专有 | Windows,通过Visual Studio Team Services跨平台 | 免费供最多5个用户在Visual Studio Team Services中或者通过codeplex.com上的开源项目使用;否则不免费,通过MSDN订阅或直接购买许可证 |
Synergy | IBM Rational | 活跃 | 主从式、分布式 | 合并或锁定 | 专有 | Linux、Windows、类Unix系统 | 付费(联系IBM Rational[10]) |
Vault | SourceGear LLC | 活跃 | 主从式 | 合并或锁定 | 专有 | 类Unix系统、Linux、Windows | 付费($300/人) |
Veracity | SourceGear LLC | 网站显示不维护;最新版本2013年3月25日 (2013-03-25) | 分布式 | Merge or lock | Apache | 类Unix系统、Linux、Windows | 免费 |
Vesta | Kenneth Schalk、Tim Mann[11][12] | 网站自2006年后未更新;最新版本2009年2月15日 | 分布式模拟NFS协议,可以同时使用主从式 | 锁定分支;分支合并 | LGPL | Tru64、Linux | 免费 |
Visual SourceSafe(VSS) | 微软 | 只修复严重错误 | 共享文件夹 | 合并或锁定 | 专有 | Windows | 付费(~$500/许可证,或单许可证+每个MSDN订阅 |
软件 | 维护者 | 开发状态 | 库模式 | 并发模式 | 许可证 | 平台支持 | 费用 |
技术信息
表格说明
- 软件:应用的名称。
- 编程语言:编程语言中的应用正在发展
- 存储方法:表示文件在库中存储的形式。快照表示提交的文件被整个存储——通常是压缩的。变化集表示提交的文件只存储它与前后版本的区别。
- 变化范围:表示记录的变化是针对单独的文件,还是整个目录树。
- 版本ID:用来在库中标识文件的特定版本。系统可以使用伪随机标识符、版本的内容散列值或带有版本序列号(命名空间)的文件名。而Integrated Difference的版本号则基于变化集自身,它可以表示多个文件的变化。
- 网络协议:同步变化时所使用的协议列表。
- 源码规模:源码的大小以兆(megabyte)为单位。
软件 | 编程语言 | 存储方法 | 变化范围 | 版本号 | 网络传输协议 | 源码体积 |
---|---|---|---|---|---|---|
AccuRev SCM | C++、Java | 变化集 | 文件 | 数字对:NN/NN | 自定义 | 未知 |
GNU Bazaar | Python、Pyrex、C[nb 8] | 快照 | 树 | 伪随机 | 自定义、基于ssh自定义、基于HTTP自定义、HTTP、SFTP、FTP、邮件bundle[nb 9]、WebDAV(需要插件) | 4.1 MB |
BitKeeper | C | 变化集 | 树 | 变化集的键、数字 | 自定义、HTTP、rsh、ssh、邮件 | 99 MB |
CA Software Change Manager | C、C++、Java、HTML | 变化集和快照 | 文件和树[来源请求] | 数字 | HTTP、TCP/IP | 未知 |
ClearCase | C、Java、Perl | 变化集 | 文件和树[13] | 数字 | 自定义(CCFS)、自定义(MVFS文件系统驱动器)、HTTP | 未知 |
Code Co-op | C++ | 变化集 | 未知 | 用户ID-序列号 | 电子邮件(MAPI、SMTP/POP3、Gmail)、LAN | 未知 |
Codeville | Python | 未知 | 未知 | 未知 | 未知 | 未知 |
CVS | C | 变化集 | 文件 | 数字 | pserver、ssh | 3.3 MB |
CVSNT | C++ | 变化集 | 文件和树[14] | 数字 | 基于ssh、sspi、sserver、gserver、pserver自定义 | 55 MB |
darcs | Haskell | 变化集(补丁)[nb 10] | 树 | n/a | 基于ssh、HTTP、邮件自定义 | 1.7 MB |
Dimensions CM | C、C++、Java、C# | 快照或变化集 | 文件和树 | 数字 | 自定义、HTTP/HTTPS | 未知 |
Fossil | C | 快照 | 树 | SHA-1或SHA-3散列 | HTTP/HTTPS、基于ssh自定义 | 7.2 MB[nb 11] |
Git | C、shell脚本、Perl | 快照 | 树 | SHA-1散列 | 自定义(git)、基于ssh自定义[15]、HTTP/HTTPS、rsync、邮件、bundles | 22 MB |
GNU arch | C、shell脚本 | 变化集 | 树 | 数字 | HTTP、WebDAV | 未知 |
IC Manage | C++、C | 变化集 | 未知 | 数字 | 自定义 | 未知 |
Mercurial | Python、C | 变化集 | 树 | 数字、[nb 12]SHA-1散列 | 基于ssh自定义、HTTP、邮件bundles(有标准插件) | 20 MB |
MKS Integrity | C、Java | 变化集 | 文件 | 数字 | 自定义、HTTP | 未知 |
Monotone | C++ | 混合[nb 13] | 树 | SHA-1散列 | 自定义(netsync)、基于ssh自定义、文件系统 | 4.4 MB |
Perforce | C++、C、LabVIEW | 变化集 | 树 | 数字 | 自定义 | 未知 |
PVCS | C++、C | 变化集 | 文件 | 数字 | 未知 | 未知 |
Rational Team Concert | Java | 变化集 | 树 | 数字 | 基于HTTP/HTTPS的REST服务 | 未知 |
Revision Control System | C | 变化集 | 文件 | 数字 | 文件系统 | 5.3 MB |
SCM Anywhere | C++、Java、C# | 变化集 | 文件和树 | 数字 | 基于HTTP/HTTPS的SOAP | 未知 |
Source Code Control System | C | 变化集 | 文件 | Numbers | NFS | 1.3 MB |
StarTeam | C++、C、Java | 快照 | 文件和树 | MD5散列 | 自定义、TCP/IP | 未知 |
Subversion | C | 变化集和快照 | 树 | 数字 | 自定义(svn)、基于ssh自定义、HTTP和SSL(使用WebDAV) | 5.2 MB |
Surround SCM | C++ | 变化集 | 文件和树 | 数字 | TCP/IP | 未知 |
SVK | Perl | 变化集 | 树 | 数字 | 未知 | 未知 |
Synergy | Java | 变化集(文本)/快照(二进制) | 文件 | 数字 | 自定义、基于ssh自定义、HTTP | |
Team Foundation Server | C++和[C♯|C#] | 变化集 | 文件和树 | 数字 | 基于HTTP/HTTPS的SOAP | 未知 |
Vault | C#] | 变化集 | 文件和树 | 数字 | HTTP、HTTPS | 未知 |
Veracity | C、JavaScript | 变化集 | 树 | 数字、[nb 14]SHA-1、SHA-2和Skein散列 | HTTP | 52 MB |
Vesta | C++ | 快照 | 树 | 未知 | NFS | 15.8 MB |
Visual SourceSafe | C | 快照 | 文件 | 数字 | SMB、DCOM | 未知 |
软件 | 编程语言 | 存储方法 | 变化范围 | 版本号 | 网络传输协议 | 源码体积 |
功能
表格说明
- 软件:应用的名称。
- 原子提交:保证所有的改变都提交成功或者都不成功。
- 文件重命名:表示系统是否允许文件在改名后仍然保留他们的版本历史。
- 合并文件重命名:表示系统是否能够将一个分支上的文件变化合并到另一个分支上已重命名的同一个文件上(或者相反)。 如果同一个文件在两个分支上都已经重命名,则产生重命名冲突,必须由用户来解决。
- 符号链接:表示一个系统是否允许象普通文件一样对符号链接进行版本控制。 对符号链接的版本控制,某些人认为是一项功能,而另一些人则认为存在安全隐患(例如,一个到/etc/passwd的符号链接)。符号链接只支持特定的平台,这取决于软件的实现。
- 前/后事件触发:表示有能力在一个动作之前或之后触发命令,例如发生一个提交的动作。
- 签名版本:指集成了版本的数字签名,例如以OpenPGP的格式。
- 合并跟踪:表示一个系统是否记得在哪些版本之间合并了哪些变化,并且只合并那些从一个分支合并到另一个分支时丢失的变化。
- 换行转换:表示一个系统是否能适配文本文件的换行符,从而匹配当前使用的操作系统的换行方式。控制变化的粒度,例如 Subversion,可以进行配置,依据文件类型来处理换行符的不同,而Perforce根据一个单一、每个客户端的配置转换所有的文本文件。
- 标签:表示是否可以给一个特定版本赋予一个带有含意的名字,无论这些名字被叫做标记还是标签。
- 国际化支持:表示该软件是否支持多语言环境和多操作系统。
- Unicode文件名支持:表示该软件是否支持使用不同[[字符编码]]的文件系统之间的互操作。
- 大库支持:系统能高效处理十亿字节左右或更大的库吗?
软件 | 原子提交 | 文件重命名 | 合并文件重命名 | 符号链接 | 前/后事件触发 | 签名版本 |
合并跟踪 | 换行转换 | 标签 | 国际化支持 | Unicode文件名支持 | 大库支持 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
AccuRev SCM | 是 | 是 | 部份[nb 15] | 是 | 是 | 是 | 是 | 是 | 不适用 | 是 | 是[16] | 是[17][18] |
GNU Bazaar | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是[19] | 是 | 是 | 是 | 未知 |
BitKeeper | 是 | 是 | 是 | 是 | 是 | 未知 | 是 | 是 | 是 | 未知 | 未知 | 是 |
CA Software Change Manager | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 未知 |
ClearCase | 部份[nb 16] | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是[20] | 未知 | 是 |
Code Co-op | 是 | 是 | 是 | 否 | 部份 | 否 | 否 | 否 | 是 | 未知 | 未知 | 未知 |
Codeville | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
CVS | 否 | 否 | 否 | 否 | 部份 | 否 | 否 | 是 | 是 | 未知 | 否 | 是 |
CVSNT | 是 | 是 | 是 | 是 | 是 | 否 | 是 | 是 | 是 | 是 | 是 | 是 |
darcs | 是 | 是 | 是 | 否[nb 17] | 是 | 是 | 不适用[nb 18] | 否 | 是 | 否 | 是[nb 19] | 未知 |
Dimensions CM | 是 | 是 | 是 | 否 | 是 | 未知 | 是 | 是 | 是 [nb 20] | 否 [nb 21] | 是 | 是 |
Fossil | 是 | 是 | 是 | 是 | 否 | 是 | 是 | 是[nb 22] | 是 | 是 | 是 | 未知 |
Git | 是 | 部份[nb 23] | 是 | 是 | 是 | 是[nb 24] | 是 | 是 | 是 | 是 | 是[nb 25] | 部份[nb 26] |
GNU arch | 是 | 是 | 未知 | 是 | 是 | 是 | 未知 | 未知 | 是 | 未知 | 未知 | 未知 |
IC Manage | 是 | 是 | 否 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 未知 | 未知 |
MKS Integrity | 是 | 是 | 是 | 否 | 是 | 是[nb 27] | 是[nb 28] | 是 | 是 | 是 | 是 | 未知 |
Mercurial | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是[nb 29] | 部份[nb 30] | 部份[21] |
Monotone | 是 | 是 | 是 | 否[nb 31] | 是 | 是,强制的 | 是 | 是 | 是 | 未知 | 是 | 未知 |
Perforce | 是 | 是[22] | 是[23] | 部份[nb 32] | 是 | 是 | 是[24] | 是 | 是 | 是[25] | 是[26] | 是 |
Rational Team Concert | 是 | 是 | 是 | 是 | 是[nb 33] | 是 | 是 | 是 | 是 | 是 | 是 | 未知 |
Source Code Control System | 是 | 否 | 不适用 | 不适用 | 否 | 否 | 是 | 否 | 否 | 部份[nb 34] | 是 | 是 |
StarTeam | 是[nb 35] | 是 | 未知 | 是 | 否 | 否 | 是 | 是 | 是 | 是 | 未知 | 是 |
Subversion | 是 | 是[nb 36] | 部份[nb 37] | 是 | 是 | 否 | 是[nb 38] | 是 | 部份[nb 39] | 是 | 是 | 是 |
Surround SCM | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是[27] | 是 | 是 | 是 |
SVK | 是 | 是 | 是 | 是 | 是[nb 40] | 是[28] | 是 | 是 | 是 | 是 | 未知 | 未知 |
Synergy | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是[nb 41] | 是 |
Team Foundation Server | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
Vault | 是 | 是 | 是 | 否 | 是 | 否 | 否 | 是 | 是 | 未知 | 未知 | 未知 |
Veracity | 是 | 是 | 是 | 是 | 是 | 否 | 是 | 是 | 是 | 否 | 是 | 是 |
Vesta | 是 | 是 | 未知 | 未知 | 是 | 否 | 否 | 否 | 是 | 否 | 未知 | 是 |
Visual SourceSafe | 否 | 否[nb 42] | 未知 | 否 | 是 | 否 | 否 | 未知 | 是 | 是 | 未知 | 未知 |
软件 | 原子提交 | 文件重命名 | 合并文件重命名 | 符号链接 | 前/后事件触发 | 签名版本 | 合并跟踪 |
换行转换 | 标签 | 国际化支持 | Unicode文件名支持 | 大库支持 |
高级功能
表格说明
- 关键词扩展:支持关键词自动扩展,例如文件版本号。
- 交互式提交:交互式提交允许用户对变化精挑细选,并决定哪些变化可以提交(未被选择的变化只被保留为工作副本的变化),而不是只到文件级别的粒度。
- 外部引用:在源码树中嵌入外部库。
- 部分检出/复制:从库中只检出或复制特定子目录的能力。
- 权限位:在版本历史中跟踪文件权限位。
- 保留时间戳:对于文件系统属性中的最后修改时间,以提交时间覆盖检出时间。
- 用户自动合并工具:自动合并可以尝试通过用户选择的任何工具来进行(希望能以每个文件为基础来配置)。
- 支持的格式:支持读/写,或者只读(转换,有可能再重复)。
- 共享所得目标的构建缓存:通过这一能力,如果其他协作用户恰好共享了同样的依赖,可以引入其他用户构建的所得目标,而无需在本地重建它们。
软件 | 关键词扩展 | 交互式提交 | 外部引用 | 部分检出/复制 | 权限位 | 保留时间戳 | 用户自动合并工具 | 支持的格式 | 共享所得目标的构建缓存 |
---|---|---|---|---|---|---|---|---|---|
AccuRev SCM | 是 | 未知 | 是 | 是 | 仅执行位 | 是 | 是 | git(bi-dir)[29] | 否 |
GNU Bazaar | 是[30] | 是[31] | 是[32] | 否 | 仅执行位 | 否[nb 43] | 是[33] | bzr、subversion[34]、git[35]、hg[36]、任何有快速导出功能的 | 否 |
BitKeeper | POSIX和RCS | 是 | 是 | 是 | 是 | 是 | 是 | bitkeeper | 否 |
CA Software Change Manager | 否 | 是 | 否 | 是 | 仅执行位 | 是 | 是 | CA Software Change Manager | 否 |
ClearCase | 是[37] | 否 | 否 | 是 | 是 | 是[nb 44] | 是 | ClearCase | 是 |
CVS | RCS | 否 | 是 | 是[nb 45] | 部份[nb 46] | 是 | 否 | cvs | 否 |
CVSNT | RCS | 是[nb 47] | 是[nb 48] | 是[nb 49] | 是 | 是 | 否 | cvs | 是[nb 50] |
darcs | 否 | 是 | 否 | 否[nb 51] | 部份[nb 52] | 否 | 仅针对冲突 | darcs | 否 |
Dimensions CM | 是 | 否 | 是[nb 53] | 是 | 是 | 是 | 是 | 从ClearCase、Subversion、CVS、PVCS、ChangeMan DS迁移 | 未知 |
Fossil | 否 | 是 | 是[nb 54] | 否 | 仅执行位[38] | 否 | 否 | fossil(使用sqlite),任何有快速导出功能的[39] | 否 |
Git | 否[nb 55] | 是[nb 56] | 是[40] | 是[41] | 仅执行位 | 否[nb 57] | 是 | git、cvs、subversion、hg、任何有快速导出功能的 | 否 |
Mercurial | 是[42] | 是[43] | 是[44] | 部份[45] | 仅执行位 | 通过(alpha)扩展[46] | 仅非琐碎的情况 | hg、subversion[47]、git[48]、任何被Convert扩展支持的其它格式[49] | 否 |
Perforce | 是[50] | 否 | 否 | 是 | 是 | 是[51] | 是[52] | Perforce | 否 |
Rational Team Concert | 否 | 是 | 是 | 是 | 是 | 未知 | 未知 | N/A | 否 |
Source Code Control System | 是 | 否 | 不适用 | 是 | 仅执行位 | 某些变体 | 否 | rcs | 否 |
Surround SCM | 是 | 否 | 否 | 是 | 否 | 是 | 是[nb 58] | Surround | 否 |
SVK | 是 | 是[nb 59] | 未知 | 是 | 未知 | 未知 | 未知 | subversion | 否 |
Subversion | 是[53] | 部份[nb 60] | 是[54] | 是 | 仅执行位 | 部份[nb 61] | 是[nb 62] | subversion | 否 |
Team Foundation Server | 否 | 是 | 未知 | 是 | 是 | 未知 | 是 | Git 、 Team Foundation Version Control (TFVC) | 未知 |
Veracity | 否 | 否 | 否 | 否 | 是 | 是 | 是 | git、cvs、subversion、hg、任何有快速导出功能的 | 否 |
Vesta | 否 | 否 | 是通过SDL | 否 | 未知 | 是 | 否 | Vesta | 是 |
Visual SourceSafe | 是 | 未知 | 未知 | 是 | 是 | 未知 | 是 | 未知 | 否 |
软件 | 关键词扩展 | 交互式提交 | 外部引用 | 部分检出/复制 | 权限位 | 保留时间戳 | 用户自动合并工具 | 支持的格式 | 共享所得目标的构建缓存 |
基本命令
表格说明
- 绿格中不在[方括号]里的命令使用了交互式的命令行提示符。[方括号]中的文本用来解释哪里能找到等价功能。
- 库初始化:创建一个新的空库(比如,版本控制数据库)。
- 克隆:创建一个完全相同的库实例(在一个安全事务中)。
- 拉:将版本从远程库下载到本地库。
- 推:将版本从本地库上传到远程库。
- 本地分支:创建一个不存在于原始远程库中的本地分支。
- 检出:从(远程)库创建一个本地工作副本。
- 更新:用库中的最新版本更新工作副本中的文件。
- 锁定:锁定库中的文件,以免被其他用户更改。
- 添加:标记指定的文件,以便在下一次提交时添加到库中。
- 移除:标记指定的文件,以便在下一次提交时移除(注:保存在移除时及之前的相关版本历史)。
- 移动:标记指定的文件,以便在下一次提交时移动到新的位置。
- 拷贝:标记指定的文件,以便在下一次提交时拷贝。
- 合并:融合同一个工作副本路径的两个来源之间的差别。
- 提交:将变化记录到库中。
- 恢复:从库中恢复工作副本文件。
- 生成打包文件:创建一个包含压缩的对给定库的变化集的文件。
- 重定位:将本地提交重定位到已更新的上游地址。
软件 | 库初始化 | 克隆 | 拉 | 推 | 本地分支 | 检出 | 更新 | 锁定 | 添加 | 移除 | 移动 | 拷贝 | 合并 | 提交 | 恢复 | 生成打包文件 | 重定位 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AccuRev SCM | mkdepot | N/A | N/A | N/A | mkstream | mkws | update | anchor | add | defunct | move | cp [然后] add / incl -s / ln | merge | keep / promote | purge / revert | N/A | chstream |
GNU Bazaar | init / init --no-tree[nb 63] / init-repo / init-repo --no-trees[nb 64] | branch / branch --no-tree[nb 65] | pull | push | init / branch | checkout / checkout --lightweight[nb 66] | update | N/A | add | rm | mv | N/A | merge | commit | revert | send | rebase[nb 67] |
BitKeeper | setup | clone | pull | push | clone | co | pull | 未知 | add | rm | mv | cp | pull | commit | undo | makepatch | collapse |
ClearCase | init | N/A | N/A | N/A | N/A | checkout | update | lock / unlock | mkelem | rmname | mv | N/A | merge | checkin | uncheckout / rmver | N/A | findmerge |
CVS | init | N/A | N/A | N/A | N/A | checkout | update | 未知 | add | rm | N/A | N/A | update -j | commit | remove [然后] update | N/A | N/A |
CVSNT | init | N/A | N/A | N/A | N/A | checkout | update | edit | add | rm | rename | N/A | update -j | commit | update -C | N/A | N/A |
darcs | init | clone | pull | push | N/A[nb 68] | clone | pull | 未知 | add | remove | move | N/A | pull / push | record | revert | send -o[nb 69] | rebase |
Fossil | new / open | clone | pull | push | branch / commit --branch | clone / open | update | N/A | add | rm / del | mv / rename | N/A | merge | commit | revert | Fossil的库本身是一个单独的sqlite文件 | N/A |
Git | init / init --bare | clone / clone --bare | fetch[nb 70] | push | branch | checkout | pull | N/A | add | rm | mv | cp [然后] git add[nb 71] | merge | commit | revert | bundle | rebase |
Mercurial | init | clone | pull | push | bookmark[nb 72] | clone | pull -u | N/A | add | rm | mv | copy | merge | commit | revert | bundle | rebase[55] |
Monotone | init | clone | pull | push | N/A | checkout | update | 未知 | add | drop | rename | N/A | merge | commit | revert | N/A | N/A |
Perforce | p4 client [和] p4 sync | p4 sync | p4 sync | p4 submit | 要求迁移到最近的流功能 | edit | sync | lock / unlock | add | delete | move | copy | integrate | submit | revert | 未知 | N/A |
SVK | svk depotmap [或] svnadmin create) | mirror | pull | push | copy | checkout | update | 未知 | add | rm | mv | cp | merge | commit | revert | N/A | smerge -I |
Subversion | svnadmin create | svnadmin hotcopy | [变通:]svnadmin load | [变通:]svnadmin dump | N/A | checkout / co | update / up | lock | add | delete / del / remove / rm | move / mv / rename / ren | copy / cp | merge | commit / ci | revert | N/A | N/A |
Surround SCM | mkmainline | N/A | N/A | N/A | mkbranch | checkout | get | checkout | add | rm | move | N/A | merge | checkin | voidcheckout | N/A | rebase |
Veracity | repo init | clone | pull | push | branch | checkout | pull -u | lock | add | rm | mv | N/A | merge | commit | revert | N/A | N/A |
Vesta | vcreate | vrepl | vrepl | vrepl | N/A | vcheckout | vadvance | vcheckout | [……然后] vcheckin[nb 73] | vrm | mv [然后] vcheckin[nb 74] | cp [然后] vcheckin[nb 75] | vdiff | vcheckin | vcheckin -c 0 | vmake [或] vesta | vadvance |
Visual SourceSafe | ? | 未知 | 未知 | 未知 | N/A | Get Latest | Get Latest | Check Out | Add Files | Delete | ? | 未知 | ? | Check In | Undo Check Out | 未知 | 未知 |
软件 | 库初始化 | 克隆 | 拉 | 推 | 本地分支 | 检出 | 更新 | 锁定 | 添加 | 移除 | 移动 | 拷贝 | 合并 | 提交 | 恢复 | 生成打包文件 | 重定位 |
高级命令
表格说明
- 绿格中不在[方括号]里的命令使用了交互式的命令行提示符。[方括号]中的文本用来解释哪里能找到等价功能。
- 命令别名:为指定的命令或组合创建定制的别名
- 锁定/解锁:排他性地锁定一个文件,以防被其他人编辑。
- 搁置/取消搁置:在工作目录中暂时搁置部分或全部的变化。
- 回滚:从历史中移除一个版本。
- 挑选:只把某些修订从一个分支移动到另一个分支(而不是合并分支)。
- 二分检索:在源码历史中,使用二分检索来查找一个变化的引入或修复。
- 出入:查询本地库和远程库之间的差别(该差别可能会以推/拉的方式发送/取回)。
- 过滤:在库中搜索,以找到那些匹配一个模式的行。
- 记录:在一次提交中只包含一个文件的某些变化,而不包含其它的变化。
软件 | 命令别名 | 锁定/解锁 | 搁置/取消搁置 | 回滚 | 挑选 | 二分检索 | 出入 | 过滤 | 记录 |
---|---|---|---|---|---|---|---|---|---|
AccuRev SCM | 否 | 允许文件锁定 | 否 | revert / purge | promote | 否 | 否 | 否 | 未知 |
GNU Bazaar | [在“.bazaar/bazaar.conf”文件中] | 否 | shelve / unshelve | uncommit | merge(不跟踪) | bisect(二分检索插件) | missing --theirs-only / missing --mine-only | grep(过滤插件) | 否 |
BitKeeper | 未知 | 未知 | park / unpark | undo | 未知 | bisect | changes -R/-L | grep | 未知 |
CVSNT | [在“.cvsrc”文件中] | edit -x / unedit[nb 76] | 否 | admin -o[nb 77] | 有[nb 78] | annotate[nb 79] | 否 | 否[56] | 否 |
Darcs | 否 | 否 | revert / unrevert | unrecord | 有[nb 80] | test --bisect | pull / push --dry-run | 否 | record |
Fossil | 否 | 否 | stash pop / stash apply[nb 81] | merge --rollback | merge --cherrypick | bisect | 否 | search | 否 |
Git | [在“.gitconfig”文件中] | 否 | stash / stash pop[nb 82] | reset HEAD^ | cherry-pick | bisect | cherry | grep | add -p |
Mercurial | [在“.hgrc”文件中] | 否 | shelve / unshelve(附带扩展[57]) | strip(附带扩展[58]) | graft(核心[59])或transplant(附带扩展[60]) | bisect | incoming / outgoing | grep | record(附带扩展[61]) |
Monotone | [在monotonerc中] | 否 | 否 | kill_rev_locally[nb 83] | pluck | bisect | 否 | 否 | 未知 |
Perforce | 通过broker[62] | lock / unlock | shelve / unshelve | obliterate | integ[63] | 未知 | 未知 | grep | 未知 |
SVK | 否 | 否 | 否 | 否 | svk merge | 否 | status[nb 84] | 否 | 否 |
Subversion | 否 | lock / unlock | 否 | 否 | svnmerge cherry-picking | 第三方工具[nb 85] | status -u[nb 86] | 否 | 否 |
Surround SCM | 否 | checkout | shelf | rollback | duplicatechanges | 否 | diff | search | 否 |
Team Foundation Server | 是 | lock / unlock | shelve / unshelve | rollback | merge | 否 | 未知 | 未知 | 否 |
Veracity | 否 | lock / unlock[nb 87] | 否 | 否 | 否 | 否 | incoming / outgoing | 否 | 否 |
软件 | 命令别名 | 锁定/解锁 | 搁置/取消搁置 | 回滚 | 挑选 | 二分检索 | 出入 | 过滤 | 记录 |
用户界面
表格说明
- 软件:应用的名称。
- 网页版界面:表示应用软件是否包含一个网页版界面。网页版界面可以允许软件发送诊断数据到一个网站,甚至能允许对应用软件进行远程控制。
- 图形界面:GUI,图形用户界面。 如果一个软件产品提供了GUI,它的功能可以通过应用程序窗口来访问,而不是只能通过象DOS界面一样在命令提示符后面敲入命令来访问。
- 插件:功能通过集成开发环境来实现。 最低的功能应该是,列出文件的版本状态,及检入/检出文件。
软件 | 网页版界面 | 独立GUI | IDE的集成与/或插件 |
---|---|---|---|
AccuRev SCM | 有 | Windows(incl.与资源管理器整合)、Linux、Unix、OS X、BeOS | IntelliJ IDEA、Eclipse、Visual Studio |
GNU Bazaar | 可以使用一个简单的网页服务器 | Olive、bzr-gtk(GTK+)、Bazaar Explorer(Qt)、QBzr(Qt)、TortoiseBzr(Windows) | Eclipse(BzrEclipse、QBzrEclipse)、Visual Studio(bzr-visualstudio)、TextMate(TextMateBundle)、Komodo IDE |
BitKeeper | 包含 | 包含(bkd) | 未知 |
CA Software Change Manager | 包含 | 基于Eclipse的GUI | Eclipse、MS Visual Studio |
ClearCase | 包含,Clearcase网页界面 | 较老的:MS Windows自带的,类Unix系统基于Motif的GUI,[[Z/OS]]的TSO客户端。 | Emacs、Eclipse(IBM所有,Eclipse-CCase)、Visual Studio(IBM所有)、KDevelop(标准)、IntelliJ IDEA(标准基本版) |
Code Co-op | 不需要,因为整个工程在本地复制 | Windows | 未知 |
CVS | cvsweb、ViewVC及其它 | TortoiseCVS、TkCVS (Tcl/Tk)、(Windows资源管理器)、WinCVS, OS X、GTK、Qt |
Eclipse(团队)、KDevelop(标准)、IntelliJ IDEA(标准,在社区版和终极版中)、Emacs(标准VC)、Komodo IDE、BBEdit |
CVSNT | cvsweb、ViewVC及其它 | Windows、OS X、OS/400、GTK、Qt |
所有支持CVS的,加上SCCI、Bugzilla、Build的商业插件 |
darcs | darcs.cgi包含;darcsweb、Trac | 开发中;TortoiseDarcs(Windows资源管理器)、OS X(alpha) | Eclipse(eclipsedarcs)、Emacs(vc-darcs.el) |
Dimensions CM | 是 | Windows(incl.与资源管理器整合) |
Eclipse、Visual Studio、IntelliJ IDEA、XCode、Powerbuilder |
Fossil | 包含内嵌的网页服务器(UI/服务器模式),通过CGI模式可以运行多个库 | fuel-scm | 未知 |
Git | Gitweb、wit、cgit、GitLab、GitHub、gitorious、Trac、Kallithea、 Rhodecode、Deveo、Bitbucket、Stash、Springloops、Bonobo Git Server | gitk、git-gui(Tcl/Tk)、tig、 Gitbox(OS X)、TortoiseGit、qgit、gitg(GNOME/GTK)、(h)gct(Qt)、git-cola(Qt)、Git Extensions(Windows)、GitEye、SmartGit/Hg、Tower、SourceTree(OS X/Windows)、Sprout(OS X)、GitX(OS X)、GitUp(OS X)、GitKraken | Aptana 3 Beta(集成Git的Aptana Studio 3);Eclipse (JGit/EGit);Netbeans (NbGit);KDevelop;Visual Studio(Git扩展);Emacs(标准VC扩展);SAP Web IDE;TextMate(Git TextMate Bundle);Vim(VCSCommand插件和fugitive插件);IntelliJ IDEA >8.1(标准,社区和基本版);Komodo IDE;Anjuta |
GNU arch | ArchZoom | ArchWay(GTK2)、TlaLog | Emacs(标准VC) |
IC Manage | 包含 | Windows、Linux、Unix、OS X | Emacs、Cadence Design Framework、Synopsys Custom Designer |
MKS Integrity | 有 | Windows、Linux、Unix、Solaris、AIX | Eclipse、Microsoft Visual Studio、Perforce及其它。还提供支持工业标准的Source Code Control(SCC)界面[64] |
Mercurial | 包含[nb 88],Bitbucket、Trac、Kallithea、Rhodecode、Deveo | Hgk(Tcl/Tk)、(h)gct(Qt)、TortoiseHg(Windows资源管理器、Nautilus)、MacHg、
MacMercurial、Murky、SourceTree(Windows/OS X)、TortoiseHg、SmartGit/Hg |
IntelliJ IDEA(hg4idea第三方插件)、Eclipse(Mercurial Eclipse)、NetBeans、Visual Studio 2008、Emacs、Vim(VCSCommand插件)、Komodo IDE、Eric Python IDE |
Monotone | ViewMTN、TracMonotone | Monotone-Viz(GTK+)、Guitone(Qt)、Monotone Browser(GTK+、Perl) | 未知 |
Perforce | 包含,P4Web、P4FTP | Windows、Linux、Unix、OS X、BeOS | Eclipse、Visual Studio(P4SCC)、KDevelop(标准?)、IntelliJ IDEA(标准基本版)、Komodo IDE、BBEdit、Emacs(p4.el) |
Rational Team Concert | 有 | 基于Eclipse的GUI | Eclipse整合;MS Visual Studio整合(有限的) |
StarTeam | 包含 | Windows、Java、Eclipse、Visual Studio、BDS2006整合、Java命令行 | IntelliJ IDEA(标准基本版)、Visual Studio、JBuilder、Eclipse |
Subversion | 包含Apache 2模块,WebSVN、ViewSVN、ViewVC、Trac、SharpForge、sventon、Springloops、Deveo | Java、KDESVN、OS X[65](包含Finder整合)、Nautilus、Qt、RabbitVCS、RapidSVN、SourceTree(OS X)、TortoiseSVN(Windows资源管理器) | Anjuta、BBEdit、Eclipse(Subclipse、Subversive)、Emacs(标准VC)、IntelliJ IDEA(标准社区和基本版)、KDevelop(标准)、Komodo IDE、MonoDevelop(标准)、Netbeans、RabbitVCS(GEdit版)、TextMate(SVNMate插件)、Visual Studio(AnkhSVN、VisualSVN) |
Surround SCM | 有 | Windows、OS X、Linux | Dreamweaver、Eclipse、IntelliJ IDEA、JDeveloper、KDevelop、NetBeans、Powerbuilder、Visual Studio、WebStorm |
Synergy | 通过Telelogic Change界面 | Windows(incl.与资源管理器整合)、Linux、Unix | Eclipse(Telelogic所有)、Visual Studio(Telelogic所有)、IntelliJ IDEA(Telelogic所有) |
Team Foundation Server | 包含(Sharepoint Server用于网页服务) | Windows、OS X、Unix | Visual Studio、Eclipse IDE和IntelliJ IDEA(标准基本版)的Java客户端 |
Vault | 包含 | Windows、类Unix系统、OS X | Visual Studio 2003及以上、Eclipse 3.2及以上 |
Veracity | 包含 | Windows上的Tortoise界面 | 否 |
Vesta | VestaWeb | 否 | 否 |
Visual SourceSafe | 不包含;SSWI、VSS Remoting | Windows包含;Linux、OS X和Solaris使用SourceOffSite;任何有Java虚拟机的使用Sourceanywhere | Visual Studio、IntelliJ IDEA(标准,基本版) |
软件 | 网页版界面 | 独立GUI | IDE的集成与/或插件 |
历史及用户
表格说明
- 软件:应用的名称。
- 历史:简短地讲述软件的起源好发展。
- 知名用户:使用该软件作为主要版本控制系统的知名工程列表,不包括该软件自己。如果它有一个完整的列表,后边会列出该列表的链接。
软件 | 历史 | 知名用户 |
---|---|---|
AccuRev SCM | 2002年首次公开发布。 | 美国航空、福特汽车、洛克希德·马丁、Orbitz[66]、施乐、McAfee[67]、Polycom、闪迪[68]、西门子、索尼、赛门铁克[69]、Thomson Financial、威瑞森无线[70]等等。 |
GNU Bazaar | 与baz有一定关系。由Canonical公司赞助。 | Ubuntu、Launchpad、KatchTV[71]。 |
BitKeeper | 受Sun WorkShop TeamWare影响 | Linux内核(2002–2005)及很多公司[72]。 |
CA Software Change Manager | 原公司成立于1977年;CA SCM(后来被叫做CCC/Harvest)首次发布于1995年。 | 没有公司的允许,CA不会公开客户的名单。CA SCM被很多有全球开发团队的公司所使用,其中有13家位列财富100。 |
ClearCase | 最初在1990年由Atria软件开发,它所追随的概念由阿波罗电脑于1980年代在DSEE上开发。最近的版本是8.0.1,于2011年11月发布。 | IBM、阿尔卡特-朗讯、思科、摩托罗拉、西门子、爱立信、诺基亚、环球银行金融电信协会及其它世界性大组织[来源请求]。 |
Code Co-op | 第一个分布式版本控制系统,于1997年进行演示,[73]随后很快发布。 | |
CVS | 1986 首次被公开发布于1986年7月3日;基于RCS。 | |
CVSNT | 首次公开发布于1998年;基于CVS。由CVS开发者开始,目的是加入对更宽范围的开发方法和过程的支持。 | 主要由专业人员(非业余爱好者),例如:AnandTech[74]、Wachovia[75]、Wells Fargo[76]、Goldman Sachs[77]。 |
darcs | 首次被宣布于2003年4月9日。 | Mnet、xmonad、使用Darcs的项目。 |
Dimensions CM | 1980年代后期,SQL软件以“PCMS Dimensions”的名字开发(PCMS意为Product Configuration Management,产品配置管理)。经过多次兼并,该产品以“PVCS Dimensions”(1990年代,Intersolv)、“Dimensions”(2000年代早期,Merant)、“ChangeMan Dimensions”(2004年,Serena软件)及最终的“Dimensions CM”(2007年以后,Serena软件)为名发布。 | 洛克希德·马丁、欧洲空间局、富士通商业通讯系统及许多全球性公司。[78] |
Fossil | Fossil和SQLite曾经在2007年7月21日以后使用Fossil。 | SQLite、Fossil、Tcl/Tk项目 |
Git | 林纳斯·托瓦兹于2005年4月开始,随着与BitKeeper的分歧。[79] | Linux内核、Android、Bugzilla、GNOME、GNU Emacs、GRUB2、KDE、MySQL、Perl 5[80]、PostgreSQL、X.Org、Cairo、Qt开发框架、Samba、OpenEmbedded、Ruby、Ruby on Rails、Wine、Fluxbox、Openbox、Compiz Fusion、XCB、ELinks、XMMS2、e2fsprogs、GNU核心工具、DokuWiki、Drupal、LibreOffice、MediaWiki[81]、 Mono、ASP.NET MVC、ADO.NET实体框架、NuGet、jQuery及其众多插件、OpenCV、Wireshark、Django、许多公司如爱立信、微软、华为、苹果、亚马逊、LG。 |
GNU arch | Tom Lord于2001年开始,它后来变成GNU项目的一部分。Lord于2005年8月以维护者的身份辞职。 | GNU Savannah和Gna.org项目。 |
IC Manage | 由IC Manage公司开发,该公司由Shiv Sikand和Dean Drako成立于2003年。 | 许多全球性机构。[82] |
MKS Integrity | 最初由MKS软件开发。2011年5月由PTC购买。[83] | 许多全球工程和IT组织。[84] |
Mercurial | 2005年4月6日由Matt Mackall开始,随着与BitKeeper的分歧。[79]首次发布于2005年4月19日。 | Python[85]、Mozilla、OpenJDK、NetBeans、Xine、Xen、OpenSolaris、wmii、MoinMoin、Linux-HA、Pidgin、Gajim、Nginx、PyPy、SDL。 |
Monotone | 首次发布于2003年4月。 | CTWM、Xaraya、I2P[86]、Botan[87][88]。 |
Perforce | 由Perforce软件公司开发,该公司由Christopher Seiwald于1995年建立。 | 许多全球性机构[89]、FreeBSD[90]、Google[91]。 |
Rational Team Concert | 1.0版本于2008年被发布。 | IBM。 |
Revision Control System | 1985年7月。 | RCS通常(但不总是)会被其它系统所取代,比如CVS,而CVS正是源于对RCS的包装。 |
Source Code Control System | 由Marc Rochkind于1972开始(二进制历史文件,用Snobol在IBM-370上编写)[92],使用文本历史文件的SCCSv4于1977年2月18日发布[93]。同样的历史文件格式在SCCS 5.0中继续使用。[94] | 作为POSIX的代码控制工具,SCCS被广泛应用于UNIX平台,但并未被包含在许多Linux分发版本中。Sun WorkShop TeamWare使用SCCS文件。 |
StarTeam | 1.0版本于1995年[95]由StarBase软件开发,StarBase后被Borland收购(Borland后被Micro Focus收购)。 | Borland、BT、Cintas、EDS、Kaiser Permanente、Met Office、Quest软件、Raymond James、西门子及很多全球分布的公司。[96] |
Subversion | 于2000年由CVS开发者开始,目标是取代CVS。 | ASF、clang、gcc、SourceForge、FreeBSD、Google代码、KDE(直到2011年)、PuTTY、Zope、Xiph、GnuPG、CUPS、Apache OpenOffice、TWiki、WebKit、应用于CodePlex及很多全球性机构。[97] |
SVK | 作者是高嘉良和唐凤。2003年11月19日出了第一个版本,2005年5月9日1.00版,2006年12月28日2.0.0版。2006年6月5日,SVK成为Best Practical的一个产品。 | Request Tracker |
Synergy | 1988年由Caseware开始开发,称为AmplifyControl。该公司于1994年改名为Continuus,而该产品改名为Continuus/CM之后变得更加知名。Continuus在公开上市后不久于1999年被Telelogic收购;该产品被改名为Telelogic Synergy。2008年IBM收购了Telelogic,以便将其集成到它们的Rational工具套件中。该产品现在以IBM Rational Synergy闻名。 | |
Team Foundation Server | 首次公开发布于2006年3月。 | |
Vault | 首次公开发布于2003年2月。 | 未知 |
Vesta | 首次公开发布于2001年,使用LGPL。 | DEC Alpha团队、康柏Alpha团队、Intel微处理器开发。 |
Visual SourceSafe | 最初由一家叫做One Tree软件的公司创立,版本3.1。公司后被微软收购,微软于1995年左右发布了VSS的4.0版本。 | 未知 |
软件 | 历史 | 知名用户 |
参见
- 版本控制软件列表
- 自由软件托管服务比较
注释
- ^ 在ClearCase中,可以设置触发器来打开锁定模式,这已经在很多地方使用。然而,ClearCase开发通常出现在个人分支,在这种情况下每个开发者拥有他们自己的分支,因此锁定还是合并的并发模式关系不大。一旦开发者准备好将他们的代码交付到项目中,代码就被合并到主分支。
- ^ RTC不是分布式版本控制系统;但拥有某些分布式特征可以配置
- ^ 原始的Unix源码存在各种变体,但只有一个在持续维护
- ^ 当多个用户同时编辑一个文件的同一个版本时,只有其中一个可以将变化写回去。
- ^ SCCS的某些变体是免费软件,而其它的则作为商业Unix分发的一部分保持封闭。
- ^ SVK允许Subversion拥有分布式分支。
- ^ 在Subversion中,一个文件属性允许锁定模式基于每个文件。
- ^ Bazaar的critical模块是用Pyrex写的。
- ^ Bazaar bundle是一个简要的差异,有足够的额外信息来保留历史。
- ^ 二进制文件采用快照
- ^ sqlite3.c的为4 MB
- ^ Mercurial版本号是本地的;它们可以与库中的不同,这取决于按什么顺序执行合并。
- ^ Monotone的版本代表变化集,它的清单代表快照,每个版本都链接到一些清单。但清单属于遗留结构,他们不再被保存到数据库中,也不能在需要时重建。现在真正的工作发生在rosters中,它是混合的快照/变化集结构。
- ^ Veracity版本号是本地的;它们可以与库中的不同,这取决于按什么顺序执行合并。
- ^ 邪恶分身是常事。邪恶分身在SCM,而不是好莱坞 互联网档案馆的存档,存档日期2013-10-16.(英文)
- ^ 原子提交可以实现于个别检入ClearCase 7.1.1发布说明(英文)。
- ^ 见FAQ (页面存档备份,存于互联网档案馆)(英文)
- ^ darcs的每个补丁具有一个唯一标识符,不可能两次将同一个补丁合并到库中(除非使用“不安全”命令破坏性地修改历史)。
- ^ 尽管它存储(及默认显示)使用8位文件名。见FAQ (页面存档备份,存于互联网档案馆)(英文)
- ^ 使用单项版本属性(“单项工作”演示,覆盖用户定义属性 (页面存档备份,存于互联网档案馆)(英文))。
- ^ 它的消息和图形界面只有英语本地化,尽管软件被验证可以很好地运行在不同语言的操作系统上。
- ^ 由“crnl-glob”设置来控制([1] (页面存档备份,存于互联网档案馆)(英文))
- ^ Git不明确地跟踪重命名,因为从设计上它不跟踪个别文件。重命名和拆分源文件时,如果文件内容不发生显著变化,则会被检测到。
- ^ 从git-1.7.9以后(见release notes Archive.is的存档,存档日期2013-04-15(英文))。更老的版本不对提交签名,仅标签(见git标签(1)手册页 (页面存档备份,存于互联网档案馆)(英文)中的-s选项)
- ^ 自1.7.10版本起支持UTF-8文件名(MSysGit发布说明(英文))。
- ^ 对于非常大的库,Git存在一些问题。见SoC 2012 Ideas (页面存档备份,存于互联网档案馆)(英文)中“更好的大文件支持”一节和“设计一个更快的索引格式”一节。
- ^ 完全允许变化包提供全部工作流,21 CFR Part 11服从基于单项控制变化包的数字签名。
- ^ 2009 SP5加入了一项功能来合并子开发路径。
- ^ Mercurial正在进行翻译,目标语言至少包括荷兰语和汉语
- ^ 支持对主机操作系统的依赖,对Unix支持得很好,但对Windows操作系统支持得不好。见[2] (页面存档备份,存于互联网档案馆)(英文)
- ^ 可以通过用户级钩子实现
- ^ Perforce将对符号链接本身进行版本控制,但如果您通过符号链接访问它们,并不会识别出它自己的被版本控制的视图(本地文件树)。
- ^ 贯穿过程行为组件:操作顾问好操作参与者。http://jazz.net/library/article/292(英文) (页面存档备份,存于互联网档案馆)
- ^ 虽然SCCS的源码是按支持国际化写的,但实际上只有英语的消息。
- ^ 从2006版之后支持
- ^ 当且仅当移动的目标文件与源文件在同一个Subversion库中,Subversion可以移动一个文件并保存它的历史。跨库的移动需要用第三方工具,比如svk。
- ^ 从SVN 1.8开始,subversion在客户端支持改进的移动跟踪。在服务器端仍然不支持。
- ^ SVN 1.5新加入 (页面存档备份,存于互联网档案馆)(英文)。单独工具“svnmerge[永久失效链接]”(英文)提供对旧版本的合并跟踪。
- ^ 在Subversion中,标签是Subversion更通用的“低代价复制”概念的一个特例。按照约定,标签是一个副本,它会进入一个叫做“tags”的目录。因此,标签也是被纳入版本管理的。更多信息参见[3] (页面存档备份,存于互联网档案馆)(英文)。表格中部分支持的原因是,Subversion实现标签的这种方式并不符合以下要求——标签名可以被用来代替任何版本标识符,无论用户在哪儿都可以访问。如果定义被放松到包含Subversion的接近程度,这一列就会变得无意义——象每一种版本控制系统都支持分支,因此也支持标签一样。
- ^ 使用subversion服务器
- ^ v6.6a到v7.1a在亚洲版,从v7.2开始在通用版
- ^ 重命名时移除版本改变历史;旧名字不再被引用。
- ^ 仍 (页面存档备份,存于互联网档案馆)(英文)未实现
- ^ 不能在动态视图中禁用。
- ^ 使用CVSROOT/modules文件的别名。
- ^ 当加入一个文件时,CVS会记录它的执行位,但并被允许在之后改变它。
- ^ 这是一个GUI功能,它是通过TortoiseCVS和WinCVS来支持的,它们都包含/使用CVSNT。
- ^ 和CVS一样,并增加了复制库(包括“影子”库)的能力。
- ^ 使用模块/目录名或别名来创建,使用CVSROOT/modules或CVSROOT/modules2管理文件。
- ^ 要求所使用的构建工具也支持。
- ^ Darcs可以从明确的检查点部分检出,但这只适用于darcs-1库,而被适用于darcs-2库。[来源请求]
- ^ Darcs可以自动检测#!脚本,并在检出时使它们可执行。
- ^ 使用子项目功能(文档包 | 用户指南 | 将一个项目或流关联到其它对象 (页面存档备份,存于互联网档案馆)(英文))。
- ^ 可以嵌套检出,命令为“fossil open --nested”
- ^ Git FAQ (页面存档备份,存于互联网档案馆)(英文)声明,关键词扩展不是一件好事
- ^ add -i和add -p,参见git-add(1)指南页面 (页面存档备份,存于互联网档案馆)(英文)
- ^ Git FAQ (页面存档备份,存于互联网档案馆)(英文)解释,为什么经过深思熟虑,认为保留修改时间是有害的。
- ^ 在服务器端可以作为项目选项配置,在客户端可以作为用户选项配置。
- ^ commit --interactive,参见SVK::命令::提交 (页面存档备份,存于互联网档案馆)(英文)
- ^ 通过第三方工具,如Tortoise SVN。
- ^ SVN不能保留文件修改时间。如果客户端要求,它可以恢复检入时间作为最后修改时间。默认不支持。
- ^ 文件的MIME类型必须被检测为一个“人类可读”的MIME类型,即使合并工具可以与非人类可读的文件一起工作。
- ^ 独立分支, [2016-06-17], (原始内容存档于2016-03-04)
- ^ 共享库, [2016-06-17], (原始内容存档于2016-03-04)
- ^ 独立分支, [2016-06-17], (原始内容存档于2016-03-04)
- ^ 重量级检出和轻量级检出, [2016-06-17], (原始内容存档于2016-06-30)
- ^ 重定位插件
- ^ darcs没有命名的分支,不管是否在本地,分支都是通过克隆库来单独处理的
- ^ darcs send准备一组补丁,默认通过邮件发送,但也可以发送到一个文件
- ^ pull是fetch加merge
- ^ 拷贝在这之后被检测到,很象重命名
- ^ Mercurial书签 (页面存档备份,存于互联网档案馆)(英文)类似于本地分支
- ^ 通过任何方法,先把要设为不可变的文件放在一个不可变目录里,再vcheckin。
- ^ 先把不可变文件从它的原始目录mv或link到它的目的不可变目录,再vcheckin。
- ^ 通过任何方法,先把不可变文件从它的原始目录拷贝到它的目的不可变目录,再vcheckin。
- ^ 您也可以启用它,在库服务器控制面板或配置文件中,作为一个主要的偏好
- ^ 要求管理员权限。您可以使用“cvs update –e –j @commitid –j "@<commitid"”将一个变化“回滚”,但该变化和回滚会在历史中留下痕迹
- ^ 使用TortoiseCVS或WinCVS来提交变化到目标服务器并选择保留哪个文件
- ^ 二分检索可用于cvs,因此也可用于CVSNT
- ^ darcs对补丁操作,而不是对修订,在把一个给定的补丁从一个库拉到另一个时,挑选组成部分比较简单,只要依赖被满足
- ^ fossil stash支持借助注释来进行多个搁置
- ^ git stash是一个多级搁置,它可以同时搁置多个变化集
- ^ 仅当工作在本地库且没有子版本时。disapprove命令也许可以替代。
- ^ svk状态列表用于在工作副本和库之间比较,而不是在两个库之间比较
- ^ SVN二分检索工具svn-bisect. [2016-06-27]. (原始内容存档于2016-08-16) (英语).
- ^ svn状态列表用于在工作副本和库之间比较,而不是在两个库之间比较
- ^ 锁是报告形式的,在非连接状态下,不能强制执行
- ^ 单库访问用hgweb,多库从一个HTTP地址访问用hgwebdir
参考文献
- ^ CVS团队成员列表, 非GNU Savannah, GNU项目, [2016-06-13], (原始内容存档于2016-03-04) (英语)
- ^ CVS Pro, March Hare, [2016-06-13], (原始内容存档于2016-06-10) (英语)
- ^ Computer Associates, [2016-06-13], (原始内容存档于2015-11-18) (英语)
- ^ 开始使用免费的Perforce!, Perforce, (原始内容存档于2013-01-26) (英语)
- ^ 许可证的选择, Perforce, (原始内容存档于2012-01-12) (英语)
- ^ 许可证及价格, PlasticSCM, [2016-06-13], (原始内容存档于2014-12-10) (英语)
- ^ 分布式版本控制系统(DVCS)Comparisons(原文如此). Jazz Forums.[永久失效链接]
- ^ Jean-Michel Lemieux, 下一版Rational Team Concert倒计时:第II部分 – 源码控制增强, Jazz社区, [2016-06-13], (原始内容存档于2015-09-10)
- ^ Apache软件基金会, [2016-06-13], (原始内容存档于2011-03-19) (英语)
- ^ Rational Synergy, IBM
- ^ Vesta配置管理系统, Sourceforge, [2016-06-13], (原始内容存档于2016-03-10)
- ^ Vesta配置管理系统, Vesta, [2020-09-14], (原始内容存档于2020-09-09)
- ^ IBM – Rational ClearCase – 美国, [2016-06-13], (原始内容存档于2016-06-01)(英文)
- ^ 变化集. March Hare软件公司. [2012年5月8日]. (原始内容存档于2012年5月11日).(英文)
- ^ Git服务器协议, [2016-06-13], (原始内容存档于2014-10-06)
- ^ 存档副本 (PDF). [2012-01-12]. (原始内容 (PDF)存档于2011-11-13).
- ^ SCM新闻 – Kronos将软件配置管理转向AccuRev. AccuRev. 2004年4月26日 [2014年1月26日]. (原始内容存档于2014年2月2日).(英文)
- ^ 为跨平台的异地团队提高性能和可扩展性. AccuRev. 2008年9月23日 [2014年1月26日]. (原始内容存档于2014年2月2日).(英文)
- ^ bzr从1.14起支持换行符转换. Doc.bazaar-vcs.org. [2014-01-26]. (原始内容存档于2009-04-13).(英文)
- ^ 本国语言和ClearCase的支持策略(英文),来自IBM支持
- ^ 大文件扩展 (页面存档备份,存于互联网档案馆)(英文)(从Hg Rev.:2.0以后)
- ^ [4] 互联网档案馆的存档,存档日期2014-02-10.(英文)来自Perforce用户指南
- ^ [5] 互联网档案馆的存档,存档日期2014-02-09.(英文)来自Perforce用户指南
- ^ Perforce公共知识库 – 首页. Perforce.com. [2014年1月26日]. (原始内容存档于2007年8月14日).(英文)
- ^ Perforce知识库:国际化和本地化. Kb.perforce.com. 2010年10月21日 [2014年1月26日]. (原始内容存档于2012年2月8日).(英文)
- ^ Perforce知识库:国际化和本地化. Kb.perforce.com. 2010年10月21日 [2014年1月26日]. (原始内容存档于2013年1月30日).(英文)
- ^ Seapine软件发布Surround SCM 2009 (页面存档备份,存于互联网档案馆)(英文)
- ^ 签名 (页面存档备份,存于互联网档案馆)(英文) – SVK Wiki
- ^ 企业级GitCentric | AccuRevGit. Accurev.com. [2014年1月26日]. (原始内容存档于2012年10月17日).(英文)
- ^ Bazaar关键词插件. Wiki.bazaar.canonical.com. 2005年9月5日 [2014年1月26日]. (原始内容存档于2014年2月1日).(英文)
- ^ Bazaar交互插件. Launchpad.net. [2014年1月26日]. (原始内容存档于2014年2月1日).(英文)
- ^ Bazaar外部插件. Launchpad.net. [2014年1月26日]. (原始内容存档于2014年2月3日).(英文)
- ^ 对给定的扩展名忽略合并操作. [2016-06-16]. (原始内容存档于2016-03-04).(英文)
- ^ bzr-svn. Launchpad.net. [2014年1月26日]. (原始内容存档于2013年11月11日).(英文)
- ^ bzr-git. Launchpad.net. [2014年1月26日]. (原始内容存档于2013年11月11日).(英文)
- ^ bzr-hg. Launchpad.net. [2014年1月26日]. (原始内容存档于2014年4月2日).(英文)
- ^ IBM DeveloperWorks文章《IBM Rational ClearCase:最好的十种触发器 (页面存档备份,存于互联网档案馆)》(英文)
- ^ 清单 (页面存档备份,存于互联网档案馆)(英文),Fossil文件格式
- ^ Fossil导入和导出. Fossil-scm.org. 2014年1月22日 [2014年1月26日]. (原始内容存档于2014年2月2日).(英文)
- ^ git-submodule(1)指南页面. Kernel.org. 2013年2月15日 [2014年1月26日]. (原始内容存档于2014年2月2日).(英文)
- ^ git-read-tree(1)指南页面. kernel.org. 2014年8月24日 [2014年1月24日]. (原始内容存档于2014年1月22日).(英文)
- ^ Mercurial关键词扩展页面. Mercurial-scm.org. [2014年1月26日]. (原始内容存档于2016年3月10日).(英文)
- ^ Mercurial记录扩展页面. Mercurial-scm.org. 2013年8月27日 [2014年1月26日]. (原始内容存档于2016年4月6日).(英文)
- ^ 子库 – Mercurial. Mercurial-scm.org. [2016年4月22日]. (原始内容存档于2021年5月13日).(英文)
- ^ 子库 – Mercurial. Mercurial-scm.org. 2013年9月3日 [2014年1月26日]. (原始内容存档于2021年5月13日).
- ^ Mercurial时间戳扩展. Mercurial-scm.org. 2012年4月24日 [2014年1月26日]. (原始内容存档于2016年3月7日).(英文)
- ^ hgsubversion页. Mercurial-scm.org. 2013年8月28日 [2014年1月26日]. (原始内容存档于2016年1月30日).(英文)
- ^ Hg-Git Mercurial插件. Hg-git.github.com. [2014年1月26日]. (原始内容存档于2013年3月16日).(英文)
- ^ Mercurial转换扩展页面. Mercurial-scm.org. 2013年11月29日 [2014年1月26日]. (原始内容存档于2016年2月16日).(英文)
- ^ P4用户指南. Perforce. [2014年9月18日]. (原始内容存档于2014年10月22日).(英文)
- ^ P4用户指南. Perforce. [2014年9月18日]. (原始内容存档于2014年10月15日).(英文)
- ^ P4用户指南. Perforce. [2014年9月18日]. (原始内容存档于2014年10月15日).(英文)
- ^ 关键词替换. Svnbook.red-bean.com. [2014年1月26日]. (原始内容存档于2013年9月3日).(英文)
- ^ 外部定义. Svnbook.red-bean.com. [2014年1月26日]. (原始内容存档于2013年9月28日).(英文)
- ^ Mercurial重定位. Mercurial-scm.org. 2012年10月25日 [2014年4月23日]. (原始内容存档于2016年1月22日).(英文)
- ^ 故障6463 – enh:检索库. [2012年5月8日] (英语).
- ^ Mercurial搁置扩展页. Mercurial-scm.org. 2013年11月7日 [2014年1月26日]. (原始内容存档于2016年1月21日) (英语).
- ^ Mercurial回滚扩展页. Mercurial-scm.org. [2016年5月11日]. (原始内容存档于2016年5月13日) (英语).
- ^ graft -core命令(从Hg Rev.2.0开始). Selenic.com. [2014年1月26日]. (原始内容存档于2014年2月1日) (英语).
- ^ Mercurial迁移扩展页. Mercurial-scm.org. 2012年5月12日 [2014年1月26日]. (原始内容存档于2016年6月17日) (英语).
- ^ Mercurial记录扩展页. Mercurial-scm.org. 2013年8月27日 [2014年1月26日]. (原始内容存档于2016年4月6日) (英语).
- ^ Perforce Broker. Perforce.com. [2014年1月26日]. (原始内容存档于2013年11月16日) (英语).
- ^ Perforce知识库:“Cherry Picking”集成. Kb.perforce.com. 1990年1月1日 [2014年1月26日]. (原始内容存档于2012年3月9日) (英语).
- ^ 支持的集成——PTC集成. Mks.com. 2012年9月10日 [2014年1月26日]. (原始内容存档于2012年7月25日).(英文)
- ^ La Chose : web agency and software maker – agence web et développement de logiciels (页面存档备份,存于互联网档案馆)(英文)
- ^ 当SCM遇见Web 2.0 – Orbitz的酷程序 | 软件发配置管理和敏捷软件开发. Accurev.com. [2014年1月26日]. (原始内容存档于2014年2月2日) (英语).
- ^ McAfee网页服务团队采纳建议,每年节省了$500,000. AccuRev. [2014年1月26日]. (原始内容存档于2014年2月2日) (英语).
- ^ 闪迪使用AccuRev SCM软件获得竞争优势. AccuRev. [2014年1月26日]. (原始内容存档于2014年2月2日) (英语).
- ^ 赛门铁克通过迁移实现重大收获. AccuRev. [2014年1月26日]. (原始内容存档于2014年2月2日) (英语).
- ^ 在线会议 – 威瑞森无线如何克服障碍,使交付软件更迅速. Accurev.com. 2011年6月1日 [2014年1月26日]. (原始内容存档于2012年11月20日) (英语).
- ^ 谁使用Bzr. Bazaar-vcs.org. 2005年9月21日 [2014年1月26日]. (原始内容存档于2012年3月28日) (英语).
- ^ 大规模分布式软件配置管理系统. BitKeeper. [2014年1月26日]. (原始内容存档于2014年2月28日) (英语).
- ^ 分布式源码控制系统. Portal.acm.org. 1997年5月18日 [2014年1月26日] (英语).
- ^ 如何在Windows上建立源码控制而不需要花一毛钱。. AnandTech. [2012年5月8日]. (原始内容存档于2012年5月4日) (英语).
- ^ 结合包含所有文件的标签和只包含一个子集的标签. [2012年5月8日]. (原始内容存档于2008年8月28日) (英语).
- ^ 可以很快从unix客户端连接到CVSNT. [2016-06-13]. (原始内容存档于2016-09-16) (英语).
- ^ gserver客户端错误. [2012年5月8日]. (原始内容存档于2015年6月20日) (英语).
- ^ Serena软件的客户 (页面存档备份,存于互联网档案馆)(英文)
- ^ 79.0 79.1 迈向更好的SCM:Revlogs和Mercurial (PDF). 2006年7月. (原始内容 (PDF)存档于2012-02-13) (英语).
由Matt Mackall于渥太华Linux座谈会提出
- ^ 得到Perl源码并用它工作. dev.perl.org. [2014年1月26日]. (原始内容存档于2014年2月4日) (英语).
- ^ Git. MediaWiki. [2012年8月1日]. (原始内容存档于2012年5月16日) (英语).
- ^ IC Manage:工业级数据管理. (原始内容存档于2009-05-03) (英语).
- ^ PTC使用MKS Integrity产物 — PTC Integrity为软硬件开发生命周期管理设置了新标准. Mks.com. [2014年1月26日]. (原始内容存档于2011年6月13日) (英语).
- ^ 客户 — PTC Integrity. Mks.com. [2014年1月26日]. (原始内容存档于2011年3月20日) (英语).
- ^ 转向前进. Python.org. [2014年1月26日]. (原始内容存档于2014年1月22日) (英语).
- ^ 取得I2P代码. geti2p.net. [2014年7月3日]. (原始内容存档于2014年7月1日) (英语).
- ^ 访问版本控制. botan.randombit.net. 2014年5月26日 [2014年7月3日]. (原始内容存档于2014年7月14日) (英语).
- ^ 使用Monotone的项目. wiki.monotone.ca. 2011年2月6日 [2014年7月3日]. (原始内容存档于2014年7月3日) (英语).
- ^ 存档副本. [2006-07-02]. (原始内容存档于2006-06-15).(英文)
- ^ Perforce用于FreeBSD开发. (原始内容存档于2016-04-29) (英语).
- ^ [6] (页面存档备份,存于互联网档案馆)(英文)
- ^ Rochkind, Marc J., 源码控制系统 (PDF), IEEE对软件工程的汇报 SE–1 (4), 1975年12月, SE–1 (4): 364–370 [2016-06-13], (原始内容存档 (PDF)于2011-05-25)(英文)
- ^ PWB UNIX产品声明. (原始内容存档于2021-07-14) (英语).
- ^ 比较SCCS 4文件格式 (页面存档备份,存于互联网档案馆)和SCCS 5.0文件格式 互联网档案馆的存档,存档日期2014-08-19.(作为sccsfile 4的帮助文件),见存档副本. [2014-08-17]. (原始内容存档于2014-08-19).
- ^ Starteam®. (原始内容存档于1998-05-07) (英语).
- ^ 客户一览. (原始内容存档于2007-08-10) (英语).
- ^ 存档副本. [2006-05-30]. (原始内容存档于2006-06-13).(英文)