bugzyrb

A command-line bug/issue/feature tracking system using sqlite3 as a store. This is a port of bugzy.txt (bash-shell based tracker that uses tab delimited files).

This is not an extensive, full-fledged bug or issue tracker such a bugzilla. Its a simple tracker that maintains one sqlite file per directory. Thus, you could create one for each project.

Maintains priority, severity, status, fix, comments. All updates are logged.

A change in Sqlite3 not supporting arrayfields resulted in everything crashing. I’ve now fixed that – finally.

Purpose

There are already other command-line bug trackers, some ruby some not. I’ve had problems installing many. As far as ruby ones, some do not work on 1.9 and this bug has not been rectified for over a year. Others rely on gems that are broken and the maintainer has abandoned them.

So finally, for personal needs I wrote bugzy.sh (bugzy.txt). However, that’s bash shell based, and relies on GNU’s coreutils being installed with default_names options. I wish to get out of the mess of bash commands having different options across BSD and GNU ( I use a Mac, and use GNU coreutils ). So I am rewriting this simple issue tracker in ruby with sqlite3. The advantage over having data in a SQL database is that the user can query it easily. With having data in separate Yaml files, searching filtering etc is a big pain.

Features

  • Saves bugs with priority (P1-P5), description, comments, fix and other data

  • Various statuses: started/open/closed/canceled

  • Various reports

Changes

0.4.0 has a backward-incompatible change.

“priority” took priority code first then item numbers. all other commands take item numbers first and then other information. So now priority also takes item numbers first.

Earlier you would do:

bu priority P5 3 4 5

Now you would do:

bu priority 3 4 5 P5

Installation

sqlite3 itself has to be installed

brew install sqlite3

TODO Depends on :

  • subcommand (tiny wrapper over optionparser for subcommands)

  • sqlite3

  • highline - for accepting some input

  • terminal-table - for formatting output (this is optional) if you use list –bare, then you don’t need this gem

Install [Gemcutter](gemcutter.org) and execute:

$ gem install bugzyrb

Example

TODO

init: Initialize a database with tables add: Add an issue – will prompt for fields qadd: Add an issue – will use defaults for all fields but title view: view given issue (or last entered)

bugzyrb help
bugzyrb help <command>
bugzyrb init
bugzyrb add  "Something does not work"
bugzyrb qadd "A new issue"
bugzyrb qadd --type "feature" --priority "P5" "Another issue"
bugzyrb view 1
bugzyrb list

# list without using terminal-table, for filtering purposes
bugzyrb list --bare
bugzyrb list --bare --delimited "|"

# list issues with title containing ruby but not containing python
bugzyrb list ruby -python

# list issues with title not containing python
bugzyrb list -- -python

bugzyrb list --short
bugzyrb list --long

Known Issues

For some reason, this loads slowly (I am on OSX Lion, ruby 1.9.3 and 1.9.especially), 2 the first time. My other program, bugzy.txt (also on github) lists out bugs instantly. Seems to be a gem load issue. I use this program for bugs, and bugzy.txt for features.

I’ve also written a couple of shell-scripts for reporting from the sql tables, these scripts print reports instantly. gist.github.com/1437194 gist.github.com/1437244

Database

  • bugs table containing title, id, type, statuses, description, fix, start and due date, etc

  • comments table - any number of comments per issue

  • log - a log of whatever activity has happened per issue/bug.

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Rahul Kumar. See LICENSE for details.