Refactor PostReceive to be more readable
What does this MR do?
This refactors the implementation of gathering/iterating changes from the post-receive hook to be a bit more readable (removed the need for calling enum_for(:changes_refs)
in different places).
This is done with the help of the new Gitlab::Git::Changes
collection object which will be used while parsing the changes.
Also changed the signature of BranchPushService and TagPushService to accept a single change
param instead of having oldrev, newrev and ref params.
This also prepares the PostReceive
worker to be able to process branches and tags separately so we'll be able to aggregate events by branches or tags. It'll be useful for #31007 (closed) and #31009 (closed).
Does this MR meet the acceptance criteria?
Conformity
- [-] Changelog entry
- [-] Documentation created/updated or follow-up review issue created
-
Code review guidelines -
Merge request performance guidelines -
Style guides - [-] Database guides
-
Separation of EE specific content
Performance and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. - [-] Tested in all supported browsers
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
- [-] Label as security and @ mention
@gitlab-com/gl-security/appsec
- [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
- [-] Security reports checked/validated by a reviewer from the AppSec team