7

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

我想象的设置是这样的:

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

  2. 对于每个功能,都会创建一个主题分支。这与进行审查的 Gerrit 相关。一旦变更集被批准,Gerrit 将主题分支合并回 master。

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

  4. 除主干外,其他分支的类似过程。

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

4

2 回答 2

6

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

  1. 在 Gerrit 服务器上设置你的 git clone
  2. 创建一个 svn 钩子或周期性任务,它将从 svn 获取并推送到您的 git clone
  3. Gerrit 有一个内置的 gitweb 版本,所以你在那里
  4. 在 Gerrit 服务器上,创建一个将推送回 svn的更改合并挂钩

就像上面提到的 Greg 一样,当第 4 步失败时,事情会变得很棘手。您必须在 Gerrit 中重置 git 存储库以匹配 svn 并重新提交您的更改。如果/当您说服团队的其他成员放弃 svn 并使用 git/Gerrit 时,这会容易得多:-)

祝你好运!

于 2011-10-29T02:37:18.563 回答
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
于 2012-07-31T00:46:41.503 回答