以下内容是从公司团队协作开发角度阐述本人观点,如有雷同,纯属巧合。
1.svn已成熟
目前svn已经发展成熟,而git正在茁壮成长。环境搭建方面,svn可以使用Subversion Edge来快速创建,按照文档,十分钟左右我们可以搭建完毕,内置的viewvc可以让我们在图形界面中创建仓库,管理用户,管理权限等。而git了?至少目前我没有发现此类的工具。客户端方面,svn的客户端已经堪称完美,比如TortoiseSVN或者与eclipse集成的插件,让我们操作svn都变得简单。集成方面,svn历史悠久,基本所有的开源软件都可以与svn进行集成,并且文档比较齐全。
2.svn简单易学
不得不承认,svn简单易学,也比git容易理解。他的workflow非常的clear,checkout->modify->commit,流程符合我们的思维,也容易理解。
3.git真的快么?
提起git的优点,很多人第一反应时说git快,我想问的是svn慢么?首先我们的工作环境基本都是局域网,局域网中去checkout、commit能慢?起码我们公司在5秒内可以完成。其次,git的快是指提交的时候快,而不是push的时候,在我们的团队开发中,很多时候都需要你push,你光提交对于你的战友来说毫无意义。最后,git适合离线工作,我想说,我这种苦逼很少有离线工作的时间。
4.svn真的不安全么?
很多人都说,git不怕版本库丢失,因为每个人手里都有一个版本库。再反问下,svn怕?第一,svn服务器挂掉或者版本库被删除几率很小,如果一个公司连这个都不重视,他还重视什么了?第二,你们难道不对svn的版本库进行备份么?如果连这些基本的都不做,那我只能说愿上帝保佑你。
5.创建分支,打tag不方便?
确实,git创建分支很简单,只需要创建一个2KB文件,并且切换分支、合并分支都很简单,而svn相对确很复杂。针对这方面,考虑下,我们创建分支的机会多么?按照正常的工作流程,我们是在发布新版本的时候才会创建分支、打tag,你们公司不会每天都发布新版本吧?并且svn创建分支也不是那么糟糕吧?
6.svn迁移到git不容易
首先,你得进行知识培训,让你的团队了解git、学会使用git。其次,你得配置好你的git服务器,包括用户管理、权限管理、数据安全等。再者,你得调整与svn相关的其他软件,比如我们常用到redmine、jenkins。
最后,我想说,git真的很牛逼,我也在使用,在某些特定的场合或者在您的团队,git可能就能体现出他的价值。