git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
SilentDepth
V2EX  ›  git

两个已运作的 Repo,本地的 git 项目和服务端的 SVN 项目,求正确的沟通姿势?

  •  
  •   SilentDepth · Jun 7, 2016 · 3354 views
    This topic created in 3709 days ago, the information mentioned may be changed or developed.
    一个工程,我本地用 git 在维护着。然后突然有一天经理说在服务器上弄了个 SVN Server ,代码已有让我合并一下工作。我瞅了一眼, SVN 上的版本比我本地的要旧。之前没搞过 SVN 和 git 互通的事,我现在就想到另外 checkout 一份 SVN 的代码,然后本地文件夹对比,同步一下差异,再提交。但是本地已有的提交历史和分支怎么整啊?

    求姿势。
    Supplement 1  ·  Jun 7, 2016

    补充一些信息:

    • SVN的代码已有其他同事(工程维护者)检出,目前来看还没有人有新的提交
    • 经理的意思是源码以后集中到这个SVN Server上,也就是说我后续的维护也需要合并进去
    • 我不想放弃本地git而全面转入SVN方式
    • 我知道有个git-svn,但我只知道新repo可以用git-svn联系SVN Server,对于两边都已创建的情况不知道怎么用git-svn操作
    • 为什么会「突然」出现个SVN Server?这是个复杂的问题,请忽略……
    13 replies    2016-06-20 21:07:54 +08:00
    msg7086
        1
    msg7086  
       Jun 7, 2016
    如果你用 GUI 的话,可以试试 SmartGit 。
    如果你用命令行的话,可以试试 git-svn 。
    pynix
        2
    pynix  
       Jun 7, 2016
    直接搞个 git server 吧..
    hstdt
        3
    hstdt  
       Jun 7, 2016 via iPhone
    既然你本地 git 没问题,本地的也比较新,我觉得你就把服务器上面的代码删了算了。不用上传本地.git 文件夹里的内容。

    或者为了服务器好看,你用依次上传几个重要的节点到 svn 上也可以吧,如果团队允许或者没奇葩要求的话。
    SilentDepth
        4
    SilentDepth  
    OP
       Jun 7, 2016
    @msg7086 知道 git-svn ,但是不知道怎么把已有 git 项目纳入 git-svn 管理
    SilentDepth
        5
    SilentDepth  
    OP
       Jun 7, 2016
    @pynix 推广 git 有难度……而且需要权限控制,没办法
    SilentDepth
        6
    SilentDepth  
    OP
       Jun 7, 2016
    @hstdt 已经有同事检出了 SVN 上的代码。现在的问题不是只这一次合并我的内容,以后我的工作也需要合并上去,也就是需要 local git/remote SVN 的方案。我知道有个 git-svn ,但不知道现在的情况下怎么迈出第一步
    msg7086
        7
    msg7086  
       Jun 7, 2016
    如果没猜错的话,可以用 git-svn 克隆你的 svn 数据。
    接着把你 git 的提交导出成 patch ,再打到 svn 上就行了。

    我没这么玩过。
    ferock
        8
    ferock  
       Jun 7, 2016
    既然是经理要求,那你自己的兴趣爱好,就忍忍吧。
    不管你怎么维护你的 git ,最后还是会合并到 svn 上。
    SilentDepth
        9
    SilentDepth  
    OP
       Jun 7, 2016
    @ferock 是的,我明白这个事情。所以我打算单拉出一条分支专门伺候 SVN ,不是有 git-svn 嘛,但就是不知道第一步怎么搞
    hstdt
        10
    hstdt  
       Jun 7, 2016 via iPhone
    @SilentDepth 把 git 项目和.git 文件夹覆盖到 svn 文件夹里面,更新 svn 不传.git 文件夹内容,更新 git 不传 svn 内容就可以了吧。两套系统互相无视,均可以管理你的项目。
    hstdt
        11
    hstdt  
       Jun 7, 2016 via iPhone
    再补充一下,你的情况要以 svn 为主,比如更新 svn 的时候 git 要在主分支,不然 svn 一个 update 代码就不知道成啥样了,每一个文件修改操作的时候注意一下就不会出问题了。两套系统核心的代码是相同的就好了,即 trunk/master 分支.
    novaeye
        12
    novaeye  
       Jun 7, 2016
    git-svn 还是算了吧, 半残的玩意, 按楼主的需求, 可以看看 http://subgit.com , 可以在 git 库和 svn 库之间做自动双向同步.
    ferock
        13
    ferock  
       Jun 20, 2016
    @SilentDepth svn 更新到 git so ez , git 更新到 svn 就算了,实战经验。还是省省吧。

    如果你一定想玩儿 svn ,那就自己手工 update 到 svn ,平时玩儿 git
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3502 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 00:35 · PVG 08:35 · LAX 17:35 · JFK 20:35
    ♥ Do have faith in what you're doing.