I’ve been working on a little side project the last couple days. A tool to solve my increasingly frustrating and time-consuming problem of maintaining and building the growing list of packages that makes up the Cinnamon software ‘stack.’ There were a couple core things I wanted to accomplish: automate my git rebasing, and automate my building.
So I wrote Git Monkey
It won’t win any awards, definitely doesn’t adhere to proper HIG’s, but I find it works better than I even imagined it could, and it’s fairly functional as a development hub, at least for myself.
For now, it works off a configuration file, in which you list all projects you want to work with (I’ve included mine as a sample) – by providing the name of the project, the git remote name for upstream, and the upstream branch to pull against (generally master).
There are a number of operations you can currently do:
- Rebase to current upstream master
- git clean and git reset
- Open a terminal in that project’s base folder
- Build a project (only dpkg-buildpackage for now)
- Clean/Reset all projects
- Rebase all projects
- Build all projects
- Create a new branch for development
- Check out a github pull request (just enter the PR number)
Everything is threaded (sort of) so the UI remains responsive during builds, but there is a queueing system, so only one build happens at a time, for instance, and every operation is cancellable.
I have more plans for it, but it’s pretty functional as is right now.
If I’m feeling adventurous maybe I’ll add it to a PPA eventually. For now you can get the source at https://github.com/mtwebster/git-monkey. Clone it, run dpkg-buildpackage from that folder, then install the resulting .deb (or, since there’s really only 3 files, you could instead just copy them to their appropriate locations). I’ve got a sample config file that you can use to make your own, and place it in your home folder. Once you’re all set up, just run git-monkey from the terminal.
Update 10/8/2013 – I’ve added this to a PPA, and made initial setup a bit more user-friendly. Just run it, and you can add git repos on the fly.
Ok have fun!