关于git和svn的比较,求大家给点看法。

2013-10-17 10:03:29 +08:00
 jtn007
自己平时都用的git,svn用得比较少。网上也看了各种比较的文章,总感觉还是比较抽象。大家实际运用中比较明显的一些对比求大家分享一下,谢谢~
11349 次点击
所在节点    程序员
48 条回复
jtn007
2013-10-17 14:03:07 +08:00
@xdeng git也可以用小乌龟的
jtn007
2013-10-17 14:05:24 +08:00
@welsonla 那有什么样的项目适合用svn么?git应该还不是所有各方面都比svn好吧?
Golevka
2013-10-17 14:09:03 +08:00
个人用的话果断git更好; 多人开发没试过用git所以不知道
feuvan
2013-10-17 14:11:56 +08:00
HackerOO7
2013-10-17 14:17:25 +08:00
git+repo 公司的android源码我都是这样管理的。
angelface
2013-10-17 14:20:23 +08:00
场景不一样, 优点可能是缺点。

你要说你在什么场景下用。
jtn007
2013-10-17 14:27:09 +08:00
@angelface 恩,是的,主要是我svn不怎么用,所以不是很清楚,我就是想知道在哪种情况下用哪个比较好
skydiver
2013-10-17 14:35:29 +08:00
@welsonla 用新版的svn就不会每个子目录都有.svn目录了
jianghu52
2013-10-17 16:01:50 +08:00
说一下我个人的感受。
svn本身偏向于c/s的开发,或者说是偏模块儿化或者松耦合的程序。svn可以单模块儿的上传。也可以单模块儿的更新。因为是单模块的更新,因此开发者完全不需要考虑其他开发者的变更,自己的开发也是完全在基础版本上更新来的。
对于svn来说,以前的瀑布开发很合适。一个开发组里面只要有一两个比较厉害的人,带着其他水平不怎么样的人做东西,其他的人都不提交代码,全部交给PL来合并代码,并维护svn。这样的话代码质量容易维护。在我看来,svn对于团队来说,update是所有的人事情,但是commit只是组长的事情。
git更适合b/s开发。现在的开发强调小步快跑。也就是说,要求不论什么时候,都要可以有一个快速的可以运行的版本。这样一来,就要时刻强调代码的完整性,最好每一版都是可以运行的。在svn上不是不可以做到,但是相比git比较麻烦。git是应该所有成员都update,都commit的。每次不管其他谁要commit代码,必须先保证本地的版本同服务器上的版本相同。这样一来,从逻辑上就保证了每一次commit代码之后,都是服务器都是一个完整的版本。
git更要求整个team的组员都要有一定的水平,因为你每一次commite之前,都要去check一遍版本,如果有了别人的变更,你必须要先把变更合并了。这个时候,就需要考虑别人的变更是否会对你的变更有影响,这需要你对业务的熟悉,同时还要对其他人的编码熟悉。相当于原来组长的活,变相的分解成了组员的活。
jianghu52
2013-10-17 16:07:08 +08:00
个人试想了一下,在某种情况下svn还是占优势的。那就是有巨多的人在开发一个极其松耦合的程序。
假设你开发这个a模块儿,不管怎么折腾,都不会对其他模块有影响,其他人也一样。那么你就只需要up,commit自己的模块儿就好了。这样的话,如果所有的人开发完成,svn就是一个完整的版本。而不需要其他人来merge。
如果用git来做的,是,你可以自己创立一个分支自己玩,但是最后还是要有一个人来merge这巨多的人的代码。
kennyworld
2013-10-17 16:15:26 +08:00
git在分支管理与合并上有明显的优势。
jatsz
2013-10-17 16:25:16 +08:00
影响我的是速度啊,速度,有的速度你就喜欢频繁提交了。
不过这个可能跟我用cygwin的git有关,tortoiseSVN实在是太慢了,遇到SVN的服务器在国外,有的你想喊FK。
jayceefun
2013-10-17 16:49:02 +08:00
我觉得从功能的强大上比较的话 git秒杀svn
andyhu
2013-10-17 19:14:13 +08:00
svn在每个子目录下都要生成一套.svn目录,很麻烦
sdpfoue
2013-10-17 22:45:32 +08:00
svn能做到的,工作流git都可以轻松搞定
git能做的,大部分svn只有呵呵的份
falconeye
2013-10-17 23:22:53 +08:00
git能快速切换分支,svn的分支是一个新目录,下载也要很长时间。
xingzhi
2013-10-17 23:37:37 +08:00
用了 git 之后,再也不想回去用 svn 了。
上面99%的意见都是支持 git
zythum
2013-10-17 23:39:17 +08:00
@falconeye svn 有switch名片可以切分支。不需要下载全量的。

朱一公司用的svn 个人项目用的git

个人感觉基本没有什么区别。 都有对应的开发方式。唯一的区别是svn是中央管理。commit 都是直接 commit 到server的 git 是commit 到本地 再 push 到server。
分支合并都是一样一样的。没有git做得到svn做不到的事情。
zythum
2013-10-17 23:40:17 +08:00
还有是git不会有树冲突 svn再add 和 delete 操作之后合并分支再多人开发的时候会有树冲突的情况。
luikore
2013-10-18 04:13:21 +08:00
svn的优势是有些老人习惯了svn不愿意转到git, 他们会yy出各种svn的优点, 把那些人踢掉就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/85842

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX