Skip to content

Draft: PoC: Fast-forward and semi-linear merge trains

Hordur Freyr Yngvason requested to merge poc-semi-linear-merge-trains into master

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.

Edited by Hordur Freyr Yngvason

Merge request reports