|author||Luca Milanesio <firstname.lastname@example.org>||Wed Sep 15 00:11:46 2021 +0100|
|committer||Luca Milanesio <email@example.com>||Wed Sep 15 22:52:37 2021 +0100|
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-filterdirectory to Gerrit
bazel build plugins/git-refs-filter
bazel test plugins/git-refs-filter:git_refs_filter_tests
git-refs-filter.jarmodule is generated under
git-refs-filter.jar library to Gerrit
/lib and add the following one extra settings to
[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.