Add project group and ancestors to group list
This addresses an issue that arises when the owner of a path is the
group under which the project lives (such as @gitlab-org
for the
Gitlab project..) Gitlab::CodeOwners::GroupsLoader did not add that
group to the list of groups when attempting to determine ownership. This
list of groups is expanded into a list of users that the user
attempting the action (typically a merge) is compared to. Sinc the
project's group is not added to the group list, its members are not
expanded and are thus missing from the list of owners for a given path.
Additionally, this will look not simply at the immediate group of the project, but at the entire group tree ancestors to the root group. For example, if the "merge_service" project is at
gitlab-org/engineering/source_code/merge_service
..then any of these groups would be considerable available for listing as a code owner without having to be invited to the project:
@gitlab-org
@gitlab-org/engineering
@gitlab-org/engineering/source_code
This address both the proximate cause of #216345 but of the long-requested feature #32432 (closed)