rakshasa/rtorrent — Issue #20: revised branching model?
Author: blaenk
Created: 2012-01-07 02:29:03+00:00
State: open

I am happily surprised to see the move of your projects to github! I'm sure it'll encourage more contributions :)

However, now that we're happily on git, have you considered perhaps switching to a different branching/tagging model? Branching operations are ridiculously cheap (i.e. fast, easy, painless) on git compared to subversion as I'm sure you're aware. I think it might be nice to have some way of fetching a copy of the source that has the latest fixes applied, instead of having to wait for them until the new experimental functionality is ironed over and a new major version is released.

One method I've seen is to keep `master` stable while applying fixes etc. to it, and developing the next version on a separate branch such as `dev`. Of course this is just one way, it's really up to you. You could do it the other way around even (i.e. `master` is bleeding and `stable` is stable). My main point is that merging in patches/fixes is convenient enough that it might be possible to maintain a stable version with the latest fixes separate from experimental, perhaps yet unstable, code.

So for example, say a critical fix comes in for 0.8.9, if 0.8.9 'snapshot'/stable was the `master` branch, you simply merge in the fix to `master` and then you can merge that commit into your `dev` branch so that it too has the fix. Then for added benefit, you can tag the new minor version if you want.

Some references:

* [Managing stable and unstable branches in Git](http://philsturgeon.co.uk/blog/2009/11/Managing-stable-and-unstable-branches-in-Git)
* [Branching and Merging](http://learn.github.com/p/branching.html) (look at the section _merging and removing finished branches_)

A nice advantage to this is that users can more or less always have a 'safe bleeding edge' by simply cloning the repo :) It might also cut down on people filing issues for things that have already been fixed but that they can't benefit from unless they track down the fix and merge it in manually. This is something I recently did with [r1246](http://libtorrent.rakshasa.no/changeset/1246) which finally did away with the sporadic crashes I was having! I wasn't even aware of that fix until I ran into it by pure chance after googling for a while. Who knows what other fixes I might be missing out on.

Again it's entirely up to you, I just figured I'd bring it up. Please don't misinterpret my comments, I am not trying to tell you how to run your own project! I'm a fan :)