Avoid computing file diffs when evalution code owner approvals

To evaluate code owner approvals on a change we need to know which files
have been changed. So far we retrieved the changed files from the diff
cache, which means file diffs are being computed when they are not
cached yet (or when their cache entry has expired). Computing files diff
for changes that touch many files (e.g. > 70k files) can take > 15min.
Since the code owner approval evaluation only needs to know which files
have changed, computing the file diffs seems unnecessary. DiffOperations
has a new method that allows to get the modified files without computing
the file diffs and with this change we are using it to get the changed
files instead of getting them from the diff cache. For the evalution of
code owner approvals detecting renames is important (because renamed
files require an approval on the old and the new path), hence the
rename detection must be enabled.

Bug: Google b/461456634
Change-Id: I45c7e61832be45676ef0ceae5044990cfdf469e0
Signed-off-by: Edwin Kempin <ekempin@google.com>
1 file changed
tree: 605dfbe49b4109b2230b8e491f1766c92dfaf4e4
  1. java/
  2. javatests/
  3. proto/
  4. resources/
  5. web/
  6. .gitignore
  7. .gitreview
  8. BUILD
  9. LICENSE
  10. README.md
README.md

Gerrit Code Review code-owners plugin

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.

JavaScript Plugin

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.