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

发布于 2024-12-10 09:50:14 字数 515 浏览 0 评论 0原文

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

我想象的设置是这样的:

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

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

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

  4. 除了 trunk 之外,Subversion 上的其他分支也有类似的过程。

本质上,我想要的是只与本地 git 克隆和 Gerrit web 应用程序交互;将审核后的更改推送回 svn 应该会自动发生。我该如何设置这样的东西?

At work, we currently use Subversion for SCM. I have set up a local git-svn mirror and use that as my primary development workspace. I am comfortable with the basic functionality now. One other developer in the team also wants to move to Git, so we are considering using a git mirror of the svn repository. I would also like to try Gerrit alongside this exercise.

The setup I imagine is something along these lines:

  1. A git mirror for the svn repository. The master branch on this is in sync with the trunk on svn.

  2. For each feature a topic branch is created. This is tied to Gerrit, on which the review happens. Once the changeset is approved, Gerrit merges the topic branch back master.

  3. A gitweb, or similar, web application to view the repository on the browser.

  4. A similar process for other branches on subversion besides trunk.

Essentially, what I want is that I interact only with my local git clone and the Gerrit webapp; pushing the reviewed changes back to svn should happen automatically. How do I go about setting up something like this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫卆 2024-12-17 09:50:14

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

  1. 在 Gerrit 服务器上设置 git 克隆
  2. 创建一个 svn 挂钩或定期任务,它将从 svn 获取并推送到您的 git 克隆
  3. Gerrit 有一个内置版本的 gitweb,因此您在
  4. Gerrit 服务器上,创建一个 更改合并挂钩,这将推回到 svn

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

祝你好运!

Unfortunately it isn't possible to do this all automatically (at least, not without a lot of work). Here are some steps which can get you close:

  1. Set up your git clone on the Gerrit server
  2. Create an svn hook or a periodic task which will fetch from svn and push to your git clone
  3. Gerrit has a built-in version of gitweb, so you are covered there
  4. On the Gerrit server, create a change merged hook which will push back to svn

Like Greg mentioned above, when step 4 fails things will be tricky. You'll have to reset the git repository in Gerrit to match svn and re-submit your change. This will be much easier if/when you convince the rest of your team to drop svn and use git/Gerrit :-)

Good Luck!

生来就爱笑 2024-12-17 09:50:14

可以设置与存储库 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

It's possible to setup a Git mirror that be in sync with the repository SVN

Install SubGit into your SVN repository:

$ subgit install path/to/svn/repository

Then just setup access to the linked Git repository created (path/to/svn/repository/.git) using Apache or whatever. Every push to that Git repository will be translated to an SVN revision and vice versa.

So you may use the linked Git repository in Gerrit and for you team (as if SVN never existed). After that you may shutdown SVN repository (or continue using). To stop synchronization before shutting down run:

$ subgit uninstall path/to/svn/repository
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文