Optimize sticky approval check for large changes When evaluating sticky approvals, CodeOwnerApprovalCheck was performing a sequential scan over all changed files of previously approved patch sets for every file in the current patch set. This resulted in O(N*M) complexity. For changes with a large number of files (e.g., 100k+), this caused extreme latency and timeouts. Optimize this by caching the touched paths of previous patch sets in a Set for O(1) lookup, reducing the complexity to O(N+M). Release-Notes: skip Change-Id: I142d288606c8b5f63fe55caef64a80418bdde6c5
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.