0


Git与SVN的血泪之争取!

水篇幅,不喜欢凑热闹的跳过

从代码丢失说起

作为一个辛勤的码农,代码就是一块块砖,一天天要垒高墙,那是还是个意气风发的炸毛小伙,快乐地码着代码。突然有一天,感觉代码不是很漂亮,所以删掉了文件,同时个人有强烈的洁癖,删文件一定要shift+del。所以,那一次真的很酸爽,把整个工程直接销毁,从此后悔了一辈子!
有了第一次的代码丢失的经历,让我得以思考,有什么办法能把祖传代码保存起来呢?

从现在说起

十几年过去了,我从炸毛小伙变成了油腻大叔,是个程序员都知道有种代码托管这个玩意。没听过SVN也听过Git,这都有啥好说的~
本来团队也是用着SVN好好的,突然有位同事站出来,我觉得Git好!顿时严肃的气氛笼罩整个会议室!但想想作为一个合格的项目经理,怎么可能去激发矛盾,所以安抚好同事,说下来咱们好好研究研究。

Git和SVN的区别

有人会说了,Git就是比SVN好,SVN一无是处。能理解程序员思维,但从项目管理或者公司管理的方面来看这个问题,Git和SVN只是一个版本管理的工具而已,只有合不合适,没有好坏之分。咱们就好好来说说他们之间的优缺点了。

架构方式

Git和SVN最显著的是架构方式的不同,SVN是集中式的管理,Git是分布式的。在组织结构上,Git要复杂于SVN。
在这里插入图片描述上图是git的结构,服务端作为远程仓库,客户端都会有一个本地仓库,是远程仓库的一个拷贝。如果远程仓库不可用了,宕机或者网络不可达时候,client又可以作为服务端来提供临时的协作。由于有本地仓库,代码又可以提交到本地仓库,一些代码的修改可以立即提交,就能实现离线修改代码啦。
而SVN是简单的CS架构,所有的代码都必须提交到服务器,本地只有拉取的版本的代码。而且脱离服务器,那就只能自己玩玩了,提交、查日志什么操作都不行了。

拉取仓库

Git是要完整拉取仓库下来,包括所有历史的提交记录,而SVN只能拉取对应的版本代码。由于这个特性,如果在Git上提交大文件,然后再修改多几次,这就是让人头疼的事了。Git在处理大文件上性能下降很快,所以没事不要在Git上丢一堆大文件。相反的,在SVN提交大文件上性能要比Git好很多。

分支

SVN分支是作为存储库中的目录创建的,这种目录结构是SVN分支的核心痛点。当分支要合并时,如果你不是唯一合并变更的人,这意味着冲突、丢失的文件和混乱的更改困扰着你的分支。这导致了一个复杂的分支和合并模型,管理起来也很耗时。
Git分支只是对某个提交的引用,重量轻但功能强大。可以随时创建、删除和更改分支,而不会影响提交。比如你需要测试一个新特性或者你发现了一个bug,可以创建一个分支,进行修改,将提交推到中央仓库,然后删除这个分支。

使用方法

Git由于的设计理念,中间相比SVN有更多的概念,有复杂的指令支持。这样对比起来,SVN就变得简单了,不需要记忆太多的命令,而且SVN界面支持比较友好一点。

  • Git命令:
   add                     Add file contents to the index
   am                      Apply a series of patches from a mailbox
   archive                 Create an archive of files from a named tree
   bisect                  Use binary search to find the commit that introduced a bug
   branch                  List, create, or delete branches
   bundle                  Move objects and refs by archive
   checkout                Switch branches or restore working tree files
   cherry-pick             Apply the changes introduced by some existing commits
   citool                  Graphical alternative to git-commit
   clean                   Remove untracked files from the working tree
   clone                   Clone a repository into a new directory
   ...

还没完,后面还有一两百个命令,就不列举了~

  • SVN命令:
   add
   auth
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   ...

SVN命令比较简洁,只有二十多个

权限控制

Git只要是贡献者就有同样的权限;而SVN允许更灵活地控制权限,连一个文件都能设置不同权限,真正武装到牙齿。

总结

通过上面的对比,简单总结下优势,看东西要看优点,要有发现美的眼睛。

SVN优势

  1. 可以保存大文件而不丢失过多性能
  2. 使用简单,学习成本较低
  3. 权限控制更灵活,同时集中式管理更能控制权限

Git优势

  1. 优秀的分支管理
  2. 更活跃的社区和支持
  3. 更好地支持自动化和DevOps

后续

当初选择SVN是基于项目团队的能力和公司对代码的敏感度。目前团队成员不是很多,SVN还是够用的,后续可以慢慢切换Git来满足团队的发展,怎么说也在把CI/CD搭建起来了,需要更灵活和强大的代码管理。

标签: git svn

本文转载自: https://blog.csdn.net/vincentho1024/article/details/136637940
版权归原作者 小何善 所有, 如有侵权,请联系我们删除。

“Git与SVN的血泪之争取!”的评论:

还没有评论