What does HackerNews think of bors-ng?

πŸ‘ A merge bot for GitHub Pull Requests

Language: Elixir

#4 in Elixir
Not sure if this does the same thing, but bors[1], another implementation of this concept, will batch together multiple PRs into a single CI run and follow a git-bisect-like workflow to identify the bad PR if a batch fails.

[1] https://github.com/bors-ng/bors-ng

Check out something like Bors, which implements a paradigm that fixes this class of issue: https://github.com/bors-ng/bors-ng

(Homepage: https://bors.tech/)

Started making something similar then joined a new company (Brex) and we use https://github.com/bors-ng/bors-ng which is open source and works great. It merges huge batches of PRs and can automatically bisect them if they fail CI checks to find divide and conquer and merge in fewest batches possible. It’s written in Elixir.
> Should CI create a merged branch behind-the-scenes and run tests on that before allowing the branch to be merged?

The answer to that is: yes. The final test cycle before landing code to master MUST be against the code that would be in master after merging.

This is what the better workflow tools do, among other things to prevent these weird error situations. We have Marge-bot for Gitlab. Uber open-sourced their tool for the same some time back.[0] Bors comes up often as a reference, too.[1]

0: Discussion at the time: https://news.ycombinator.com/item?id=19692820

1: https://github.com/bors-ng/bors-ng

Yes, which is why bors-ng[0] is a thing. The fact that LLVM doesn't use it (or something similar) is strange.

[0]: https://github.com/bors-ng/bors-ng

This is exactly the kind of workflow that Bors (https://github.com/bors-ng/bors-ng) automates.

In addition to Bors, there are a number of apps and services that automate this kind of workflow. Here is an incomplete list: https://forum.bors.tech/t/other-apps-that-implement-the-nrsr...

Edited to add: Graydon Hoare (creator of Rust) called this the Not Rocket Science Rule Of Software Engineering (NRSROSE): "automatically maintain a repository of code that always passes all the tests" - https://graydon2.dreamwidth.org/1597.html

Disclaimer: I have contributed code to Bors.

Agreed about the lack of monorepo tooling. There's just not that much out there. A couple of other links I didn't see in the awesome-monorepo:

- https://github.com/facebookexperimental/mononoke - I hear this is a real thing and not a science fair project

- https://github.com/bors-ng/bors-ng - Needed in a monorepo to handle high arrival rate of commits / merges