5 ms·
Check out something like Bors, which implements a paradigm that fixes this class of issue: https://github.com/bors-ng/bors-ng https://github.com/bors-ng/bors-ng
by apetresc 5y ago
Check out something like Bors, which implements a paradigm that fixes this class of issue: https://github.com/bors-ng/bors-ng https://github.com/bors-ng/bors-ng
(Homepage: https://bors.tech/ https://bors.tech/)
- dathinab 5y agoI can recommend it. Even if you don't have a supper high commit frequency it is still nice to enable certain rebase/stacked PR workflows. Which can remove a lot of friction even for teams which "just" have idk. 6 PRs merged per day (but other PRs which are based on top of this PRs in review and progress maybe stacked multiple layers deep).
- mijoharas 5y agoDoes bors stand for something? what does the ng stand for? (I wasn't able to find out while googling.)
- nicoburns 5y agoHistorical context: https://github.com/graydon/bors https://github.com/graydon/bors
- notriddle 5y agoThe one thing it doesn't mention is that bors is named after a character from a short story: https://en.wikipedia.org/wiki/The_Last_of_the_Masters https://en.wikipedia.org/wiki/The_Last_of_the_Masters
- pxeger1 5y ago-ng is a suffix sometimes used for "reboots" of abandoned or poorly maintained software; I believe it stands for "next generation".
- quinncom 5y agoThanks, I assumed that's what it meant. It's not terribly common, but there are a few packages using this naming convention: aircrack-ng, bwm-ng, crosstool-ng, libcap-ng, lincity-ng, minizip-ng, proxychains-ng, raxml-ng, recon-ng, stress-ng, zlib-ng, macfusion-ng, shadowsocksx-ng
- rrss 5y agodoes bors limit the commit frequency / PR merge frequency to one merge every test runtime (5 minutes in OP), or does it do something more complex and speculate / run some stuff in parallel? OP’s numbers are 120 commits per hour and 5 minute test run, I’m wondering if adopting bors would necessarily reduce that to 12 commits per hour.
- henryfjordan 5y agoBors batches PRs, tests the batch, then merges the whole batch at once. It's made to handle high-throughput repos.
- krab 5y agoIt tries to build all queued changes together at first. So if you don't have any conflicts, there is no throughput limit.
- TheCoelacanth 5y agoWhat about if something in the middle causes a failure? Does it have a git-bisect-like workflow to figure out the bad change?
- krab 5y agoAccording to the README, it bisects. It doesn't matter much for me, though - the batches in our case were never big. https://github.com/bors-ng/bors-ng/blob/master/README.md#how-it-works https://github.com/bors-ng/bors-ng/blob/master/README.md#how...
- anelson 5y agoWe use bors as well. Our repo isn’t particularly active, a few dozen committers at any one time, but it lets us have pretty aggressive checks on master without having to run them separately for each PR before it lands. Definitely recommended. We run ours on a Heroku instance it’s cheap and almost entirely maintenance free.