如何在GIT和SVN之间进行双向同步

如何在GIT和SVN之间进行双向同步,git,svn,git-svn,Git,Svn,Git Svn,如何在GIT存储库和SVN存储库之间进行双向同步?我已经看到了如何从SVN转换到GIT,但没有太多关于如何在两者之间平滑同步的内容 目的是将项目保存在两种类型的存储库中,并让它们生成/跟踪相同的内容 作为额外要求,作为主题的SVN存储库不包含主干和分支 您需要一个专用的第三方工具,以确保SNV和Git存储库之间真正的双向同步 我只知道能可靠地做到这一点。但它不是免费的。只有从SVN到Git的一次性迁移是可行的。这篇文章看起来是一个解决方案: 在github服务器或bitbucket服务器上创建

如何在GIT存储库和SVN存储库之间进行双向同步?我已经看到了如何从SVN转换到GIT,但没有太多关于如何在两者之间平滑同步的内容

目的是将项目保存在两种类型的存储库中,并让它们生成/跟踪相同的内容


作为额外要求,作为主题的SVN存储库不包含主干和分支

您需要一个专用的第三方工具,以确保SNV和Git存储库之间真正的双向同步

我只知道能可靠地做到这一点。但它不是免费的。只有从SVN到Git的一次性迁移是可行的。

这篇文章看起来是一个解决方案:

  • 在github服务器或bitbucket服务器上创建git repo。克隆空的回购协议。添加一个自述git文件并在主机上提交

  • 最初创建svn跟踪分支:

git分支--无轨道svnsync git签出svnsync git svn inithttp://your-svn-server/your-repo #如果svn回购不在标准布局上,此处删除了“-s” #或使用file:///path/to/local/repo gitsvn获取 #如果需要,添加`--authors文件svn-authors.txt` git重置--硬远程/git svn #帖子上写着“遥控器/中继线”,但看起来不对
  • 从svn同步到git:
git签出svnsync git-svn-rebase 切换到主分支 git合并svnsync #将“--allow unrelated history”添加到第一次合并 git推送源主机
  • 从git同步到svn:
切换到主分支 git拉源主机 git签出svnsync git-svn-rebase git合并--没有ff主机 git提交 git svn数据委员会
上述序列的一个缺点是添加了一个伪造的自述git文件,以便可以提取非跟踪分支。我想,从最初从svn回购中克隆的git回购开始,可以避免这个问题

是的,它可以用于简单的回购/分支机构,但有太多的角落案例,SubGit就是为了解决这些问题而编写的。 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