Git is a fantastic version control system, no question. I’ve been using it since maybe 2012, though at that time it was through a TFS-Git bridge so I could enjoy local (and cheap) branches while the rest of the company used TFS.
Of course, with git you also need a central place to push your code where other developers and your infrastructure can access it. This is where places like Github come in.
Generally, I like Github. The interface is clean and usable, plus I can now have public and private repositories for free. However…
Github is built around repositories. This is to be expected, it’s how all git hosts do things. The catch is that often your work, particularly if you’re a consultant, may touch multiple repositories.
In my previous workplace, they had split the main code into no less than four repositories. One for the base Linux image (this was for embedded devices), one for application code, one for test code, and one for drivers. In some cases, this meant that a single “feature” may require 4 separate, but dependent, pull requests.
Another example; my current project involves working on a core Ruby gem, another “base package” for an external system, and numerous client applications - again, a single “feature” can result in multiple pull requests spanning several repositories.
This is where GitArborist comes in, a new Github App I’m building to help ease the overhead of this kind of scenario. Why the name GitArborist? Git involves creating branches, so I wanted a name that indicated this was a project to tame wild branches.
How does it work?
Currently, it is PR-comment based. You simply open a PR as usual, with a comment (or description) that summons GitArborist like this:
@GitArborist merge after #12
You then get a nice new ‘pending’ status on the PR, showing it is waiting on another one to close. Once PR 12 is closed, GitArborist will instantly merge this one as well (assuming it has a green status, i.e. CI passed etc).
Interested? You can take it for a spin right now from the Github Marketplace. It is currently free for the first 100 installations. After this, the intention is to offer a free plan for non-commercial open-source, and a paid per-seat plan for all other accounts.