使用 Subversion 存储库的 Git 镜像设置 Gerrit
在工作中,我们目前使用 Subversion 进行 SCM。我已经设置了一个本地 git-svn 镜像并将其用作我的主要开发工作区。我现在对基本功能感到满意。团队中的另一位开发人员也想迁移到 Git,因此我们正在考虑使用 svn 存储库的 git 镜像。我还想在这个练习中尝试一下 Gerrit。
我想象的设置是这样的:
svn 存储库的 git 镜像。这里的主分支与 svn 上的主干同步。
为每个功能创建一个主题分支。这与进行审查的 Gerrit 相关。一旦变更集获得批准,Gerrit 就会将主题分支合并回主分支。
一个 gitweb 或类似的 Web 应用程序,用于在浏览器上查看存储库。
除了 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:
A git mirror for the svn repository. The master branch on this is in sync with the trunk on svn.
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.
A gitweb, or similar, web application to view the repository on the browser.
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不幸的是,不可能自动完成这一切(至少,不需要做大量的工作)。以下是一些可以让您接近的步骤:
就像上面提到的 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:
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!
可以设置与存储库 SVN 同步的 Git 镜像
将 SubGit 安装到您的 SVN 存储库中:
然后只需设置对使用 Apache 或其他方式创建的链接 Git 存储库(path/to/svn/repository/.git)。对该 Git 存储库的每次推送都将转换为 SVN 修订版,反之亦然。
因此,您可以在 Gerrit 和您的团队中使用链接的 Git 存储库(就好像 SVN 从未存在过一样)。之后您可以关闭 SVN 存储库(或继续使用)。要在关闭运行之前停止同步:
It's possible to setup a Git mirror that be in sync with the repository SVN
Install SubGit into your 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: