是一个双向的Git < - > Svn Sync(都可写)可能吗?

sch*_*tbi 9 svn git

我们团队的一部分发现git非常酷,并开始将其用作svn客户端.所以每个开发人员都有一个本地git存储库,并通过git-svn与svn同步.

然后我们想要对提交进行代码审查,并将补丁发送给同事进行审核.这种方法不是很直观,因为svn中SAME Revision 的校验和对于每个本地git存储库都是不同的.不知道为什么,因为内容应该是相同的.也许这是一个错误svn rebase

所以我们尝试在scm服务器上安装一个中央git存储库.现在每个使用git的开发人员都可以将他的更改推送到这个中央存储库,而另一个进行审查的开发人员可以将这些更改引入他的repo.不幸的是,因为每个开发人员都同时遇到svn rebase了校验和问题.

在阅读了很多帖子后,我认为管理具有subversion和git客户端的团队的最佳方法是:

  1. 一个中央Subversion存储库
  2. 中央Git存储库(源)
  3. 服务器上的中央Git工作副本
  4. 对于每个git开发人员一个本地git存储库
  5. 为每个svn开发人员提供一个普通的工作副本

现在我们需要一个中心工作来同步svn和git在服务器上的中央git工作副本上执行这样的常规脚本.

# First transfer the commits from git to svn
git checkout svnmaster
git pull origin svnmaster
git svn dcommit

# Now from svn to git
git svn rebase
git push origin svnmaster
Run Code Online (Sandbox Code Playgroud)

我现在的问题是:

  1. 这是最好的方法(没有切换到git completeley)
  2. 是否已有用于执行同步子弹证明的Windows脚本?
  3. 是否知道不同校验和的问题,是否有可能的解决方法?

谢谢你的每一个答案!

编辑 我最近发现了一个看起来非常有希望的项目:

SubGit

gor*_*gor 5

您的解决方案存在问题.我建议你不要直接在svnmaster中提交.你应该为svn(svn-dev)和svn跟踪分支(svn-master)提供一个纯git分支.按照以下步骤提交svn:

git checkout svn-master
git merge --no-ff svn-dev
git svn dcommit
git checkout svn-dev
git merge svn-master
Run Code Online (Sandbox Code Playgroud)

此序列允许您保留所有存储库的提交哈希值.