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.
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 is 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.5.0 ¶ ↑
-
Removed dependence on ‘terminal-table` which gives errors with colored output.
-
Removed dependence on array_fields due to changes in sqlite3.
-
Takes columns of terminal thus listing takes entire available width.
0.4.0 ¶ ↑
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
Depends on :
-
subcommand (tiny wrapper over optionparser for subcommands)
-
sqlite3
-
highline - for accepting some input
$ gem install bugzyrb
Example¶ ↑
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¶ ↑
I’ve also written a couple of shell-scripts for reporting from the sql tables
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¶ ↑
Copyright © 2010 Rahul Kumar. See LICENSE for details.