Simple git extension to manage issues in single-developer projects
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitli
.gitignore
LICENSE
MANIFEST.in
README.rst
git-li
gitli.py
setup.py
tests.py
tox.ini

README.rst

gitli - Git Lightweight Issue Tracking System

Authors: Barthelemy Dagenais
Version: 0.4

gitli is a simple git extension to manage issues in single-developer projects.

The issues are stored in the current branch of the git repository. gitli is not a distributed issue tracker. It's just a script that I wrote after spending a day looking for that kind of lightweight issue tracker for private projects.

The script does not attempt to prevent goofs, and error messages can make children cry.

Don't hesitate to create issues in the github bug tracker if you have a feature request or encounter a bug though.

Requirements

gitli has been tested with Python 2.6, 2.7, 3.1, and 3.2.

Installation

Use pip or easy_install: easy_install gitli

Alternatively:

  1. Make the git-li script executable (e.g., chmod a+x git-li).
  2. Add the git-li script to your path (e.g., export PATH=$PATH:/path/to/git-li)
  3. You are done.

Usage

First, create a git repository and then, initialize git li. Notice the files created by gitli.

projects $ mkdir testgitli
projects $ cd testgitli
testgitli $ git init
Initialized empty Git repository in projects/testgitli/.git/
testgitli $ git li init
testgitli $ git addremove
testgitli $ git commit -m 'initial import'
[master (root-commit) 8ef5046] initial import
  2 files changed, 2 insertions(+), 0 deletions(-)
  create mode 100644 .gitli/.issues
  create mode 100644 .gitli/.issues-comments
  create mode 100644 .gitli/.issues-current
  create mode 100644 .gitli/.issues-last
  create mode 100644 .gitli/.issues-open

Then, create a few issues. Notice the use of -e to override the default values:

testgitli $ git li new 'My First Issue'
testgitli $ git li -e new 'My Second Issue'
Issue type: 1-Task, 2-Bug, 3-Enhancement [1]: 2
Milestone: [0.1]:
testgitli $ git li -e new 'My Third Issue'
Issue type: 1-Task, 2-Bug, 3-Enhancement [1]: 1
Milestone: [0.1]: 0.2
testgitli $ git li new 'My Fourth Issue'

The list command:

testgitli $ git li list
#1    My First Issue                                   [Task] [0.1]   - open
#2    My Second Issue                                  [Bug]  [0.1]   - open
#3    My Third Issue                                   [Task] [0.2]   - open
#4    My Fourth Issue                                  [Task] [0.1]   - open

The close command:

testgitli $ git li close 4
testgitli $ git li list
#1    My First Issue                                   [Task] [0.1]   - open
#2    My Second Issue                                  [Bug]  [0.1]   - open
#3    My Third Issue                                   [Task] [0.2]   - open
#4    My Fourth Issue                                  [Task] [0.1]   - closed

The list command with filters:

testgitli $ git li list open
#1    My First Issue                                   [Task] [0.1]   - open
#2    My Second Issue                                  [Bug]  [0.1]   - open
#3    My Third Issue                                   [Task] [0.2]   - open
testgitli $ git li list close
#4    My Fourth Issue                                  [Task] [0.1]   - closed
testgitli $ git li open bug
testgitli $ git li list open bug
#2    My Second Issue                                  [Bug]  [0.1]   - open
testgitli $ git li list open bug 0.1
#2    My Second Issue                                  [Bug]  [0.1]   - open

The reopen command:

testgitli $ git li reopen 4
testgitli $ git li list
#1    My First Issue                                   [Task] [0.1]   - open
#2    My Second Issue                                  [Bug]  [0.1]   - open
#3    My Third Issue                                   [Task] [0.2]   - open
#4    My Fourth Issue                                  [Task] [0.1]   - open

Edit an issue (notice the use of default values):

testgitli $ git li edit 3
Enter a new title (enter nothing to keep the same):
Issue type: 1-Task, 2-Bug, 3-Enhancement [3]: 1
Milestone: [0.2]: 0.1
testgitli $ git li list
#1    My First Issue                                   [Task] [0.1]   - open
#2    My Second Issue                                  [Bug]  [0.1]   - open
#3    My Third Issue                                   [Task] [0.1]   - open
#4    My Fourth Issue                                  [Task] [0.1]   - open

Update the default milestone:

testgitli $ git li milestone 0.2
testgitli $ git li new 'My Fifth Issue'
testgitli $ git li list
#1    My First Issue                                   [Task] [0.1]   - open
#2    My Second Issue                                  [Bug]  [0.1]   - open
#3    My Third Issue                                   [Task] [0.1]   - open
#4    My Fourth Issue                                  [Task] [0.1]   - open
#5    My Fifth Issue                                   [Task] [0.2]   - open

The show command:

testgitli $ git li show 5
#5    My Fifth Issue                                   [Task] [0.2]   - open

The remove command:

testgitli $ git li remove 5
testgitli $ git li list
#1    My First Issue                                   [Task] [0.1]   - open
#2    My Second Issue                                  [Bug]  [0.1]   - open
#3    My Third Issue                                   [Task] [0.1]   - open
#4    My Fourth Issue                                  [Task] [0.1]   - open

Update the default milestone and move all open issues to the new milestone:

testgitli $ git li milestone --up 0.3
testgitli $ git li list
#1    My First Issue                                   [Task] [0.3]   - open
#2    My Second Issue                                  [Bug]  [0.3]   - open
#3    My Third Issue                                   [Task] [0.3]   - open
#4    My Fourth Issue                                  [Task] [0.3]   - open

Show the usage help:

testgitli $ git-li --help
Usage: git-li <command> [command-options]

Commands:
init                      Initialize the git repositoryto use git-li
list <PATTERN...>         List issues for this repository
new  [--edit] <TITLE>     Create a new issue for this repository
show <NUMBER>             Show the given issue
edit <NUMBER>             Edit the given issue
reopen <NUMBER>           Reopen the given issue
remove <NUMBER>           Remove the given issue (removes all info)
milestone                 Show the current milestone
milestone [--up] <MILE>   Set the current milestone
close <NUMBER>            Close the given issue

A few examples:
git li init

git li new 'My First Issue'

git li close 1

git li list open task 0.1

Aliases:
git li new|add|open
git li remove|delete

Options:
-h, --help  show this help message and exit
-e, --edit  change issue type and milestone when adding a new issue.
-u, --up    Move all the open issues to the next milestone specified by the
            milestone command.

Git Configuration Variables

git config --add gitli.color auto
Colorizes the shell output.
git config --add gitli.list.option <option>
Specifies a default list option. For example, if you choose open, the next time you call the list command without any option, gitli will only display the open issues.

License

This software is licensed under the New BSD License. See the LICENSE file in the for the full license text.