Provide merge bot functionality
Description including problem, use cases, benefits, and/or goals
We of the git community have been adopting many workflows but if you check references online, there's one kind of workflow that stands out as a natural and logical evolution but isn't much widespread, it's the workflow with the premise of an existing merging bot.
Example well known workflows
git help workflows
- GitLab Flow
- GitHub Flow
- Git Flow
- Git DMZ Flow
- Atlassian: Comparing Workflows
None of them refers to a merging bot as an actor.
Order of pull-request treatment and merging is an important step for the state of standing pull-requests.
I've learned of the DMZ workflow recently in the comments sections of
the GitLab Flow original post. This workflow touches with more detail this
merging aspect. The explanation of this workflow is particular interesting
because it adopts a merge branch called dmz
and the figure of a merge master
person, a merge branch that as far as I can see is unnecessary (with the master losing
his job) in projects that already adopt homu/bors like the Rust compiler and others.
The Not Rocket Science Rule Of Software Engineering
automatically maintain a repository of code that always passes all the tests
-- Graydon Hoare (summarizing Ben Elliston)
I'm wishing to have this kind of automation fuelled and more spread/common/adopted as soon as possible.
This proposal is somewhat a duplicate of gitlab-ce#4176, and good comments about best integration of bors functionality into GitLab may be found at https://github.com/AelitaBot/aelita/issues/13.
The rationale of the reference merge bot can be checked at:
The Rust community is in the process of providing a independent service for GitHub:
There's an alternative implementation on Rust here:
Command reference for the homu/bors:
Original idea:
Proposal
Not much detail for now besides the idea of GitLab providing the option to have a merge bot integrated to its own CI in the first moment (I never tried GitLab CI). Here are some initial suggestions:
- Bors/Homu-like bot commands.
- Possibly more flexibility at the act of merging. Like, for example, provide the option
for a flexible script to define what merge by bors actually means:
- just a trivial merge tentative?
- a merge tentative after trying/applying a rebase?
- a merge tentative after trying/applying a rebase, if it fails, then fallbacks to a simple merge tentative?
- a merge tentative with stashed commits?
- maybe custom merging commands to name such kind of scripted procedures.
- GitLab CI integration. Idea is provide easy of use and implementation freedom as a native feature of GitLab initially.
~"feature proposal"