代码管理工具有:1、CVS;2、SVN;3、Git;4、VisualSourceSafe;5、ClearCase;6、Mercurial;7、Perforce;8、GitLab。CVS(Concurrent Versions System)是代码管理工具诞生以来最早出现的一名成员。
1、CVS
CVS(Concurrent Versions System)是代码管理工具诞生以来,最早出现的一名成员了。不过可惜的是拥有悠久历史的它,不得不在当前的时代浪潮下安静的退出舞台。cvs使用Client/Server架构,项目小组的每一位开发人员都会去记录到一个CVS Server档案库中,当小组项目开发人员编辑完自己的CVS Server后,会将其上传到一个公共的CVS Server档案库中。
CVS是一个C/S系统,是一个常用的代码版本控制软件。主要在开源软件管理中使用。与它相类似的代码版本控制软件有subversion。多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。但是由于之前CVS编码的问题,大多数软件开发公司都使用SVN替代了CVS。
2、SVN
Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。
主要功能:
- 目录版本控制:CVS 只能跟踪单个文件的历史, 不过 Subversion 实作了一个 “虚拟” 的版本控管文件系统, 能够依时间跟踪整个目录的变动。 目录和文件都能进行版本控制。
- 真实的版本历史:自从 CVS 限制了文件的版本记录,CVS 并不支持那些可能发生在文件上,但会影响所在目录内容的操作,如同复制和重命名。除此之外,在 CVS 里你不能用拥有同样名字但是没有继承老版本历史或者根本没有关系的文件替换一个已经纳入系统的文件。在 Subversion 中,你可以增加(add)、删除(delete)、复制(copy)和重命名(rename),无论是文件还是目录。所有的新加的文件都从一个新的、干净的版本开始。
- 自动提交:一个提交动作,不是全部更新到了档案库中,就是不完全更新。这允许开发人员以逻辑区间建立并提交变动,以防止当部分提交成功时出现的问题。
- 纳入版本控管的元数据:每一个文件与目录都附有一組属性关键字并和属性值相关联。你可以创建, 并儲存任何你想要的Key/Value对。 属性是随着时间来作版本控管的,就像文件內容一样。
- 选择不同的网络层:Subversion 有抽象的档案库存取概念, 可以让人很容易地实作新的网络机制。 Subversion 可以作为一个扩展模块嵌入到 Apache HTTP 服务器中。这个为 Subversion 提供了非常先进的稳定性和协同工作能力,除此之外还提供了许多重要功能: 举例来说, 有身份认证, 授权, 在线压缩, 以及文件库浏览等等。还有一个轻量级的独立 Subversion 服务器, 使用的是自定义的通信协议, 可以很容易地通过 ssh 以 tunnel 方式使用。
- 一致的数据处理方式:Subversion 使用二进制差异算法来异表示文件的差异, 它对文字(人类可理解的)与二进制文件(人类无法理解的) 两类的文件都一视同仁。 这两类的文件都同样地以压缩形式储存在档案库中, 而且文件差异是以两个方向在网络上传输的。
- 有效的分支(branch)与标签(tag):在分支与标签上的消耗并不必一定要与项目大小成正比。 Subversion 建立分支与标签的方法, 就只是复制该项目, 使用的方法就类似于硬连接(hard-link)。 所以这些操作只会花费很小, 而且是固定的时间。
- Hackability:Subversion没有任何的历史包袱; 它主要是一群共用的 C 程序库, 具有定义完善的API。这使得 Subversion 便于维护, 并且可被其它应用程序与程序语言使用。
3、Git
GIt是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。目前也是最流行的一个代码管理工具,市场上大部分的公司在代码管理工具选择上都对其独有的青睐。Git在安装后,也是通过url去找到远程库,并在本地生成一个.git本地库。项目小组开发人员在开发工具上配置好git后,在负责对应模块编写开发完成后,可将其提交到本地库。然后将远程项目先拉取一次,拉取时,可选择分支,再通过提交到本地库信息,将其推送到远程所选对应分支中。
Git优势:
- 适合分布式开发,强调个体。
- 公共服务器压力和数据量都不会太大。
- 速度快、灵活。
- 任意两个开发者之间可以很容易的解决冲突。
- 离线工作。
4、VisualSourceSafe
这款软件是网易公司的产品,是运维管理系统的一种有效的基础级的常用工具。这款软件最初的名字叫SourceSafe,是一所小公司的产品,92年曾经获了较佳微型管理系统奖,随后直接被网易公司并购。但网易公司并购的只不过是sourcesafe的Windows最新版本,在国外还有另外2家企业各自获得了持续开发和销售这款软件的Mac最新版本和Unix最新版本的批准,在MS买入vss以后,大部分没有对vss进行任意的开发,MS内部本身也无需vss。
软件功能:
- 防止用户无意中丢失文件。
- 允许回溯到以前版本的文件。
- 允许分支、共享、合并和管理文件版本。
- 跟踪整个项目的版本。
- 跟踪模块化代码(一个由多个项目重用或共享的文件)。
5、ClearCase
ClearCase 是 IBM Rational 公司的旗舰产品之一,是全球领先的软件配置管理工具,它广泛地应用于众多的企业级软件工程实践之中,拥有众多的企业级用户。
ClearCase 具体的说是做配置管理的工具,只是 SCM 管理工具其中的一种。是 RATIONAL 公司开发的配置管理工具,类似于 VSS,CVS 的作用,但是功能比 VSS,CVS 强大的多,而且可以与 WINDOWS 资源管理器集成使用,并且还可以与很多开发工具集成在一起使用。但是对配置管理员的要求比较高。而且 RATIONAL 的产品一般都很贵。如果自己找到 CRACK 的话就没有技术支持了。
6、Mercurial
Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。
软件优势:
- 更轻松的管理。传统的版本控制系统使用集中式的 repository,一些和 repository相关的管理就只能由管理员一个人进行。由于采用了分布式的模型,Mercurial 中就没有这样的困扰,每个用户管理自己的 repository,管理员只需协调同步这些repository。
- 更健壮的系统。分布式系统比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响。
- 对网络的依赖性更低。由于同步可以放在任意时刻进行,Mercurial 甚至可以离线进行管理,只需在有网络连接时同步。
7、Perforce
Perforce是一种流行的商业版本控制和协作软件,它主要用于对软件和代码进行版本管理和协作。Perforce被广泛应用于大型企业和组织,用于管理和协作跨引擎和平台的软件开发项目,如游戏开发、硬件设备、医疗设备等等。
软件优势:
- 轻便快速的SCM工具
- 真正的客户端/服务器系统
- 对共享文件系统没有依赖性
- 逻辑变更为一个操作单位
- 灵活的客户端视图
- 强大的分支(反映)功能
- 将更改要求和更改成效进行关联
- 预算低工数少
8、GitLab
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。
应用特点:
- Web框架使用RubyonRails。
- 基于MIT代码发布协议。
- 需要gitolite协同工作
延伸阅读
SVN优于 CVS 的地方
- 原子提交:一次提交不管是单个还是多个文件,都是作为一个整体提交的,所以要么全部提交成功,要么就是全部不成功,这样就不会引起数据库的不完整和数据损坏。
- 重命名、复制、删除文件等动作都保存在版本历史记录当中。
- 对于二进制文件,使用了节省空间的保存方法。(简单的理解,就是只保存和上一版本不同之处)
- 目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。
- 分支的开销非常小。
- 优化过的数据库访问,使得一些操作不必访问数据库就可以做到。这样减少了很多不必要的和数据库主机之间的网络流量。
文章标题:代码管理工具有哪些,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/48362