Package gobmap finds relevant LUCI project config given a Gerrit CL.
gobmap constructs the map based on LUCI project's ConfigGroups, and supports efficiently updating the map whenever Project configs change.
Lookup returns config group IDs which watch the given combination of Gerrit host, repo and ref.
For example: the input might be ("chromium-review.googlesource.com", "chromium/src", "refs/heads/main"), and the output might be 0 or 1 or multiple IDs which can be used to fetch config groups.
Due to the ref_regexp[_exclude] options, CV can't ensure that each possible combination is watched by at most one ConfigGroup, which is why this may return multiple ConfigGroupIDs even for the same LUCI project.
Update loads the new config and updates the gob map entities accordingly.
This may include adding, removing and modifying entities.
TODO(qyearsley): Handle possible race condition; There may be 2 or more concurrent Update calls, which could lead to corrupted data.