Gerrit lib module to allow filtering out refs in the Git advertizing protocol phase

Clone this repo:
  1. f7e73ec Adapt to the latest allowCapability API change on master. by Luca Milanesio · 10 months ago master stable-3.1
  2. 2de57f9 Remove explicit Project.NameKey import by John Viklund · 4 months ago
  3. 0d35f59 Rename reviewdb package to entities by John Viklund · 4 months ago
  4. 5078bbb Adapt to Gerrit v3.0 backend and test APIs by James Hartig · 10 months ago stable-3.0
  5. f681b01 Initial commit of the closed refs filtering module by Luca Milanesio · 1 year, 4 months ago stable-2.16

Git Ref filter module for Gerrit

Gerrit lib module to allow filtering out refs in the Git advertizing protocol phase.

How to build

Build this module as it was a Gerrit plugin:

  • Clone Gerrit source tree
  • Clone the git-refs-filter source tree
  • Link the git-refs-filter directory to Gerrit /plugins/git-refs-filter
  • From Gerrit source tree run bazel build plugins/git-refs-filter
  • And for running tests bazel test plugins/git-refs-filter:git_refs_filter_tests
  • The git-refs-filter.jar module is generated under /bazel-genfiles/plugins/git-refs-filter/

How install

Copy git-refs-filter.jar library to Gerrit /lib and add the following one extra settings to gerrit.config:

[gerrit]
  installModule = com.googlesource.gerrit.modules.gitrefsfilter.RefsFilterModule

How to configure filtering

The refsfilter module defines a new global capability called “Filter out closed changes refs”. By default the capability isn't assigned to any user or group, thus the module installation has no side effects.

To enable a group of users of getting a “filtered list” of refs (e.g. CI jobs):

  • Define a new group of users (e.g. Builders)
  • Add a user to that group (e.g. Add ‘jenkins’ to the Builders group)
  • Go to the All-Projects ACLs, add the “Filter out closed changes refs” and assign to the group (e.g. Builders)

NOTE Gerrit makes a super-simplified ACL evaluation if all the projects are globally readable (e.g. project has a READ rule to refs/*). To enable the closed changes filtering you need to disable any global read rule for the group that needs refs filtering.