nixpkgs Merge Queue - Merge Queue
feature
start-date
author
co-authors
shepherd-team
shepherd-leader
related-issues
(fill me in with a unique ident, my_awesome_feature)
(fill me in with today's date, YYYY-MM-DD)
(name of the main author)
(find a buddy later to help out with the RFC)
(names, to be nominated and accepted by RFC steering committee)
(name to be appointed by RFC steering committee)
(will contain links to implementation PRs)

Summary

This proposes using the Bors bot to perform testing before merging. Hydra will be updated to build the Bors staging branch. This should significantly reduce the frequency of channel blockages.

Motivation

Why are we doing this? What use cases does it support? What is the expected outcome?

Detailed design

  • Patch Bors to support smarter bisection.
  • We need to tell it to just build the failing derivations.
  • Permissions?

Examples and Interactions

This section illustrates the detailed design. This section should clarify all confusion the reader has from the previous sections. It is especially important to counterbalance the desired terseness of the detailed design; if you feel your detailed design is rudely short, consider making this section longer instead.

Drawbacks

Step away from the standard GitHub workflow

Right now nixpkgs contributors can just use the regular GitHub workflow to contribute changes. This is familiar and makes it easy for new contributors to get on board.

It is believed that this will be an acceptable downside since the process for opening a pull request will be the same, and new contributors will not be able to merge on their own anyways. This means that an experienced reviewer will be able to help the new user on the process.

Alternatives

Auto-Rollback

Instead of having a merge queue we can instead just merge to master and have a bot that will automatically revert changes that fail to build.

While this makes less changes to the 

Unresolved questions

  • Will Bors accept a change for smarter bisection?
  • How do permissions work for enqueuing changes?

Future work

What future work, if any, would be implied or impacted by this feature without being directly part of the work?