Defer branch visibility checks and reuse CodeOwnerResolver In AbstractGetCodeOwnersForPath, filterCodeOwners previously checked RefPermission.READ (isVisibleTo) on all candidate code owners across the entire OWNERS hierarchy before scoring, sorting, and limiting the results. Additionally, codeOwnerResolver.get() was called for each visited OWNERS file, discarding the per-instance TransientCodeOwnerCache between hierarchy levels. Move getVisibleCodeOwners into sortAndLimit so branch visibility is evaluated lazily on the score-sorted stream only until the requested limit is reached, and reuse a single CodeOwnerResolver instance across the hierarchy traversal and global code owner resolution. Testing & Benchmark Results (https://paste.googleplex.com/6755399436516647) Bug: Google b/360136905 Change-Id: I7cefffe9e66b16bdd0de308eec1d42b4e4b2d215
This plugin provides support for defining code owners for files in a repository.
If the code-owners plugin is enabled, changes can only be submitted if all touched files are covered by approvals from code owners.
For a detailed description of the plugin functionality please refer to the plugin documentation.
IMPORTANT: Before installing/enabling the plugin follow the instructions from the setup guide.
NOTE: The plugin documentation only renders correctly when the plugin is installed in Gerrit and the documentation is accessed via https:///plugins/code-owners/Documentation/index.html. If you want to read the documentation before installing the plugin, you can find it properly rendered here.
From the root of the gerrit repository.
bazel test //plugins/code-owners/web:karma_test
For testing the plugin with the Gerrit FE Dev Helper the command below builds
bazel build //plugins/code-owners/web:code-owners
ln -s bazel-bin/plugins/code-owners/web/code-owners.js polygerrit-ui/app/plugins/
and let the Dev Helper redirect from .+/plugins/code-owners/static/code-owners.js to http://localhost:8081/plugins/code-owners.js.