Since doing more and more with GitHub, I’ve been getting increasingly impressed with the features and workflow of that website. One of the things which really turned me around, was its issue tracker. This is already in use on projects such as EtherCard, as you can see:
The way things are implemented, including mail integration, keyboard shortcuts, and the fact that issue pages update in real time (making them little real-time chat environments) has convinced me that it really is the best place to deal with these things for all JeeLabs projects. This means I’m also not going to enable issue tracking in Redmine after all.
I’m not too concerned about lock-in, because all source code, its history, and even the entire issue tracking dataset is available for download from their site via a REST API.
I’ve also been using GitHub issues quite a bit for HouseMon lately, and have just started using its “milestones” feature, to help organise and plan the pile of work ahead:
Sooo… if you have a problem with JeeLib, Ethercard, etc. and want to report a bug, feel free to do so on the GitHub site. This doesn’t replace or interfere with the discussion forums on the JeeLabs “CafĂ©” in any way, as these continue to be the place for discussion and general questions and support. But for obvious bugs and clear-cut enhancement requests, GitHub is the place to be from now on…
As some people have started to discover, GitHub is also the fastest way to get patches and new features implemented – the mechanism for this is called “forking” and “submitting a pull request” (me pulling your changes into the official libraries, that is).
Here is a nice write-up about the process, written by the developers of “ThinkUp” – but it really applies to any project on GitHub.
As for release versioning, I’ll be using this approach for HouseMon from now on. This means that if you want to follow along and see the latest changes, you need to enter git checkout develop
(once). The “master” branch will only update on the next release.
PS. Still struggling with all the terms and “features” of git. Thanks to @tht on the forum, I’m looking into SourceTree (for Mac), which acts as GUI wrapper around git commands, but I can’t say the coin has dropped quite yet. Things like merge vs rebase sound logical, but I’m sure I’ll get it wrong several more times before getting the hang of it…
If you have a problem with the concepts of a system then, in my experience, using some sort of wrapper is unlikely to be the solution. It just means you now have two problems: the original concepts and the way the wrapper maps. Much better to get your head round the original problems first then see if the wrapper makes practical use more convenient.
I decided on Mercurial just before the rest of the world plumped for git (mostly because of GitHub, I think). I’ll admit I’ve been reluctant to change because I’ve found the odd descriptions of git I have read so muddled.
I will share a secret .. with git .. stash works well .. but dumping the lot and recloning again is also fairly regular ..
enjoy!