commit | e8972220200f8abab76825a84c5c9bb339939bf8 | [log] [tgz] |
---|---|---|
author | Luca Milanesio <luca.milanesio@gmail.com> | Wed Sep 15 00:11:46 2021 +0100 |
committer | Luca Milanesio <luca.milanesio@gmail.com> | Wed Sep 15 22:52:37 2021 +0100 |
tree | 9e9670c77d090176d399e551caad8102cbe7e89e | |
parent | 23cc86cdeffcdc8907fdfce3dcd2a1afe8bee099 [diff] |
Rely on Gerrit change_notes cache for filtering The git-refs-filter makes sense only when it provides a significant performance improvement from a network and CPU perspective. Do not scan for all refs on the repository because it would consume too much CPU and I/O. Rely on Gerrit's pre-defined caching abilities on change notes. Change-Id: I2ad7496e2f8f5a1860245de6460fc64bfe8c0905
Gerrit lib module to allow filtering out refs in the Git advertizing protocol phase.
Build this module as it was a Gerrit plugin:
git-refs-filter
directory to Gerrit /plugins/git-refs-filter
bazel build plugins/git-refs-filter
bazel test plugins/git-refs-filter:git_refs_filter_tests
git-refs-filter.jar
module is generated under /bazel-genfiles/plugins/git-refs-filter/
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
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):
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.