使用Subversion存储库的Git镜像设置Gerrit

时间:2011-10-15 19:22:41

标签: git svn gerrit

在工作中,我们目前使用Subversion for SCM。我已经设置了一个本地git-svn镜像,并将其用作我的主要开发工作区。我现在对基本功能感到满意。团队中的另一个开发人员也想迁移到Git,因此我们正在考虑使用svn存储库的git镜像。我也想和Gerrit一起尝试这个练习。

我想象的设置是这样的:

  1. svn存储库的git镜像。此分支上的主分支与svn上的主干同步。

  2. 为每个要素创建主题分支。这与审查发生的Gerrit有关。一旦变更集获得批准,Gerrit就会将主题分支合并为主。

  3. gitweb或类似的Web应用程序,用于在浏览器上查看存储库。

  4. 除了trunk之外,其他分支在subversion上的类似过程。

  5. 基本上,我想要的是我只与我的本地git clone和Gerrit webapp交互;将审查的更改推回到svn应该会自动发生。我如何设置这样的东西?

2 个答案:

答案 0 :(得分:6)

不幸的是,不可能自动完成这一切(至少,没有大量的工作)。以下是一些可以让您接近的步骤:

  1. 在Gerrit服务器上设置git clone
  2. 创建一个svn挂钩或一个定期任务,它将从svn获取并推送到你的git clone
  3. Gerrit有一个内置版本的gitweb,所以你可以在那里了解
  4. 在Gerrit服务器上,创建一个change merged hook,它将推回到svn
  5. 就像上面提到的Greg一样,当第4步失败时,事情就会变得棘手。您必须重置Gerrit中的git存储库以匹配svn并重新提交您的更改。如果/当你说服你的团队的其他人放弃svn并使用git / Gerrit时,这会更容易: - )

    祝你好运!

答案 1 :(得分:2)

可以设置与存储库SVN同步的Git镜像

SubGit安装到您的SVN存储库中:

$ subgit install path/to/svn/repository

然后使用Apache或其他任何方式设置对创建的链接Git存储库(path / to / svn / repository / .git)的访问权限。对Git存储库的每次推送都将转换为SVN版本,反之亦然。

因此,您可以在Gerrit和团队中使用链接的Git存储库(就好像SVN从未存在过)。之后,您可以关闭SVN存储库(或继续使用)。在关闭运行之前停止同步:

$ subgit uninstall path/to/svn/repository