dexelit /

Filename Size Date modified Message
dexelit
31 B
4.9 KB
540 B

Project name

"Distributed issue tracker" in Latin is "Distribuit EXitus ELIT" from which name Dexelit is made.

Directory structure

One ticket, per file, but also, should be possible to write many tickets to one file, and then using a tool, this file will be parsed and split in to many tickets.

Example of file structure with files, that contains one ticket:

'
`-- my-projects
    |-- my-ticket.rst
    `-- other-ticket.rst

Multiple tickets from one file

Example of single file, with many tickets, that can be split in to many tickets using a tool:

My ticket
=========

:created: 2012-01-01 10:00
:author: sirex
:type: ticket

Ticket description.

Other ticket
============

:created: 2012-01-01 10:30
:author: sirex
:type: ticket

Other ticket description.

To split this file:

$ dexelit split filename.rst

It is possible to keep many tickets even in hierarchical structure in one file, example:

Ticket 1
========

:type: ticket

Description.

Sub Ticket 2
------------

:type: ticket

Description.

Sub Sub Ticket 3
''''''''''''''''

:type: ticket

Description.

Tickets will be recognized by :type: ticket field, and hierarchy will be taken from headings.

Categories

Tickets can have categories:

'
`-- my-project
    |-- my-ticket.rst
    |-- feature-tickets
    |   |-- index.rst
    |   `-- a-feature-ticket.rst
    `-- other-ticket.rst

index.rst file describes category as one ticket.

Updating multiple tickets

It is possible, using a tool to manage multiple tickets at once, for example:

$ dexelit manage ./my-project/

This command generates editable file, that will be opened with your favorite text editor and will content looks like this:

# Available actions:
#
# * delete - delete following tickets, deleted tickets still stays under
#   revision control an can be restored if needed.
#
# * priority=<priority> - set ticket priority to <priority>, <priority>
#   must be integer number.
#
# * close - mark tickets as closed.
#
# * assign=<user> - assigne tickets to a user, if <user> is empty, then
#   tickets will be unassigned.

action: close
    my-ticket.rst

feature-tickets/index.rst

action: priority=100 assign=sirex
    feature-tickets/a-feature-ticket.rst
    other-ticket.rst

All indented actions will be updated by specified action.

Archive

Old and closed tickets can be deleted automatically using this command:

$ dexelit archive

Import

Tickets can be imported from Trac:

$ dexelit pull trac+http://issues.myproject.com/

Export

You can export all modifications to an external issue tracker using this command:

$ dexelit push trac+http://issues.myproject.com/

You can only export modifications if you have previously imported from that source. After import, dexelit tracks last update info, and only exports what is modified locally.

Build-in web server

Ticket tracker has build-in web server based on Django, that displays all tickets in web browser.

Integration with gTimeLog

It is possible to integrate ticket tracker with gTimeLog, for time management. To enable gTimeLog support, you need to enable it in ~/.dexelitrc file.

Ticket tracker simply checks all gTimeLog entries and tries to match them with projects.

Also it is possible to record time using this command:

$ cd /path/to/my-project/
$ dexelit log ticket.rst

This command will add line to gTimeLog log file:

2012-07-12 13:39: my-project: ticket

Also calculates whole spent time for this ticket and updates :spent: field.

Reviewers

Ticket can have reviewers, that are responsible to accept ticket if it is implemented correctly.

Example:

My ticket
=========

:author: sirex
:reviewers: laurynas marius
:type: ticket

If laurynas accepts this ticket, then :reviewers: line should look like this:

:reviewers: laurynas=ok marius

Comments

Comment can be written as .. note:: blocks everywhere in ticket description.

Project description file

index.rst file in project root is used as project description file.

Project repositories

Projects can have many repositories with one default. All repositories can be specified in index.rst project file this way:

Repositories
============

Default project repository
--------------------------

:repository: http://hg.example.com/default
:default: yes
:type: repository=mercurial

My branch
---------

:repository: http://hg.example.com/my-branch
:type: repository=mercurial

Description of this repository.
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.