Gerrit does not trigger standard pre-receive and post-receive hooks when one pushes new commits to Git repository. SubGit heavily relies on those hooks in order to maintain reliable two-way mirror. On this page you can download SubGit plugin for Gerrit that emulates pre-receive hook behavior.
1. Download SubGit Plugin for Gerrit
Version: 1.0.0-EAP6, published on: July 11, 2018:
MD5 checksum: a2db62d13ce8ac5c55515c14f90ea28b
Compatible Gerrit versions: 2.9.x, 2.10.x, 2.11.x, 2.12.x, 2.13.x, 2.14.x and 2.15.x.
2. Install SubGit Plugin into Gerrit
Move downloaded file into GERRIT_SITE/plugins/ directory and make sure the plugin becomes enabled at Plugins | Installed:
If you have older version of the plugin, replace it with the newer one. We recommend to restart Gerrit after upgrading previously installed version of the plugin.
3. Increase receive timeout
$ git config -f GERRIT_SITE/etc/gerrit.config receive.timeout 0 $ GERRIT_SITE/bin/gerrit.sh restart
By default Gerrit may interrupt
git push operation on timeout, setting receive.timeout to 0 forces Gerrit to wait until SubGit completes Git-SVN synchronization.
4. Create empty Git repository
Create empty Git repository at Projects | Create New Project:
5. Follow standard instructions
Locate repository directory of created Gerrit project:
$ ls GERRIT_SITE/git/ $ ls GERRIT_SITE/git/project.git
and follow standard instructions on establishing Git-SVN mirror with SubGit command line tool:
Run the following command to configure Git repository to mirror SVN project:
$ subgit configure --layout auto SVN_URL GERRIT_SITE/git/project.git
Above command will detect branches layout in the SVN project and generate SubGit configuration file ready for further adjustments. You may be asked for credentials unless those are already stored in the SVN credentials cache at ~/.subversion/ directory.
Review and adjust branches mapping configuration:
$ edit GERRIT_SITE/git/project.git/subgit/config
Review and adjust Git/SVN authors mapping:
$ edit GERRIT_SITE/git/project.git/subgit/authors.txt
You may use dynamic authors mapping replacing authors.txt with a script. Script sample could be found at GERRIT_SITE/git/project.git/subgit/samples/ directory.
Run the following command to enable mirror and translate SVN revisions to Git commits:
$ subgit install GERRIT_SITE/git/project.git
As soon as initial translation is completed, Gerrit project is ready to serve users. Commits pushed to this project will be translated to Subversion repository and SVN revisions will be translated to Git.
Would you have any question on using SubGit with Gerrit, don’t hesitate to contact us at email@example.com. We’d be glad to assist you.