




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主流源代码管理系统工具/managetool/20080120/3837.html源码管理工具,svn,cvs,hg,git,VSS什么是源码管理工具简单地说, 源码管理工具是一种记录代码更改历史, 可以无限回溯, 用于代码管理,多个程序员开发协作的工具.常见的功能有:1.更新到任意一个版本(不用担心代码的修改错误,和丢失等) 2.日志记录(说明修改目的) 3.分支,标签(用于协作开发, 和便于阶段性产品发布) 4.合并,比较(用于多人,多分支之间的代码合并,比对等)为什么要使用源码管理工具你可能会想, 需求出来了, 老大把我要做的功能告诉我,我去写代码就行,完事了,我再打包发给他 让他加入到整个代码中,然后测试.有问题再反馈回来,我再修改,再打包.这样不是也挺好吗?当然我要说,这样当然是可以的,但是如果你们要修改同一个文件怎么办?你们还得事先商量确定 某个时间某个人不能修改等等. 或者新建不同的名字的文件,最后由一个人来合并.如果你的团队不是3,5个人,而是30,50人呢?你这样的沟通和重复性工作的成本会有多高?于是聪明的程序员便有了版本控制的设想, 继而有了源码管理工具的不断推陈出新.如果你稍微开发过一个正式的项目,想必你对cvs,svn,hg,git这些也一定 有所耳闻.下面就简单根据我个人的一些项目经验来介绍下2类的源码管理工具.源码管理工具介绍简单地可以将源码管理工具分为两类:svn这样的集中式的,和hg这样的分布式的.因为我个人对svn和hg比较熟悉,所以下面就以这二种具体的工具为代表来说明二者的优劣.第一次接触源码管理工具就是svn, 想着那时对于什么增量修改,历史记录等概念不清楚时, 也曾在写了2小时的代码后,提交svn时失误而导致文件被删除的悲惨历史. 惨痛的教训让我开始了系统地 学习svn的过程, 一天后,我明白了它的原理, 这时会很晰明确地知道每个命令的结果, 也会很清楚地知道 自己怎样做才是最合适的.简单总结一些best practice:Check in early, Check in often(这个是很重要的,尤其是多个开发的团队,这样可以大大减少冲突的可能) 发现冲突第一时间解决(不能将冲突留给你的同事,发现了第一时间解决, 如果需要要向冲突的相关同事沟通交流) 只提交需要提交的文件(一些临时文件不要提交,不能污染整个代码库) 熟悉常用的命令,如add/rm/up/ci/co/stat/merge/diff等大致一个月后,我逐渐明白一个源码管理工具对于一个项目的意义和作用. 自此后, 我去公司实习我会第一时间询问 他们是否使用源码管理工具,使用哪种工具. 而对于自己的一些业余项目,我也通常是使用google code来管理起来, 甚至当前的这些博客的源码(不过最近已经迁移到了hg的一个hosting service下,原因请参考下文).到了去年的晚些时候, 开始知道了分布式源码管理工具, 了解了它与集中式工具的区别和优势. 也听到了一个小故事,说是Linux的作者Linus大牛不满svn, 于是自己花了一周(?抱歉具体时间记不得了)写了个分布式的代码管理工具,于是就有了大名鼎鼎的git.我们不去羡慕Linus大牛的英明神武(啊,真是牛啊!), 我们来关心他的作品分布式代码管理工具. 它与集中式的 究竟有什么区别呢?我以hg为例来说明与svn的不同:1.每个work copy(也就你自己检出的代码)都具有完整的代码库信息, 这也就是说:对于检出的代码,我们无论是查看log, 提交代码, 或者删除等都是本地的操作,而无需与服务器打交道 2.只有push/pull两个操作(其它的初始化等操作不计入内)与服务器打交道,其它的日常操作都是本地3.集中式的版本文件信息(所有的版本文件信息都位于项目根目录下的.hg目录下,而不像svn每个目录下都有一个.svn目录)4.简单的忽略文件设置:.ignore文件中可以简单地设置你不希望提交到版本库的文件(支持通配符)5.简单地说,我更喜欢hg的原因是,我无需再为了查看log而等半天(与服务器通信), 这样大大地方便了网络不好, 分布式的开发环境.一些建议我不说使用了代码管理工具的公司就是好公司,但是我肯定没有使用代码管理工具的公司肯定不是好公司.同样, 使用了代码管理工具的程序员不一定就是好程序员,但是没有使用代码管理工具的程序员肯定不是好程序员(至少 没有经历过一个真正的多人协作的项目).以我个人的项目经历,我极力向我的读者建议:如果你没有使用过代码管理工具,请赶紧去学习一种(个人推荐hg).如果你还使用的是svn, 推荐你去尝试下hg.如果你在做一些业余的项目,也建议你使用代码管理工具,即使是一个人. 甚至你也可以将文档, 知识管理, 博客等也用代码管理工具版本化起来.当然这里提到的几种代码管理工具都是有GUI版本的和命令行版本的, 个人还是极力推荐使用命令行, 为什么,可以参考这里如何提高程序员的生产率.结论代码管理工具对程序员而讲是必不可少的开发工具, 选择一个合适的工具并且熟知它的常用命令,会让你的 开发(你的团队的开发)变得事半功倍.后记推荐几个常用的hosting服务, 常用的如下:google code(支持svn, hg) bitbucket(hg, 极为推荐, 免费提供1个private和任意多个public的代码库) github(git)当然上述的都是免费的服务,建议大家尝试下.VSS、SVN、Clearcase,在此做一个小小的总结一、 Visual Source Safe( 简称 VSS )VSS是微软的产品,是配置管理的一种很好的入门级的工具。VSS最初的名字叫Source Safe,是一家小公司的产品,92年曾经获了最佳小型管理工具奖,然后立即被微软收购。但是微软收购的只是source safe的Windows版本,在美国还有另外两家公司分别获得了继续开发和销售source safe的Mac版本和Unix版本的许可,在MS买进vss之后,基本上没有对vss进行任何的研发,MS内部自身也不用vss。SourceSafe长得很象早先土气的文件管理器,的确难看。但是难看不碍事,SourceSafe的优点可以用8个字来概括“简单易用,一学就会”,这个优点是它老妈Microsoft遗传下来的,是天生的。虽然SourceSafe并不是免费的,但是在国内人们以接近于零的成本得到它,网上到处可以下载啊。当然Microsoft也不在乎这个小不点的软件,它属于“买大件送小件”的角色。如果你合法地得到Visual Studio,你就得到了免费的SourceSafe。评价如下:易用性:易学易用是 VSS 的强项, VSS 采用标准的 windows 操作界面,只要对微软的产品熟悉,就能很快上手。 VSS 的安装和配置非常简单,对于该产品,不需要外部的培训(可以为公司省去一笔不菲的费用)。只要参考微软完备的随机文档,就可以很快的用到实际的工程当中。功能:VSS 的配置管理的功能比较基本,提供文件的版本跟踪功能,对于 build 和基线的管理, VSS 的打标签的功能可以提供支持。 VSS 提供 share (共享 ) 、 branch( 分支)和合并( merge) 的功能,对于团队的开发进行支持。 VSS 不提供对流程的管理功能,如对变更的流程进行控制。 VSS 不能提供对异地团队开发的支持。此外 VSS 只能在 windows 平台上运行,不能运行在其他操作系统上。安全性:VSS 的安全性不高,对于 VSS 的用户,可以在文件夹上设置不可读,可读,可读 / 写 , 可完全控制四级权限。但由于 VSS 的文件夹是要完全共享给用户后,用户才能进入,所以用户对 VSS 的文件夹都可以删除。这一点也是 VSS 的一个比较大的缺点。总体成本:VSS 没有采用对许可证进行收费的方式,只要安装了 VSS ,对用户的数目是没有限制的。因此使用 VSS 的费用是较低的。技术支持:由于 VSS 是微软的产品,可以得到稳定的技术支持。二、 SVN(Subversion) - CVS(Concurrent Version System)的替代和升级版本先说说CVS,CVS是开源代码的配置管理工具,其源代码和安装文件都可以免费下载。记得在学校读研的时候,学校实验室的代码全部都用CVS管理,为啥?很简单,两个字:免费!它与Eclipse配合,基本上Java的代码编写,代码管理和版本管理都可以“免费”搞定了。SVN(Subversion)是近年来崛起的版本管理工具,被誉为cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。虽然在 2006年时SVN的使用族群仍然远少于传统的CVS,但已经有许多开放源码团体决定将CVS转换为SVN。已经转换使用SVN的包括了 FreeBSD、Apache Software Foundation、KDE、GNOME、GCC、Python、Samba、Mono 以及许多团体。许多开发团队换用SVN是因为 Trac、SourceForge、CollabNet、CodeBeamer等专案协同作业软件以及Eclipse、NetBeans等IDE提供SVN的支援整合。 除此之外,一些自由软件开发的协作网如SourceF除了提供CVS外,现在也提供专案开发者使用SVN作为原码管理系统,JavaForge、Google Code以及 BountySource 则以SVN作为官方的源码管理系统。2009年,绝大多数CVS服务已经改用SVN。CVS已经停止维护。易用性 : Subversion支持linux和windows,更多是安装在linux下。svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。目前业界评价的SVN易用性正在提高。功能:SVN 的功能除具备 VSS 的功能外,还具有:它的客户机 / 服务器存取方法使得开发者可以从任何因特网的接入点存取最新的代码;它的无限制的版本管理检出 (checkout :注 1)的模式避免了通常的因为排它检出模式而引起的人工冲突;它的客户端工具可以在绝大多数的平台上使用。同样, SVN 也不提供对变更流程的自动管理功能。安全性:一般来说, SVN 的权限设置单一,无法完成复杂的权限控制;但是 SVN 通过 SVN ROOT 目录下的脚本,提供了相应功能扩充的接口,不但可以完成精细的权限控制,还能完成更加个性化的功能。总体成本:SVN 是开发源码软件,无需支付购买费用。技术支持:同样因为 SVN 是开发源码软件,没有生产厂家为其提供技术的支持。如发现问题,通常只能靠自己查找网上的资料进行解决。三、 ClearCaseRational公司的ClearCase是软件行业公认的功能最强大、价格最昂贵的配置管理软件。ClearCase主要应用于复杂产品的并行开发、发布和维护,其功能划分为四个范畴:版本控制、工作空间管理(Workspace Management)、构造管理(Build Management)、过程控制(Process Control)。ClearCase通过TCP/IP来连接客户端和服务器。另外,ClearCase拥有的浮动License可以跨越UNIX和 Windows NT平台被共享。ClearCase的功能比CVS、SourceSafe强大得多,但是其用户量却远不如CVS、SourceSafe的多。主要原因是:ClearCase价格昂贵,如果没有批量折扣的话,每个License大约5000美元。对于中国用户而言,这无疑是天价。用户只有经过几天的培训后(费用同样很昂贵),才能正常使用ClearCase。如果不参加培训的话,用户基本上不可能无师自通。易用性:ClearCase 的安装和维护远比 VSS 复杂,要成为一个合格的 ClearCase 的系统管理员,需要接收专门的培训。 ClearCase 提供命令行和图形界面的操作方式,但从 ClearCase 的图形界面不能实现命令行的所有功能。如果Unix/Linux服务器上安装了Samba服务,可以直接通过Windows下Clearcase的客户端直接访问源代码,相对比较简单。功能:ClearCase 提供 VSS, SVN所支持的功能,但不提供变更管理的功能。 Rational 另提供了 ClearQuest 工具提供对变更管理的功能,与 VSS不同, ClearCase 后台的数据库是专有的结构。 ClearCase 对于 windows 和 unix 平台都提供支持。 ClearCase 通过多点复制支持多个服务器和多个点的可扩展性,并擅长设置复杂的开发过程。安全性:ClearCase 的权限设置功能与 SVN 相比, SVN 有独立的安全管理机制, ClearCase 没有专用的安全性管理机制,依赖于操作系统。总体成本:要选用 ClearCase ,需要考虑的费用除购买 license 的费用外,还有必不可少的技术服务费用,没有 Rational 公司的专门的技术服务,很难发挥出 ClearCase 的威力。如现在网上虽有 ClearCase 的破解软件,但尝试应用的公司大多失败的缘故。另外,对于 web 访问的支持,对于变更管理的支持功能都要另行购买相应的软件。技术支持:Rational 公司已被 IBM 公司收购,所以有可靠的售后服务保证。四、总结工具对比一览表特性 VSS SVN ClearCase易用性 功能 安全性 总体成本 技术支持 以上几种工具的总结如下: 1. VSS 的使用简便易学,但 VSS 的功能和安全性较弱,且只对 windows 平台进行支持,建议作为项目配置管理的入门时采用的工具;2. SVN 的安全性和版本管理功能较强,可以实现异地开发的支持,但 SVN 安装和使用多采用命令行方式,学习曲线高,同时不提供对变更管理的功能,对于小型团队,可以采用 SVN 进行管理。3. ClearCase 功能完善,安全性好,可以支持复杂的管理,但学习曲线和学习成本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单杠考试题及答案
- 中外儿童文学经典阅读与写作知到智慧树答案
- 家庭医生签约服务考核试题(附答案)
- 呼叫中心服务员中级工模拟练习题(含答案)
- 中西医结合内科学进展知到智慧树答案
- 中西医临床内科学知到智慧树答案
- 2025版挖掘机销售与售后服务合同范本
- 2025年度保密及竞业禁止协议书-针对航空制造业
- 2025年度山林承包经营权转让及绿化养护服务合同
- 2025年度电信固网运营服务协议书标准范本
- 水泥路施工安全知识培训课件
- 2025年秋季学期(统编版)二年级上册语文教学工作计划及教学进度表
- 2025年福建省厦门市【辅警协警】笔试真题(含答案)
- (2025年标准)委托他人要账协议书
- 2025-2030中国青少年无人机教育课程体系构建与创新能力培养研究
- 2025年金融消费者权益保护考试题与答案
- 中学2025年秋季第一学期开学工作方案
- 《跨越百年的美丽》课件 中职语文上册
- GB 11122-2025柴油机油
- 2025年河南开封产城融合投资集团有限公司招聘考试笔试试题(含答案)
- 大便常规检查
评论
0/150
提交评论