Use `patch-id` to match CODEOWNER paths for enhanced selective resets
<!--IssueSummary start-->
<details>
<summary>
Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards.
</summary>
- [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=455874)
</details>
<!--IssueSummary end-->
## Problem to Solve
GitLab currently supports only [removing CODEOWNER approvals if their files change](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/settings.html#remove-approvals-by-code-owners-if-their-files-changed). However, due to the way GitLab approvals work the resets impact the users of those rules who might have approved other CODEOWNER (or other) approval rules. This creates a situation where a user might have been brought in to approve a database change, but is also able to approve backend changes to the application. If a change is then pushed to the backend, but not the database... both of the approvals will be removed.
## Proposal
We currently define a `patch-id` for each version of a merge request. If we also generated a `patch-id` for each matching CODEOWNERS path, we could selectively remove specific CODEOWNER approvals (without resetting the entire approval for the user) based on changes to the computed `patch-id`.
issue