如何集成一套并发版本控制管理系统

        以前在项目组作配置管理工作的时候,自己研究和学习了一些基于CVS的配套工具,现推荐给大家。这些工具基本上完全免费,且能完美集成在一起实现版本管理、工作空间管理、分支管理、web访问、邮件自动通知、Issue跟踪、配置状态和统计报告、产品集成等功能。大家也可以去探索一些更好更实用的工具,也欢迎与我分享。

CVS(Concurrent Versions System)

   1. Server:CVS/CVSNT

   在UNIX/Linux环境下安装使用CVS,在Win环境下使用CVSNT。相对来说,UNIX环境更稳定些,但使用较不方便。可以根据开发环境比较选择就好。

   2. Client:Command Line/ Lincvs/ WinCvs

   在UNIX下开发,一般使用命令行了,一些习惯于命令的朋友也一直使用命令行操作;不习惯的可以使用Lincvs,也很好用。Eclipse是目前很多公司都在使用的编辑工具,和CVS集成得太完美了,建议采用java、c/c++开发的朋友一定试试。Eclipse还集成很多其它工具和插件,比如junit、ant、代码规范检查等。Windows下很多都是采用WinCVS,1.0的版本生成版本树时会丢失分支,在2.0的版本已经解决这个问题。

   3. Web:CvsWeb/ viewcvs/ cvstrac

   首先推荐的是viewcvs,界面很不错,还可以集成一些perl模块来显示文件版本树,也可以在线进行版本比较。

   4. 与IDE集成:igloo/cvsin

   我找到的这两个工具的版本都比较老了,没有找到新版本,试用的时候不是很稳定,支持所有提供SCC接口的开发工具,比如VB、VC等。

   5. Bug跟踪工具:Bugzilla/cvstrac/Bugfree

   Bugzilla功能不错,但用户界面实在不敢恭维,不太符合中国人的使用习惯,如果你有时间,把界面修改修改还可以用。cvstrac功能也不错,特别是时间线的功能,还有与代码的关联和web浏览配置库。Bugfree也可以来做Bug 跟踪,php语言编写吸收了MicroSoft的Bug跟踪的特色,符合国人使用习惯,目前已经发布3.0版本,可以根据需要客户化支持LDAP。

   6. 配置库变更邮件自动通知:cvsnotify/ cvsmail

   cvsnotify的功能不错,可以发html格式的邮件,邮件的超连接可以与viewcvs集成。很重要的一点是,cvsnotify配置采用xml,可定制性很强,而且自动监测Checkin的文件,保证一次性检入的文件发在一封通知邮件里,而不是检入一个文件发一封邮件。cvsnotify1.9.0.9之前不支持中文,我经过好几天与devguy协调后,进行了修改,现在可以支持中文。cvsmail也可是不错的工具,安装后设定好就可以使用了,还可以和cvstrac结合,实现Bug跟踪。

   7. 入库自动检查代码规范:checkstyle        

   checkstyle是针对java的代码规范检查工具。当然,c/c++就比较多了,大家可以在网上查查。这些工具可以和commitinfo一起,实现入库前自动检查。达到没有满足代码规范就不能入库的作用,比人为检查代码规范省事多了。

   8. 配置统计和报告:statcvs/cvsplot

    statcvs的功能很强大,统计很多数据,包括开发人员、代码、文件、log信息、目录大小等类别,比自己手动统计方便多了。

SVN (Subversion)

Subversion是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改,Subversion允许把数据恢复到早期版本,或是检查数据修改的历史,Subversion可以通过网络访问它的版本库,从而使用户在不同的电脑上进行操作。相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion,个人认为最好用VisualSVN server 服务端和 TortoiseSVN客户端搭配使用。

1. 服务器 VisualSVN Server

        Subversion支持Linux和Windows,更多是安装在Linux下。
          SVN服务器有2种运行方式:独立服务器和借助Apache。2种方式各有利弊。
          SVN存储版本数据也有2种方式:Berkeley DB和FSFS。因为Berkeley DB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

2. 客户端 TortoiseSVN (小乌龟)

Subversion的客户端有两类,一类是WebSVN等基于Web的,一种是以TortoiseSVN为代表的客户端软件。前者需要Web服务器的支持,后者需要用户在本地安装客户端,两种都有免费开源软件供使用。

3. SVN和CVS的区别

  3.1 版本编号方面 
  例如,我们的版本库为A,其中有文件a,b,c。 
  在SVN中,新版本的版本号不是针对某个特定文件的,而是针对整个库而言的。提交了5次和提交了6次,文件a有可能不同,也有可能相同,即1.0版和1.1版可能相同。因为第6次提交有可能是因为文件b或c进行了修改。而在CVS中则相反,每次更新可能只对文件的版本号进行修改,即a文件的1.0版和1.1版是肯定不同。 
  SVN的全局性版本编号为SVN带来了诸多的优势:如对目录或文件执行拷贝,无论涉及多少文件,SVN不需要对单个文件依次执行拷贝命令,仅仅需要建立一个指向相应的全局版本号的一个指针即可。 
  3.2 目录的版本控制 
  CVS只能对文件进行版本控制,不能对目录进行版本控制,这就导致CVS失去了很多功能: 
  a. 没有移动操作 
  CVS里没有移动(move)这个操作,当人为进行文件移动操作时,CVS只能注意到,一个文件在一个位置被删除了,而在一个新位置创建了另外一个文件。由于它不会连接两个操作,因此也很容易使文件历史轨迹丢失。所以使用CVS时,每个文件的位置一定要谨慎的选择。 
  b. 没有重命名操作 
  CVS里没有重命名(rename)这个操作,人为的对文件进行重命名会使得命名前后的文件失去历史联系,而记录历史本来是版本管理的主要目的。 
  c. 没有拷贝操作 
  CVS中没有拷贝(copy)这个操作,人为的拷贝对CVS而言,只能看到新的文件的增加,而不能记录拷贝源文件和目标文件之间的联系。 
  而SVN从很大程度上避免了这些不足,SVN将目录作为一类特殊的文件来处理。当目录中的子目录/文件被删除、重命名、或新的子目录/文件被创建时,目录的内容将发生改变。因此,SVN象记录普通文件的修改历史一样记录对目录的修改历史,当发生文件/目录的移动、重命名或拷贝操作时,SVN能够准确记录操作前后的历史联系。同样,像对文件的不同历史版本进行比较一样,SVN支持对目录的不同历史版本的比较,清晰展现目录的变化历史。 

  3.3 原子性提交

  CVS和SVN同样作为SCM版本控制管理工具,SVN的原子性提交可谓是技高一筹啊! 
  SVN提交文件,只有当全部文件修改都成功入库,该提交才变得有效。一旦中断,SVN将会自动执行“回滚”(rollback)操作。SVN 这种机制保证所有的修改要么全部入库生效,要么一个也不入库。由于SVN的原子性提交特性和全局版本编号方式,当提交成功完成时,一个唯一的、新的全局版本编号产生,而提交时用户提供的日志信息与该新的版本编号关联,只进行一次存储(区别于CVS的按文件重复存储)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值