如何在GIT存储库和SVN存储库之间进行双向同步?我已经看到了如何从SVN转换为GIT,但没有太多关于如何在两者之间平滑同步的方法。
目的是将项目保存在两种类型的存储库中,并让它们生成/跟踪相同的内容。
作为额外要求,作为主题的SVN存储库不包含主干和分支。
答案 0 :(得分:3)
您需要专用的第三方工具,以确保SNV和Git存储库之间的真正双向同步。
我只知道SubGit能够可靠地做到这一点。但它不是免费的。只有从SVN到Git的一次性迁移才是。
答案 1 :(得分:0)
这篇文章 - Creating a two way sync between a Github repository and Subversion - 看起来是一个解决方案:
在github服务器或bitbucket服务器上创建一个git repo。克隆空的回购。添加一个readme-git文件并在master上提交。
最初创建svn跟踪分支:
git branch --no-track svnsync git checkout svnsync git svn init http://your-svn-server/your-repo # here removed `-s` if the svn repo is not on a standard layout # or use file:///path/to/local/repo git svn fetch # add if needed `--authors-file svn-authors.txt` git reset --hard remotes/git-svn # the post said `remotes/trunk` but it does not look right
git checkout svnsync git svn rebase git checkout master git merge svnsync # add `--allow-unrelated-histories` to the first merge git push origin master
git checkout master git pull origin master git checkout svnsync git svn rebase git merge --no-ff master git commit git svn dcommit
上述序列的缺点是添加了伪造的readme-git文件,以便可以拉出非跟踪分支。我猜,从最初从svn repo克隆的git repo开始可以避免这个问题。