选择Git好还是SVN?

当你看到这个题目的时候,相信你可能已经有自己的答案了。总会看到各种文章来比较git和svn的优缺点,在这里,我想说的是,只有适合自己的,并且有利于团队合作的,那就是最好的,没有必要分那个好那个不好,因为他们都有自己各自的优缺点。

说到git和svn的比较,其实我更加偏向与git,可能是由于我最先学习,最对使用git的原因吧。想要了解版本控制系统详细的历史,可以点击这里

git
git

 

svn
svn

git和svn的大致比较:

1、git是分布式的,而svn不是

GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支等,可以等到网络恢复时再次向版本库中提交代码,这些都是非常方便的。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。而svn在网络中断时则不能提交自己的更改,当你网速不好或者网络中断时,用起来可能会极其不爽。

同样,这种分布式的操作模式对于开源软件社区的开发来说也是个巨大的恩赐,你不必再像以前那样做出补丁包,通过email方式发送出去,你只需要创建一个分支,向项目团队发送一个推请求。这能让你的代码保持最新,而且不会在传输过程中丢失。

有些谣言传出来说subversion将来的版本也会基于分布式模式。但至少目前还看不出来。

2、GIT把内容按元数据方式存储,而SVN是按文件

所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

3、GIT分支和SVN的分支不同

分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。所以,经常会发生有些分支被遗漏的情况。

然而,GIT分支并不是一个另外的目录,创建GIT分支只是新建一个新的分支指针而已,所以Git 的分支可谓是难以置信的轻量级,GIT分支创建速度非常快,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。

4、GIT没有一个全局的版本号,而SVN有

目前为止这是跟SVN相比GIT缺少的最大的一个特征。你也知道,SVN的版本号实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。因为GIT和SVN从概念上就不同,我不知道GIT里是什么特征与之对应。如果你有任何的线索,请在评论里奉献出来与大家共享。

5、GIT的内容完整性要优于SVN

GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

6、svn相比git的优点

SVN具有的悲观锁的功能,能够实现一个用户在编辑时对文件进行锁定,阻止多人同时编辑 一个文件。这一悲观锁的功能是 Git 所不具备的。对于以二进制文件 (Word文档、PPT演示稿) 为主的版本库,为避免多人同时编辑造成合并上的困难, 建议使用SVN做版本控制。

以上是git与svn的具体比较,当然如果你面临如何选择难题的话,建议你选择使用git,因为git有着其他版本控制系统无法比拟的优点,但是当你非常重视版本库的文件权限,那么你可以选择svn,不过在决定前可以试试git和svn这两种版本控制系统,然后再选择使用那一个系统。

 

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: 选择Git好还是SVN? (http://blog.lxx1.com/634)

如果博客对您有帮助,请给我 打赏


科技爱好者

工科学生大四在读,专业嵌入式开发,喜欢计算机,喜欢单片机,喜欢各种各样美好的东西,相信科技正在改变世界! 这是我的 个人博客

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.