Skip to content

Provide merge bot functionality

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

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

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"

Edited by 🤖 GitLab Bot 🤖