TortoiseSVN简称SVN,是一款集中式版本控制软件。项目使用中我们还经常会听到hg和git的分布式版本控制软件。
下面让我举例来说说我对使用过的svn的认识以及分析其他两个软件的不同之处与优势。
svn最大的特点就是需要有一个集中的版本控制中心,所有人员提交代码都将提交到中央服务器中。
- 开发人员拥有本地拷贝并且可以在线下工作.
- 在本地文件系统上可以进行快速的构建.
- 可以快速的重构.
- checkout和checkin的速度都会非常的快.
- 终于有了原子提交.
- 轻量级的Branching和Tagging操作.
- 基本的合并操作.
- 个人/本地的branching操作仍然需要再次checkout.
- 因为仍然是集中式的,而不是分布式的.
- 基本的合并点追踪.
- 没有办法合并重命名文件,需要在提交前使用一些扩展的跟进冲突解决机制.
- 代码库有时会崩溃,专家/开发人员比例已经很低,如1:100.
其中提到的个人/本地的branching操作任然需要再次checkout的,所以当服务器连不上的时候,有时候是很痛苦的。本地的数据版本管理不了。我们项目中有时候还会出现代码的冲突,所以这就要求团队必须要分工明确,各施其职,尽可能每个人在code的时候不要在相同的地方。不然经常出现冲突和合并上的错误的。(当然这个是可以避免的,这就需要团队的协作和沟通了)
使用SVN是简单的,你要上手是非常快的。
Subversion提倡单一的中央代码库模型,不提倡大规模的branching.在一个使用持续集成的环境中,其实也就是我们每天工作的环境,这个模型是非常合适的.这也是Subversion为什么这么流行,应用范围这么广的原因之一.
另外svn还对二进制的有很好的支持。
在某种特定情况下,SVN也有其相应的优势,如果你需要对版本控制系统难以合并的二进制文件(如word文档或者ppt)进行管理的话,你就应该回 退到独占式checkout的锁机制下,这就需要一个集中式的系统.另外,SVN更容易上手:你有一个代码库,所有的更改都指向这个代码库,如果你知道如 何创建,提交以及checkout,那你就可以开始使用它了,而像branching,更新这些操作在使用过程中自然也就慢慢熟悉了.SVN拥有一些非常 好用的客户端软件,而且几乎所有的主流IDE都有与SVN集成的插件,这些都能够为你使用SVN提供很大的帮助.
下一篇文章将介绍我去了新公司后使用了TortoiseHg分布式版本软件的一些心得。