V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ifconfig
V2EX  ›  问与答

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

  •  
  •   ifconfig · 2015-06-29 09:43:25 +08:00 · 2936 次点击
    这是一个创建于 3440 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    12 条回复    2015-06-29 12:07:26 +08:00
    FrankFang128
        1
    FrankFang128  
       2015-06-29 09:50:48 +08:00 via Android
    有 git 和 svn 不能共存的「非黑即白」思维的人就不要跟他说话了。

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

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

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

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

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



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


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


    这样保证了主分支的代码永远是稳定可发版的. 而且随时可追溯和回滚.
    ifconfig
        5
    ifconfig  
    OP
       2015-06-29 10:26:12 +08:00
    从未想过要和svn分手,只是真心不够逼格,原谅我
    BigDecimal
        6
    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
        7
    heaton_nobu  
       2015-06-29 10:41:36 +08:00
    @BigDecimal 解决冲突只能靠人工吗?如果修改的文件很多怎么办,做合并的人又无法确定该如何处理冲突,要所有程序员拉过来一起处理吗?有没有一个比较好的工具或者机制能避免这种冲突呢?
    love
        8
    love  
       2015-06-29 10:43:21 +08:00
    如果开发流程分支用得多用SVN不是找罪吗,GIT分支比SVN方便无数倍
    linzy
        9
    linzy  
       2015-06-29 10:50:29 +08:00
    建议好好看下git flow
    YuJianrong
        10
    YuJianrong  
       2015-06-29 10:51:11 +08:00   ❤️ 1
    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
        11
    BigDecimal  
       2015-06-29 11:09:04 +08:00   ❤️ 1
    @heaton_nobu 貌似只能人工,只能一个个文件的解决。冲突的文件很多说明各个功能块的开发没有分配协调好吧,并且只是N(N>1)个人同时改了同一行代码才会出现冲突,只要各个功能块都分配好给每个人了,冲突的概率还是很小的。至于冲突的处理,SVN都有log,找到这行代码是谁提交的,解决冲突的时候(QQ)问一下是用你自己的还是用TA的,不就OK?

    PS:你头像变的真快。。。。。
    heaton_nobu
        12
    heaton_nobu  
       2015-06-29 12:07:26 +08:00
    @BigDecimal 多谢。
    头像真没变过。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3223 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 12:50 · PVG 20:50 · LAX 04:50 · JFK 07:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.