Add "Dominion" rules for Owners Packages
Summary:
Ref T10939. This supports two settings for packages (although they can't be configured yet):
- Strong Dominion: If the package owns a/, it always owns every subpath, even if another package also owns the subpath. For example, if I own src/differential/, I always own it even if someone else claims src/differential/js/ as part of the "Javascript" package. This is the current behavior, and the default.
- Weak Dominion: If the package owns a/, but another package owns a/b/, the package gives up control of those paths and no longer owns paths in a/b/. This is a new behavior which can make defining some types of packages easier.
In the next change, I'll allow users to switch these modes and document what they mean.
Test Plan:
- Ran existing unit tests.
- Added new unit tests.
Reviewers: chad
Reviewed By: chad
Subscribers: joel
Maniphest Tasks: T10939
Differential Revision: https://secure.phabricator.com/D15935