SVN和Git的比较,已经项目中的实际应用!

1、你的团队是通过什么方式来做版块控制的?您的选择是什么?
我们的团队都用的是SVN,我自己用的是git。SVN比较适合快速的反应,而git各方面都很不错。

SVN的优势就是就是学习简单,使用简单。有乌龟在,共享代码变得很简单。但是也就是个类似网盘的作用了。在版本控制方面,除了不分好坏保存历史,也没有其他的功能了。感觉很弱。

而git的问题就是目前似乎没有一个比较好的桌面集成的工具。tortoisegit还是不成熟。而且git的优势就在于丰富的命令行操作和组合。失去了这个集成环境反而比SVN的要麻烦。所以目前只有命令行才能够充分得到git的好处。在团队开发之中很难推广。

我也试过在团队里面推荐git,但是不知道是学习的原因还是什么的。遇到了一些困难,特别是新手。对VCS概念本身不熟悉,又突然使用复杂的git,概念太多导致有畏难情绪。所以git我目前也只是个人配合github使用。团队就再没用过了。

2、您能简单谈谈您的选择愿意,以及为何做出这样的选择?

git的功能强大,充分利用了命令行的灵活性。它将版本控制的各个阶段分的很开,这样就允许你做很灵活的改变。git的分布式设计也是很舒服的。虽然在团队开发里面,我们通常直接架设内网SVN服务器,根本不会出现断网的情况。但是git的分布式还有别的优势——首先,每个人可以有一次仓库,仓库可以有多个分支,可以几个人在一个独立的公共分支工作,工作完成以后再合并。SVN的分支代价很高,分支切换也很慢。基本上用SVN我们的工作就是直接拷贝整个项目来进行的了。偶尔还得用内网工具直接传递项目目录,很不方便。而且据老大说SVN的分支合并有Bug,我自己就从来没有用过,项目也不允许在SVN上做分支合并。导致我们在SVN的基础上也得用一些手动的原始版本管理方法(比如拷贝项目)。

如果git能够克服命令行的问题——比如说团队里所有人都熟悉git——那么它无疑使最好的版本控制工具了。在性能、功能、灵活性上都有巨大的优势。如果熟悉命令行,git的使用也是很简单的。git应该是未来的一个趋势。相信有越来越多的团队会注意到吧~~

3、您在使用这些工具或者方法的时候,分享一些非常有用的小技巧:)

恩,SVN就不说了,操作简单是一个好处,但是也造成了工作的单一。我在很长时间通过svn和git同时管理一个项目repo。是这样的,首先update SVN的项目,然后git init建立git项目,然后忽略.svn文件,并提交整个代码。最后把git仓库提交到局域网公共服务器上。那么SVN和git就完全独立了。SVN用于最终代码搞定的时候提交,平时用git进行合作、分支等等。要注意的是SVN也需要ignore掉.git目录。通常我们不管git和SVN的同步问题。需要小组范围合作,就git建立新的分支,提交(不管之前是什么版本),然后合作,做完了以后找个人(通常是我自己)用SVN将结果提交进SVN服务器。问题就是message得重写了。然后git分支合并入主分支。完成。这样基本上SVN版本和git版本就是一对多的关系。老大要版本,我们给SVN的,但是我们自己小范围用git。老大还笑称我们用git的是”无政府小组织“,嘿嘿。

这也许也是缓解SVN易学易用和git功能强大的一个折衷方案吧。

git还有很多小技巧,比如修改历史等等,可以参看progit.org,这本书很不错。git的原理简单,很容易就能理解,这给使用git的人一种很可靠的感觉。因为即使git挂了,也可以用手动的方式从仓库恢复所有数据,当然git挂了是完全不可能的。而且这样嘚设计也可以让写git工具变得简单。比如libgit2就提供了一个良好的操作git仓库的库,而且提供了很多语言的绑定,特别是Python和Ruby。可惜Lua绑定很久没有维护,现在已经挂了(libgit2还没有出beta,接口特性还没有稳定下来,经常会改动API,所以会这样)。

总的来说,推荐新团队和新项目直接用git,老团队可以用上面我说的办法过渡,SVN仅仅记录最终开发的阶段性成果,git实际做项目管理。因为git的快速高效,每个阶段实际上是很短的,所以SVN实际上也是和以前一样用。

基本上,我们的SVN已经是一个功能一次提交了,只有git才会保存这个功能的完整开发记录。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值