V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
SilentDepth
V2EX  ›  git

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

  •  
  •   SilentDepth · 2016-06-07 10:50:31 +08:00 · 2823 次点击
    这是一个创建于 3091 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个工程,我本地用 git 在维护着。然后突然有一天经理说在服务器上弄了个 SVN Server ,代码已有让我合并一下工作。我瞅了一眼, SVN 上的版本比我本地的要旧。之前没搞过 SVN 和 git 互通的事,我现在就想到另外 checkout 一份 SVN 的代码,然后本地文件夹对比,同步一下差异,再提交。但是本地已有的提交历史和分支怎么整啊?

    求姿势。
    第 1 条附言  ·  2016-06-07 12:37:42 +08:00

    补充一些信息:

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

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

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

    如果你一定想玩儿 svn ,那就自己手工 update 到 svn ,平时玩儿 git
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1593 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:03 · PVG 01:03 · LAX 09:03 · JFK 12:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.