git-svn 版本控制

Git是分布式版本控制系统,与SVN相比拥有比较明显的优势。git-svn是一种桥接工具,在server利用svn的情况下,可以让大家在客户端享受git提供的便利。

   下面简单的介绍下git的功能和特点。

   一、GIT的特点

  分布式和集中式的最大区别在于开发者可以本地提交。每个开发者机器上都有一个服务器的数据库。

  从一般开发者的角度来看git有以下功能:

1:从服务器上克隆数据库(包括代码和版本信息)到单机上。

2:在自己的机器上创建分支,修改代码。

3:在单机上自己创建的分支上提交代码。

4:在单机上合并分支。

5:新建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

6:生成补丁patch),把补丁发送给主开发者。

7:看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

8:一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

二、git给大家带来的好处(大部分来着网络):

1.   分布式的应用提供了本地的版本管理功能:不需要远程或架设服务器就能做到本地版本管理.(每个程序猿都有一个终极梦想:在飞去Newworks的飞机上用Macbook写一个不超过1000行的代码,然后就搞定了世界七大根服务器,然后再本地提交一下就Ok了,而不用担心没有vpn连不到公司内网,当网络连接之后git client会帮你完成这个工作,你的粉丝就能看到这段代码了)

2.   不污染子目录的track文件:svn每个子目录都要扔一个.svn.这个实在是.. .(我想很多人都碰到过svnlock folder的情况.实在让人气急败坏.实际上.svn文件就是罪魁祸首.各种clean up无果.deleltesvn up异常.真是.. )

3.   强大的branch:超轻量级的branch建立.(实际只是建立文件指针).推荐根据的gitworkflow的开发流程.workspace分成几区.masterdev feature hotfix区等.开发层次就出来了.

4.   merge工具的强力:git根据commit ticket依次再进行一次merge.提高了merge成功率.避免svnmerge中的难堪.即使merge失败.也不会生成乱七八糟的版本文件.简单修改后.commit就是神奇的git gc由于git本身不保存文件之前的差异文件.只保存每个文件的快照.所以在频繁修改大文件的情况下会造成git目录变得肥大不堪.git早就有了解决方案.git gc,会在.git目录下生成一个packfileidx文件.只保存文件差异.满塞!.

5.   Githubgithub作为新一代的程序员靠实力,凭作品交流的sns+code host平台.geek精神贯彻整站.cool!.相对而言googlecode则正在走下坡路.

 

   三、简单的回顾一下源代码版本控制的发展,我大概还对下面这几个有比较深的印象:

Visual SourceSafe:微软的版本控制工具,仅支持Windows操作系统。虽然简单好用,但是仅适用于团队级开发,不能胜任企业级的开发工作。 

    Clearcase: IBM旗下Rational公司(2003年被IBM收购)的一款重量级的软件配置管理 (SCM, Software Configuration Managemen)工具。与CVS和VSS不同,Clearcase涵盖的范围包括版本控制、建立管理、工作空间管理和过程控制。从最初的软件配置计划,到配置项的确立,从变更控制到版本控制,Clearcase贯穿于整个软件生命周期。 Clearcase支持现有的绝大多数操作系统,但它的安装、配置、使用相对较复杂,并且需要进行团队培训。 
    CVS: Concurrent Versions System。CVS 是有着三十年以上的时间的考验。CVS是开放源代码软件世界的一个伟大杰作,有人认为如今开源成功发展的幕后功臣之一当CVS莫属。Linux 的创始人 Linus 就把 Linux 的成功,归因于 CVS。由于CVS功能强大,跨平台,支持并发版本控制,而且免费,所以它在全球中小型软件企业中得到了广泛使用。CVS最大的遗憾就是缺少相应的技术支持,许多问题的解决需要自已寻找资料,甚至是研究源代码。CVS是一个典型的服务器/客户端软件,有UNIX版本的CVS 、Linux版本的CVS和WINDOWS版本的CVS。CVS支持远程管理,项目组分布开发时一般都采用CVS。 
    SVN: SubVersion。CVS纵然易用,但也有一些与生俱来的缺点,比如CVS不支持文件改名,只对文件控制版本而没有针对目录的管理,等等。之后CVS 的创始人之一在其现任公司的资助下开发了SubVersion,用以替代CVS。SubVersion 的设计目的就是针对CVS 的一些弱点进行改进。

点击在新窗口中浏览此图片
SVN的版本控制流程

    CVS纵然是一个老牌的工具产品,并也对开源事业有贡献,但CVS的命令行操作着实让一些使用者头疼。在对一个特定版本的文档Check in的时候,还要输入一长串的路径名、文件名。在操作易用性上与CVS形成对比的是微软家族的VSS。作为微软的产品,在图形界面化操作上自不用多言,但 VSS只能适用于小团队的开发工作。VSS是很好的入门级工具,但它的一些功能也太过于“入门”,在验证密码、保存密码这些基本功能上处理的不尽人意。适用于大型软件开发的有“中坚级”的Clearcase,用它来管理一些小型的项目管理有些“大材小用”。Clearcase支持目录版本管理、异地团队开发、视图、多服务器等强大功能,所以一些大公司把它做为一、二级产品管理用,但同样它的价格也不菲。CVS是开源的,免费的,更何况它还有一个理想的替代者——SVN。SVN的设计专门针对CVS的问题作了改进,命令的设计更为合理,对二进制文档和目录这样的数据加强了控制能力,并且吸收了VSS的 lock-modify-update(release)的模式和modify-merge模式的优点这两种方式在一定程度都支持并作了优化,没有提高使用的复杂度——这是难能可贵的。由于SVN的设计结构很好,所以很容易为它开发客户端,好像很快就有了tortoiseSVN,Eclipse插件等很多客户端,还有WEB模式的,可以远程管理,支持RSS更改订阅。  

1.       Git一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。

  

   四、为了给大家一个直观的数据说明,用Google thend看一下这几个关键词的搜素趋势。

 如果Google是可以被信任的话,可以看出:

(图一)cvs一直遥遥领先,这有点出人意料;Git的搜索在2009年超过了svn,悲剧的svn则保持着下降的趋势。

(图二)能说明我们的美国同行比较怀旧吗,cvs的搜索热度主要来自美国。

(图三)而中国的程序猿还在Svn的怀抱。

(图四)土耳其人比较热衷git。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值