Fix per-file import if per-file rule ignores parent code owners

If a matching per-file rule ignores parent code owners and at the same
time a matching per-file rule imports global code owners from another
OWNERS file, these imported global code owners were wrongly ignored.

The logic that resolves a code owner config for a path was doing the
following steps:
1. Drop per-file rules that do not apply to the path
2. Resolve all imports (global imports and imports of matching per-file
   rules) and merge them into the current config
3. If any matching per-file rule ignores parent code owners, drop all
   global code owners

Step 3. wrongly dropped the global code owners that were added due to
the per-file imports.

To fix this we now do:
1. Drop per-file rules that do not apply to the path
2. Resolve all global imports and merge them into the current config
3. If any matching per-file rule ignores parent code owners, drop all
   global code owners
4. Resolve all per-file imports and merge them into the current config

Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: If33a874a3f93818a24d2bb8ab65c83aee66facb5
2 files changed
tree: 53c123c371e12fa51fbda7896e36e7df1c5f1ae0
  1. java/
  2. javatests/
  3. proto/
  4. resources/
  5. test/
  6. ui/
  7. .eslintrc.json
  8. .gitignore
  9. .gitreview
  10. bower.json
  11. BUILD
  12. LICENSE
  13. package-lock.json
  14. package.json
  15. 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.

Also see resources/Documentation/about.md.

IMPORTANT: Before installing/enabling the plugin follow the instructions from the setup guide, see resources/Documentation/setup-guide.md.