有什么方法可以同步GIT和Subversion存储库吗?

Jad*_*ias 31 svn git version-control

我想使用GIT和SVN客户端访问存储库.我想象的一种方法是通过自动双向迁移:当用户推入GIT存储库时,它也在SVN存储库中被COMMITed,反之亦然.

有什么工具可以帮我做到这一点吗?

Gre*_*ill 21

最好的方法是使用git svnSubversion客户端.这提供了Subversion存储库和Git存储库之间的双向集成.拥有Git存储库后,您可以将其推送到其他任何位置以进行发布.

我经常这样做,在工作中有一个Subversion存储库,它是"主"存储库,我通常git svn用来访问它.有时如果我正在做需要更多特定Subversion功能的事情,比如合并,我会使用常规svn客户端来代替存储库.

  • 这适用于单个用户,但对于尝试在团队的两个存储库之间设置实际桥接的任何人来说,这都是不够的.每次在git中本地进行的任何更改都将由git svn rebase重新应用,并且任何后续git推送到另一个git存储库将一遍又一遍地重新推送相同的更改. (14认同)

Dmi*_*nko 13

有一个新的解决方案可以完全按照您的要求运行--- SubGit.它是并发安全的(我不能说基于git-svn的bash脚本).


mrt*_*rts 10

我们的团队遇到了完全相同的问题,经过一些实验,我们设法建立了一个git-Subversion网桥,用于同步我们的团队git存储库和公司Subversion存储库之间的变化.我们的git用法对其他Subversion用户是透明的.

有关设置,请参阅https://github.com/mrts/git-svn-bridge.

我们已经在生产中使用了这种设置超过一年.

我想设置的最大警告是git存储库只跟踪SVN中继(或另一个单独的分支),因此在合并到中继期间,其他git分支将被压缩为一个提交.对我们来说这没有问题 - 我们使用短期任务分支并将它们视为轻量级,短暂的"工作单元",可以在一个块中转到主线 - 并且分支历史记录保留在git中.


Von*_*onC 5

您可以考虑使用svn2git轻松地将svn导入git,然后将其镜像ruby应用程序git2svn导入.这个问题的
更多细节. 正如其他答案中所提到的,' '是强制性的,但是那些ruby模块可以帮助你尊重"subversion分支/目录",而不是将它们作为Git中的实际目录.
git svn