这种情况下是否 git 比 svn 好?

2015-06-29 09:43:25 +08:00
 ifconfig

之前看到git和svn的骂战,当然在这不是找骂了,希望大家帮忙分析看看。

现在的情况是测试服和正式服都是两份svn代码,所以问题来了

1.每次测试更新到正式,组里的成员都要记录测试改了哪些文件,然后把每个文件路径发给组长去覆盖到正式版。(因为测试超前正式太多,不能一次用rsync同步所有过去)

2.假设我在本地做了A,B,C三个功能,这三个功能又是在同一个文件,但这次我只想上A功能,怎么解决?svn貌似有分支,但是不鼓励并且在OS X上的客户端都没找到有相关功能。

现在每次从测试版更新到正式版都是一个捏汗的过程,万能的v神,有解决方案吗?

2856 次点击
所在节点    问与答
12 条回复
FrankFang128
2015-06-29 09:50:48 +08:00
有 git 和 svn 不能共存的「非黑即白」思维的人就不要跟他说话了。

你明明就是需要分支功能。
谁说SVN不鼓励分支了?

解决方案就是好好用 SVN 的分支。做好合并。

用两个源管理代码是怎么想的。

这么看来还是统一切到 git 大改一下,保证一个源才能以绝后患。

代码是你的,我只是瞎BB。
crazyxin1988
2015-06-29 09:55:05 +08:00
印象中svn的分支功能稍微蛋疼,特别是两个分支同时开发
git branch很爽
以前svn也没用好 现在窝就用git了
heaton_nobu
2015-06-29 10:05:32 +08:00
我们的svn分支合并时也出现各种冲突问题,试用git还是有同样的问题存在,也同样想找好的解决办法,请大神赐教。
StackGao
2015-06-29 10:06:35 +08:00
几个人的小团队的话git和svn没啥区别, 就是本地多了个仓库随时看历史.



大点的团队是这么用git的:


按功能拉分支, 开发完成并且单元测试通过后 merge进主分支.


这样保证了主分支的代码永远是稳定可发版的. 而且随时可追溯和回滚.
ifconfig
2015-06-29 10:26:12 +08:00
从未想过要和svn分手,只是真心不够逼格,原谅我
BigDecimal
2015-06-29 10:33:11 +08:00
我也纳闷楼主为何要搞两个源?从测试到UAT再到正式,不都是一个源解决的吗。至于你所说的A、B、C三个功能在同一个文件中,只上A功能,那么把B、C两个功能屏蔽掉,只升级A不行吗?

另外,没用过git,只用过Win下的SVN,觉得用SVN管理代码已经足够好用了。SVN下拉分支很常见,可以解决不同功能的并行开发,为什么不鼓励呢?很奇怪。。。


@heaton_nobu 有冲突很正常,但最好解决完所有的冲突再进行下一步的开发

@StackGao 你所说的拉分支然后再合并到主干,show log,回滚什么的,SVN同样都有
heaton_nobu
2015-06-29 10:41:36 +08:00
@BigDecimal 解决冲突只能靠人工吗?如果修改的文件很多怎么办,做合并的人又无法确定该如何处理冲突,要所有程序员拉过来一起处理吗?有没有一个比较好的工具或者机制能避免这种冲突呢?
love
2015-06-29 10:43:21 +08:00
如果开发流程分支用得多用SVN不是找罪吗,GIT分支比SVN方便无数倍
linzy
2015-06-29 10:50:29 +08:00
建议好好看下git flow
YuJianrong
2015-06-29 10:51:11 +08:00
1. 没听说过svn不鼓励分支的说法。svn的经典repo安排就是branch,tag和trunk,能不鼓励分支吗?没分支功能的客户端我还没听说过,另外不行的话上命令行不就行了吗? 顺便分支合并所有的版本管理软件策略都是一样的,同样的做法svn会有冲突git也会有,这一点不能作为选择版本管理软件的依据。
2. 你们要用的本来就是分支,dev(你们的测试)过一段时间merge到pre-release上,pre-release打好补丁(补丁也要打回dev)就merge到release上,这是最常见的工作流程了。
3. git鼓励每个feature建一个branch,svn确实不鼓励。不过原因其实是因为svn建一个branch的成本还是很高的,不像git切换branch那么迅速,建好一个branch做完一个小feature就不再用不符合svn的哲学。在这一点上如果你们是各个feature分别开发,最后想要哪个就merge哪个的话确实用git稍微合适一点。注意这样做除非你们解耦做得好,要不最后解决feature间merge造成的冲突成本也在所难免。

总之在我看来这两个版本管理软件差别不大(我都用得很熟),尤其是在repo只有少数几个分支,git每次push都进master还有gerrit这类的软件来挡一下的情况下。不要被git光环迷惑觉得有个git就能拯救你们的repo,好好分析问题所在建立最合适你们的工作流程才是最重要的。
BigDecimal
2015-06-29 11:09:04 +08:00
@heaton_nobu 貌似只能人工,只能一个个文件的解决。冲突的文件很多说明各个功能块的开发没有分配协调好吧,并且只是N(N>1)个人同时改了同一行代码才会出现冲突,只要各个功能块都分配好给每个人了,冲突的概率还是很小的。至于冲突的处理,SVN都有log,找到这行代码是谁提交的,解决冲突的时候(QQ)问一下是用你自己的还是用TA的,不就OK?

PS:你头像变的真快。。。。。
heaton_nobu
2015-06-29 12:07:26 +08:00
@BigDecimal 多谢。
头像真没变过。。。

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

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

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

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

© 2021 V2EX