b - Distributed Bug Tracking
Get bugs resolved, not organized
b is a command-line bug tracker for the Mercurial VCS*. It requires no configuration or setup, it integrates into your repository structure and is committed along with your code, and it's powerful enough to scale from a temporary one man project all the way up to distributed team projects with multiple contributors and reporters. It's built from Steve Losh's excellent task manager t which has a lot of very clever functionality which is carried over here.
Get the stable source code:
hg clone http://hg.digitalgemstones.com/hg/b/
If you would like to develop
b, get the development branch:
hg clone http://hg.digitalgemstones.com/hg/b-dev/
b is a Mercurial extension, so you simply download
b and add the following to a Mercurial config file, like ~/.hgrc:
Full instructions including all the commands and their syntax as well as an FAQ can be found in the README file which is distributed with the source code, and by running
hg b help once installed.
To file a bug from anywhere in your respository structure, just call
hg b add DESCRIPTION:
$ hg b add staff.php page is missing the CEO $ hg b add database calls are slowing down the application $ hg b add the air conditioning is broken
And listing open bugs is just as easy with
hg b list [-r] [-o owner] [-g grep] [-a|-c] [-T]:
$ hg b list b - the air conditioning is broken c - staff.php page is missing the CEO 3 - database calls are slowing down the application Found 3 open bugs
One of the key features of
b that is missing from
b is the ability to add aditional details to tasks, which you can do with:
hg b edit ID
This launches your default editor (for Mercurial commit messages) with a pre-populated set of fields - you can fill in whatever you'd like, and when you call
hg b details ID you'll only see what you've filled in:
$ hg b details 3 Title: database calls are slowing down the application ID: 345bbd9ae2f474e7b4d8a2f0028d3f10faed0488 Filed On: Sunday, June 27 2010 03:52PM [paths] common/db.inc.php [details] Fails to respond every few attempts.
And to keep everyone up to date on the status of a bug, or add additional notes easily, you can comment on bugs with
hg b comment ID a message:
$ hg b comment 3 I think this is actually a 3rd party lib issue $ hg b details 3 Title: database calls are slowing down the application ID: 345bbd9ae2f474e7b4d8a2f0028d3f10faed0488 Filed On: Sunday, June 27 2010 03:52PM [paths] common/db.inc.php [details] Fails to respond every few attempts. [comments] On: Sunday, June 27 2010 04:22PM I think this is actually a 3rd party lib issue
When working with multiple people, you can assign bugs to different people to keep track of responsibilities with
hg b assign ID NAME [-f]:
$ hg b assign 3 Martin -f $ hg b list -o mar 3 - database calls are slowing down the application Found 1 open bug owned by Martin
Again, see the README for more information.
*If you've never heard of Mercurial, it's a great way to manage source code - it runs self contained on your computer, no need to set up a server or have specialized hardware, and it's powerful and user friendly. You can learn more about it from Joel Spolsky's Hg Init, a great introduction to version control and Mercurial.
What It Doesn't Do
b is a lightweight command-line tool, and intentionally lacks many of the features of more powerful products like Jira or Bugzilla. If you find yourself missing field upon field of metadata, scatter charts showing what kind of bugs were filed when, or email notifications of every little change to a bug, then
b is not the tool for you. But if, like me, you often find all those extra 'features' to be unhelpful bloat, you'll be pleasantly surprised by
b, and how easy it is to use and painless to set up.
If you have a suggestion or a bug, please let me know, I'd really like to work to improve this product and make it a useful tool for people.
Artemis is another bug tracker for Mercurial, it's been around for a couple of years now, and it has a different issue tracking model - each issue is a set of messages, steming from a initial root message, and as the issue is updated, more messages are appended. Personally, I prefer
b's model, one file per bug, with linearly appended comments - but then again I'm a little biased. If you're shopping for Mercurial-based bug trackers, Artemis is worth checking out.
Bugs Everywhere, on the other hand, is a very feature rich distributed bug tracker. It's still in development, but when it comes out it will hopefully give some of these bigger bug trackers a run for their money!