Draft: PoC: Fast-forward and semi-linear merge trains
What does this MR do and why?
This is a proof-of-concept implementation for fast-forward and semi-linear merge trains. It works on the happy path, but does not handle edge cases, and there are no tests at all.
!!! IT IS ABSOLUTELY NOT MEANT TO BE MERGED !!!
It builds on the Gitaly changes in gitaly!5897 (closed) and changes merge trains to work as follows when semi-linear merges are enabled:
- Create each train car's ref with a semi-linear merge on top of the previous car's ref.
- Changes merge train commit messages to align with the normal commit message, to make the train ref look like a the desired target ref.
- Merges each train ref by performing a fast-forward merge. This should work today regardless of merge method because immediate merges interrupt the train, but #414505 (closed) would invalidate this assumption.
Screenshots or screen recordings
Screenshots are required for UI changes, and strongly recommended for all other merge requests.
Before | After |
---|---|
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Hordur Freyr Yngvason