将git存储库导出到svn

时间:2010-08-09 15:09:59

标签: svn git

使用git-svn将svn存储库克隆到git中很容易。但是,我需要反过来这样做。 我有一个git存储库,想要将它导入一个空的(从trunk,branches和tags文件夹除外),保留所有的提交信息。

我把svn repo的git-svn-clone解雇了,拉了git master并且dcommitted。然而,我在svn中唯一提交的是“从git中合并”的那个提交

我也尝试了另一种方法:克隆了git repositoy并调用了git svn init,但git一直说“无法确定HEAD历史记录中的上游SVN信息。”

以某种方式可以从git创建一个svn存储库吗?

干杯, 迈克尔

2 个答案:

答案 0 :(得分:12)

这是我通过svn发布git repo的方法:

svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \
    -m "Standard layout for $project"
git svn init -s http://host/path/to/repo/
git svn fetch
git rebase trunk master
git svn dcommit

Subversion不会保留提交时间或作者身份。 如果你使用分支,上帝会帮助你。

答案 1 :(得分:6)

从其他repo git中拉出master分支时会创建一个合并提交,因为没有共同的历史记录。

你应该使用git pull --rebase(它将改变提交ID,因为它重新创建提交),然后dcommit


你也可以尝试以下方法:

首先用svn(简单地创建那些分支,标签,主干文件夹和提交)检查初始版本,然后创建一个git svn clone(git svn -s clone svn://…

然后发出以下命令:

# create a ref to your "svn" commit
git checkout -b svn
# get all your "git" commits
git fetch $your_remote_git_repo
# create a ref to your "git" commit
git branch master FETCH_HEAD
# rebase the rest your git commits
git rebase svn master
# commit to svn!
git svn dcommit
只需要

编辑樱桃选择,因为我快速设置git存储库只有空提交