这似乎对我有用:
git clone your-existing-git-repo new-cloned-repo
cd new-cloned-repo
git fetch origin refs/remotes/*:refs/remotes/*
git init
git svn init -s "svn://your-svn-server/your-svn-repo/your-svn-project"
git svn fetch
git checkout master
git svn rebase
虽然上述方法有效,但我发现下面的.git/config
文件使用与我的原始文件相同的文件(没有origin
远程附件到master
分支)创建了一个 repo。
mkdir new-cloned-repo
cd new-cloned-repo
git init --bare .git
git remote add backup your-existing-git-repo
git fetch backup refs/remotes/*:refs/remotes/*
git fetch backup refs/heads/*:refs/heads/*
git fetch backup refs/tags/*:refs/tags/*
git init
# update SVN references
git svn init -s "svn://your-svn-server/your-svn-repo/your-svn-project"
git config svn.authorsfile your-authors-file.txt
git svn fetch
git checkout master
git svn rebase
git svn show-ignore >> .git/info/exclude
这应该克隆所有 Git 提交git clone
/git fetch
和远程分支(现有存储库知道的所有 SVN 分支/标签)git fetch origin refs/remotes/*
,更新 SVN 连接信息git svn init
,然后通过git svn fetch
.
假设您在( , , )git svn init -s
下以正常的 SVN 方式存储内容。your-svn-project
trunk
branches/*
tags/*
我不确定是否git init
需要它,但我相信如果不需要它不会伤害任何东西。此外,这git checkout master
可能是多余的,但没有任何害处。