Coder Social home page Coder Social logo

gitissius's Introduction

GitIssius

About

GitIssius is an issue tracker intergrated in your git repository. In other words a distributed bug tracker.

Why bother?

Your code lives in your git repo. Your documentation lives in your git repo. Why aren’t your bugs in your git repo?

Git provides a really great version control system. Unlike other systems though it does not provide any functionality related to issue / bug tracking. You have to rely on 3rd party systems like Bugzilla or GitHub issue tracker to track your bugs.

This is fundamentally wrong!

  • Because you quit your programming enviroment to visit webpages to add / view bugs.
  • Because the bugs are not stored in the same place as your code and / or documentation.
  • Because you cannot edit / view your bugs offline.

GitIssius comes in action

GitIssius stores your bugs in the same repo where your code lives. It creates another branch named ‘gitissius’ which you don’t have to checkout ever. Provides a git command named ‘issius’ to control you issues.

It was inspired by other distributed bug tracking systems like Fossil, BugsEverywhere and Ditz. Started as a fork of git-issues but then realized that I wanted a completelly different code base, so I wrote most things from scratch.

Features

  • Stores your issues along with your repo
  • No server required
  • Simple operation
  • Tab completion
  • Data is stored in JSON
  • Easilly Extensible
  • Python, no extra libraries required
  • Cross Platform
  • Create and edit bugs offline
  • Distributed

Installation

PyPI (recommended)

~$ sudo pip install gitissius

Bleeding Edge

  1. ~$ git clone http://github.com/glogiotatidis/gitissius
  2. ~$ cd gitissius && sudo python setup.py install

Use

  1. After you finish GitIssius installation go to a git repository.

    ~$ cd /my/git/repo

  2. Start using GitIssius immediatelly!
    • Add a new issue
      • ~$ git issius new
    • List issues
      • ~$ git issius list
    • List issues assigned to you
      • ~$ git issius myissues
    • List issues sorted
      • ~$ git issius list –sort=status
      • ~$ git issius list –sort=assigned_to
    • List issues assigned to ‘[email protected]’, sort by status
    • *List issues assigned everyone but ‘[email protected]’*
    • List all issues but new or assigned
      • ~$ git issius list –all –filter=status__not:new,status__not:assigned
    • Show an issue
      • ~$ git issius show [issue id]
    • Comment on an issues
      • ~$ git issius comment [issue id]
    • Close an issue
      • ~$ git issius close [issue id]
    • Push GitIssius changes
      • ~$ git issius push
    • Get help
      • ~$ git issius help

Tips and tricks

  • Use ‘TAB’ for completion in fields.
  • Install ‘colorama’ package for colors
  • Sorting and Filtering actions can refer to the following fields: assigned_to, created_on, updated_to, reported_from, status, id, title
  • Filtering supports ‘__not’, ‘__exact’ and ‘__startswith’ on text properties.

Community

  • Bug Tracking: GitIssius eats its own food. So to report bugs please use gitissius ;)
  • Tweet at @glogiotatidis

Future

A companion web service comes soon! Write down http://www.gitissius.org

gitissius's People

Contributors

glogiotatidis avatar jinxcat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gitissius's Issues

unicode error during adding issiue

$ git issius new
Title (None): 
 > Title cannot be empty.
Title (None): Error
Type (bug) [b/f/h]: b
Severity (low) [h/m/l/h]: m
Reported From (SOME UNICODE IN NAME!!!): 
Assigned To (None): myname
Status (new) [a/n/c/i/h]: 
Description (End with a line containing only '.'): 
 .
Create issue (y)? y
Traceback (most recent call last):
  File "/home/spinus/usr/opt/lpython/bin/git-issius", line 9, in <module>
    load_entry_point('Gitissius==0.1.6', 'console_scripts', 'git-issius')()
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/gitissius.py", line 104, in main
    commands.command[command](sys.argv[2:])
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/commands/__init__.py", line 17, in __call__
    return self._execute(options, args)
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/commands/new_issue.py", line 28, in _execute
    common.git_repo[issue.path] = issue.serialize(indent=4)
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/database.py", line 70, in serialize
    item_data = item.serialize()
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/properties.py", line 113, in serialize
    'value': unicode(self.value)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 9: ordinal not in range(128)

Bash completion

Hi Giorgos,

I already wrote the script for this about a year ago, and e-mailed you about it. I never got around to join github, but now I finally did -- so here it is!

duncanvr/gitissius@9b087a0 and duncanvr/gitissius@748ad1f

I'll add a pull request in a bit, that will include some more commits -- or you could just cherry-pick these.

idea: add support for importing/sync'ing github issues

I like the idea of gitissius, however, it doesn't quite solve the problem of users that wish to report bugs that are not themselves git users or experts. I think the github issue tracker is still the best way a new user that's unfamiliar (or uninterested) with git can report issues easily (assuming the project is hosted on github of course...). It would be useful if gitissius supported importing and syncing issues with github using the new github api using something like https://github.com/dustin/py-github

Support multiple upstream branches

Currently the code to pull/push is hard-coded to the remote origin, making it not possible to use a different remote. The following commit fixes this, allowing you to set the remote to use with git branch gitissius --set-upstream-to=your_remote. It also modifies the initialization code to check for remotes that already have a gitissius branch, and then:

  • clone it when there is one;
  • start a new one if no such branches exist;
  • exit with a helpful message if multiple remotes have one.

duncanvr/gitissius@8e8a066

I'll add a pull request in a bit, that will include some more commits -- or you could just cherry-pick that one.

error on empty issiues list

On new repo with few commits, when you try list issiues (without adding some issiue before) there is an error.

$ git issius list
Traceback (most recent call last):
  File "/home/spinus/usr/opt/lpython/bin/git-issius", line 9, in <module>
    load_entry_point('Gitissius==0.1.6', 'console_scripts', 'git-issius')()
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/gitissius.py", line 104, in main
    commands.command[command](sys.argv[2:])
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/commands/__init__.py", line 17, in __call__
    return self._execute(options, args)
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/commands/list_issues.py", line 48, in _execute
    rules=filters)
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/database.py", line 256, in filter
    matching_keys = self.issuedb.keys()
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/database.py", line 196, in issuedb
    self._build_issuedb()
  File "/home/spinus/usr/opt/lpython/lib/python2.7/site-packages/Gitissius-0.1.6-py2.7.egg/gitissius/database.py", line 229, in _build_issuedb
    obj = Issue.load(json.loads(common.git_repo[issue]))
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

Initialization destroys untracked files

When running gitissius for the first time in a repository that has some untracked files, those files are removed. The following commit fixes this (for me).

duncanvr/gitissius@6860adf

I'll add a pull request in a bit, that will include some more commits -- or you could just cherry-pick that one.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.