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

2016-06-07 10:50:31 +08:00
 SilentDepth
一个工程,我本地用 git 在维护着。然后突然有一天经理说在服务器上弄了个 SVN Server ,代码已有让我合并一下工作。我瞅了一眼, SVN 上的版本比我本地的要旧。之前没搞过 SVN 和 git 互通的事,我现在就想到另外 checkout 一份 SVN 的代码,然后本地文件夹对比,同步一下差异,再提交。但是本地已有的提交历史和分支怎么整啊?

求姿势。
2825 次点击
所在节点    git
13 条回复
msg7086
2016-06-07 11:31:01 +08:00
如果你用 GUI 的话,可以试试 SmartGit 。
如果你用命令行的话,可以试试 git-svn 。
pynix
2016-06-07 11:34:31 +08:00
直接搞个 git server 吧..
hstdt
2016-06-07 12:01:09 +08:00
既然你本地 git 没问题,本地的也比较新,我觉得你就把服务器上面的代码删了算了。不用上传本地.git 文件夹里的内容。

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

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

如果你一定想玩儿 svn ,那就自己手工 update 到 svn ,平时玩儿 git

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

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

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

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

© 2021 V2EX