[rust-dev] bors

Graydon Hoare graydon at mozilla.com
Thu Feb 7 19:00:41 PST 2013


Hi,

Many on the IRC channel (or those watching the commit stream) will have
noticed we've recently enabled an "auto-merge" robot (named "bors"[1]).
This slightly changes the path for merging code into our repository.

For the most part no changes are required to people submitting pull
requests: keep doing what you've been doing, and when a reviewer signs
off on one of your commits by writing "r+" in a comment on the final
commit of a pull req, bors will automatically:

  - Form a new merge node based on your pull + incoming
  - Wait for results from that to come back from buildbot
  - If successful, advance incoming to that node
  - Otherwise report how the change failed

The only thing you're likely to notice is a certain degree of chatter
from bors as it steps through its automation. It makes comments, such as
in this pull request:

  https://github.com/mozilla/rust/pull/4832

This is just automation of a somewhat tedious merge-making and
testsuite-watching behavior that we were previously doing manually (and
spending a lot of time at, and occasionally skipping steps of).
Automating it frees up time, lets the robot do useful work overnight
when reviewers are asleep, and ensures that we never skip running tests
"optimistically". Incoming only ever advances to merge nodes that are
_exactly_ the bits that tested OK.

It retries if you move incoming while it's working, so tends to behave
"mostly gracefully" with respect to disruption around it. If it
misbehaves, it can be provoked to retry a commit with a comment from a
reviewer saying "@bors: retry". It ignores comments by non-reviewers. It
also does not merge "updates" to a pull req. It considers comments on
commits only, not pull reqs; if you update a pull req to contain new
commits, they need to be reviewed anew.

While we were testing it, it only considered pull requests with the word
"auto: " in the title, so this is what those strings mean in recent pull
requests. I've now opened it up to processing all pull requests; you do
not need to put "auto: " on the title anymore.

If you have feature requests or want it to behave differently, please
let me know. I'll be conducting a brief security review with some
mozilla folks and open-sourcing it soon for others who want to apply
similar behavior to their own repositories. It's a very small, simple
script.

I'll also be posting a new URL soon that will hold a
regularly-refreshing description of bors' work queue so folks can
monitor what it's doing and planning-to-do (and ignoring) without having
to re-read the state of all the pull reqs.

-Graydon


[1] It was hard to find a non-annoying robot name that isn't already
taken on github; settled on this one:
en.wikipedia.org/wiki/The_Last_of_the_Masters#The_last_government



More information about the Rust-dev mailing list