2017-12-02 394 views
1

如何在GIT库和SVN库之间进行双向同步?我已经看到了如何从SVN转换为GIT,但没有太多关于如何在两者之间顺利同步。如何在GIT和SVN之间进行双向同步

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

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

回答

3

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

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

0

这篇文章 - Creating a two way sync between a Github repository and Subversion - 看起来是一个解决方案:

  • 创建一个GitHub的服务器或服务器到位桶上一个混帐回购协议。克隆空回购。添加一个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 
  • 同步从SVN到混帐:
 
    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中的svn:
 
    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回购克隆的git回购开始,可能会避免这个问题。

+1

是的,它可以用于简单的回购/分支机构,但是SubGit编写的角落案例太多以致于无法解决这些问题。 – VonC

相关问题