V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
582033
V2EX  ›  分享发现

git-svn 的一个坑

  •  
  •   582033 · 2015-06-02 08:10:37 +08:00 via Android · 3329 次点击
    这是一个创建于 3467 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司用的svn,并且是自动线上布署;有一同事A,之前都是用svn的,在自己的忽悠下也开始用git-svn。

    A所在的小组新起一项目,然后项目有条不紊的进行中...

    一日,需要一JS的库实现某些功能,A把之前本地下自己的一些Js库copy到了新项目中。

    因为这JS库也是从其它项目复制来的,而且A君之前一直用svn的,但复制时没把.svn目录删掉,直接把 .svn文件夹所在的Js库目录 git add xx/进去做了一个commit foo,然后用git-svn 把foo dcommit到了svn服务器,然后好戏开始上演了..

    所有参与项目的其它人checkout这个项目的时候都会卡在这个foo这里,线上自动布署也卡死在这里,A君删除.svn再次提交也没法覆盖这个历史;其他人可以从最新的commit 来checkout,但线上是自动的没法控制。

    整个项目就此崩溃了...

    PS:svn应该是也可以像git一样有个类似-f的参数吧,不过估计我们也没权限。

    后来听说A所在小组重新起了个项目。
    14 条回复    2015-06-02 15:53:18 +08:00
    xi_lin
        1
    xi_lin  
       2015-06-02 08:39:38 +08:00 via iPhone
    自动部署为啥没法控制?
    add完status看一眼是好习惯
    582033
        2
    582033  
    OP
       2015-06-02 08:49:59 +08:00
    @xi_lin status
    只显示./<js目录>,不会显示里面还有个.svn的
    自动部署是之前公司内部的一个部署系统,勾选哪个文件/目录就自动检出最新版本
    bugsnail
        3
    bugsnail  
       2015-06-02 09:00:12 +08:00
    崩溃了?代码找不回来了?
    然后,这个项目就不要了...开新的项目?
    582033
        4
    582033  
    OP
       2015-06-02 09:02:07 +08:00
    所有参与项目的其它人checkout这个项目的时候都会卡在这个foo这里,没法提交新版本。
    clino
        5
    clino  
       2015-06-02 09:11:08 +08:00
    是.svn的提交全进去了?可是这个在git提交的时候会列出来啊?提交的时候自己不看的?

    这里也能看出svn性能和git比实在太差,git性能最强,想当年我们第一个android项目的时候,我因为用惯了svn想用,结果初始提交完全没有办法提交上去,然后再试mercurial还是不行,最后不得不用git,熟悉以后觉得git还真是最棒的,不光是性能
    lingo233
        6
    lingo233  
       2015-06-02 09:14:48 +08:00
    貌似lz忽悠他们用也是一个坑(笑
    582033
        7
    582033  
    OP
       2015-06-02 09:37:34 +08:00
    @clino
    目录结构如下的时候

    --project
    |
    |--sta
    |
    |----js
    |
    |---.svn

    直接吧sta目录add进去, 然后执行git status 是不会显示.svn的吧,而且js库里面那么多文件确实也不容易注意到.

    现在我自己的做法是把.开头的文件都加入.gitignore中,如有需要手动add.
    582033
        8
    582033  
    OP
       2015-06-02 09:39:33 +08:00
    @clino ...文字的发出来结构乱了

    clino
        9
    clino  
       2015-06-02 09:42:45 +08:00
    @582033

    ├── js
    │   ├── .svn
    │   │   └── t3
    │   └── t2
    └── t

    12 directories, 16 files
    $ git add .
    git status
    位于分支 master

    初始提交

    要提交的变更:
    (使用 "git rm --cached <file>..." 撤出暂存区)

    新文件: js/.svn/t3
    新文件: js/t2
    新文件: t
    timonwong
        10
    timonwong  
       2015-06-02 09:49:52 +08:00   ❤️ 1
    我还遇到过由于SVN服务器比较旧,用 git-svn 写过几次,git-svn 就从 svn 里面读不出来的情况(用纯 svn 正常)
    582033
        11
    582033  
    OP
       2015-06-02 09:50:32 +08:00
    @clino 恩,是会显示,看来是文件太多了没看到
    FrankFang128
        12
    FrankFang128  
       2015-06-02 10:09:25 +08:00 via Android
    叫你不升级svn1.8
    wwqgtxx
        13
    wwqgtxx  
       2015-06-02 12:46:50 +08:00 via Android
    .gitignore文件没写么?
    jixiangqd
        14
    jixiangqd  
       2015-06-02 15:53:18 +08:00
    看来要把.svn加入.gitignore
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1173 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:45 · PVG 02:45 · LAX 10:45 · JFK 13:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.