2010-04-23 45 views
7

我有一个主要的Git仓库的一个开源项目镜git的使用svn

我想镜像所有提交到svn存储库(code.google.com上),这可能吗?

回答

4

是的,那是可能的。使用Git's SVN features导入到存储库。然后你可以从那里推回来。不过,大多数情况下,git可以有效地显示SVN历史,而SVN可以显示git历史。

3

如果你的git历史是线性的,你可以尝试使用git-svn。 我会尝试使用“git svn clone”将现有(空的)SVN存储库导入到git中,然后将您现有的git历史记录重新绑定到该git历史记录上,并将它“git svn dcommit”。

如果你的git历史不是线性的(包含分支和合并),你将无法在SVN中正确表示它。在这种情况下,我强烈建议您使用基于git的托管解决方案(例如github.com)。

3

我在目前的工作中遇到过这种情况。我们的主要Git存储库具有非线性历史记录,所以选择的解决方案应该处理此问题似乎迄今为止工作的解决方案基于gitsvn代理存储库。我已经安装在主Git仓库后,收到钩,在它的核心有这样的事情:

export GIT_DIR=$GITSVN_PROXY_DIR/.git 
git pull -Xtheirs file://$GIT_PRIMARY_DIR master 
git svn dcommit 

后dcommit日志历史被改写。在来自主Git仓库的下一个git pull中,您通常会遇到冲突。这就是他们的选择 - 他们的选择开始。这是一个有利于远程版本变化的合并策略。在这种情况下,它允许我们自动解决冲突! :)

唯一的缺点:漂亮的SVN提交消息不是免费的。一些git hacking需要使它们包含来自主Git提交消息的所有信息。

+0

你愿意分享你最后一段中提到的Git吗? – 2012-11-01 15:29:20

1

我怀疑这可能与code.google.com,但你可以设置你自己的Subversion存储库,并安装SubGit到它。

只要安装完成,您就有一对链接的Subversion和Git存储库。任何存储库中的每个修改都会触发一个SubGit挂钩,它会自动转换所有必要的更改。请致电documentationgit-svn comparison

SubGit是一个商业产品,但对于开源项目,您可以获得免费的许可证。