Current project status: see the ditz ditz page. Current project news: see the blog and mailing list archives.

Ditz is a simple, light-weight distributed issue tracker designed to work with distributed version control systems like git, darcs, Mercurial, and Bazaar. It can also be used with centralized systems like SVN.

Ditz features a simple, clean commandline interface, a robust plugin architecture which allows for adding commands and extending model fields and ditz output, a human-editable file format, and an active developer community.

Ditz also provides static HTML generation capabilities for producing world-readable status pages (for a demo, see the ditz ditz page). It currently offers no central public method of bug submission.


$ ditz status
0.4         0/ 1 bugfix,  3/ 6 features,  1/ 1 task  xxxx__>>
unassigned  0/ 1 bugfix,  1/ 6 features,  0/ 0 tasks x______

$ ditz
Version 0.4 (unreleased):
>  ditz-5: plugin architecture for tighter SCM integration, etc
> ditz-45: bash shell completion
_ ditz-42: add a --comment option like git commit -m
_ ditz-54: HOME environment variable not available on windows

_  ditz-1: commands needs full argument parsing
_ ditz-32: extended help for commands
_ ditz-37: created and deleted events not in logs
_ ditz-53: allow commands like 'start', 'stop', 'close', etc to take multiple arguments
_ ditz-55: add 'reconfigure' command
_ ditz-58: log and shortlog should take an optional component name
$ ditz show ditz-45
Issue ditz-45
      Title: bash shell completion
Description: we have zsh (ditz-34). but i use bash!
       Type: feature
     Status: in progress
    Creator: William Morgan (wmorgan-ditz)
        Age: three months
    Release: 0.4
 Identifier: d96a7a95dedc20072df13afa4515ee5d739229ce
 Git branch: none

Event log:
- changed status from closed to in_progress (wmorgan-ditz, 70 hours ago)
  > re-opening because there's going to be more work thanks to ditz-57.
- closed issue with disposition fixed (wmorgan-ditz, eight days ago)
  > contributed by christian garbs
- assigned to release 0.4 from unassigned (wmorgan-ditz, eight days ago)
- created (wmorgan-ditz, three months ago)
$ ditz add
Title: remove "references"
Description (ctrl-d, ., or /stop to stop, /edit to edit, /reset to reset):
> with the advent of decent issue interpolation, this isn't that useful.
> this probably deserves some more thought before becoming reality.
> .
Is this a (b)ugfix, a (f)eature, or a (t)ask? t
Assign to a release now? (y/n): n
Issue creator (enter for "William Morgan (wmorgan-ditz)"): 
Comments (ctrl-d, ., or /stop to stop, /edit to edit, /reset to reset):
> .
Added issue ditz-59.


Ditz maintains an issue database directory on disk, with files written in a line-based and human-editable format. This directory can be kept under version control, alongside project code.

There are several different ways to use ditz:

  1. Treat issue change the same as code change: include it as part of commits, and merge it with changes from other developers, resolving conflicts in the usual manner.
  2. Keep the issue database in the repository but in a separate branch. Issue changes can be managed by your VCS, but is not tied directly to code commits.
  3. Keep the issue database separate and not under VCS at all.

For more, read the README and the plugin documentation.

Getting it

You can download ditz releases from the ditz RubyForge page. Or, if you have RubyGems installed, simply command your computer to "gem install ditz".

ditz Debian packages are kindly contributed by Christian Garbs. There's also a ditz RFP if you are a Debian maintainer with time on your hands.

For source code access, the ditz repository is on Gitorious. You can clone it locally like so: git clone git://gitorious.org/ditz/mainline.git. You can also browse the ditz git repository.

Bug reports

Feel free to post bug reports, feature requests, and any comments or discussion topics to the ditz-talk mailing list (archives).

Of course, you can also submit a bug report by cloning the git repo, using "ditz add" to add an issue, and sending a merge request or submitting the resulting patch.

Related Work

Ditz commander, a GUI frontend for Ditz.

There's a Ditz emacs mode by Kentaro Kuribayashi.


Ditz is brought to you by William Morgan and by