Skip to content
jeffWelling edited this page Feb 8, 2011 · 22 revisions

TicGit is now unmaintained, and subsequently deprecated. For the most up to date version of Ticgit, now renamed to Ticgit-ng to avoid gem namespace clashes, see https://github.com/jeffWelling/ticgit


For questions and feature discussion, we’ve got a google group:
http://groups.google.com/group/ticgit (DEPRECATED: See ‘Updates’ at the bottom)

TicGit is a simple ticketing system, roughly similar to the Lighthouse model, that is based in git. It provides a command line client that uses the ‘git’ gem to keep its ticketing information in a separate branch (called ‘ticgit’) within your existing git repository. All the data is file based and rarely changing, decreasing the likelihood of a merge issue. Right now, ticket branch merges need to be done manually and separately, but I’ll write a tool that helps pretty soon.

The idea is that it keeps your tickets in the same repository, but without mucking up your working tree. It keeps no files in any of your working tree – it is a completely different branch in your repo.

Eventually, I’ll get a little webapp that can manipulate the tickets and provide a view on them as well, but the command line client is currently pretty usable by itself. It will automatically create the new branch the first time you use it, and it caches all the data (another working directory and index file) in your ~/.ticgit directory by default. If you delete that directory, it will just create it again the next time, you will lose no data (except some of your saved preferences).

TicGit is currently using itself to store its feature requests and bug reports.

Next on the hit list are :

  • automated tests
  • file attachments
  • bulk tag management
  • cli color and less paging

Installing TicGit

You can now install ticgit via the github gems feature:

sudo gem install schacon-ticgit --source=http://gems.github.com

On Ubuntu 9.10

sudo apt-get install ticgit

Sharing with Others

To share your ticgit changes, you’ll have to make sure your pushes include your ‘ticgit’ branch. You can run this command to do that:

git push origin ticgit

After that, every ‘git push’ should sync both ‘master’ and ‘ticgit’ branches.
Alternately, you can add one of these lines to your .git/config file, under whatever remote you want to push it to :

push = refs/heads/ticgit:refs/heads/ticgit

Examples

The first time you use any command in ticgit, it will create a new branch in your repo called ‘ticgit’ and setup a caching area in ~/.ticgit.

If you run it without arguments, it will tell you what is available to run:


$>ti
Please specify at least one action to execute.
list state show new checkout comment tag

To create a new simple ticket:

ti new -t 'my new ticket'

To list all your tickets:


#>ti list
  1. TicId Title State Date Assgn Tags
    -——————————————————————————————————————-
  2. 1 9ebd07 add attachment to ticket open 03/22 schacon attach,feature
    2 6ca8be download attached file open 03/22 schacon attach,feature
    3 bec8e9 add a milestone resol 03/22 schacon feature,milestone,ne
    4 9b83ea general tag management open 03/22 schacon feature,tags
    5 94f24e show expanded comments open 03/22 schacon feature,ticket
    6 f3dd9b remove a ticket open 03/22 schacon feature,ticket
    7 e1629e improved cli support open 03/22 schacon cli,feature

To checkout a ticket to work on:


#>ti checkout 6
#>ti list
  1. TicId Title State Date Assgn Tags
    -——————————————————————————————————————-
    1 9ebd07 add attachment to ticket open 03/22 schacon attach,feature
    2 6ca8be download attached file open 03/22 schacon attach,feature
    3 bec8e9 add a milestone resol 03/22 schacon feature,milestone,ne
    4 9b83ea general tag management open 03/22 schacon feature,tags
    5 94f24e show expanded comments open 03/22 schacon feature,ticket
  2. 6 f3dd9b remove a ticket open 03/22 schacon feature,ticket
    7 e1629e improved cli support open 03/22 schacon cli,feature

Most of the other commands run on the checked out ticket if you don’t specify another one. For example:

develop>ti state hold
develop>ti list

     # TicId  Title                     State Date  Assgn    Tags                
--------------------------------------------------------------------------------
     1 9ebd07 add attachment to ticket  open  03/22 schacon  attach,feature      
     2 6ca8be download attached file    open  03/22 schacon  attach,feature      
     3 bec8e9 add a milestone           resol 03/22 schacon  feature,milestone,ne
     4 9b83ea general tag management    open  03/22 schacon  feature,tags        
     5 94f24e show expanded comments    open  03/22 schacon  feature,ticket      
*    6 f3dd9b remove a ticket           hold  03/22 schacon  feature,ticket      
     7 e1629e improved cli support      open  03/22 schacon  cli,feature         

If you wanted to change the state of the first ticket to ‘hold’ while still working on the sixth, you can run this instead:

#>ti state 1 hold

Where ticgit expects a ticket id, it will take either the number of the ticket on the last ‘list’ you did (ie: 1-7 in the examples), or it will take the partial sha each ticket is assigned when it is created – that number never changes for the life of the ticket, even across repositories, so you can email that number to someone else working on the project so they can identify it. If nothing is specified, it will use the currently checked out ticket.

#>ti show 94f24

Title     : show expanded comments
TicId     : 94f24ef0b6bbbcf49234d25abcb781a1c52229e7

Assigned  : [email protected]
Opened    : Sat Mar 22 10:18:47 PDT 2008 (1 days)
State     : OPEN
Tags      : feature, ticket

Comments (1):
  * Added 03/22 10:18 by [email protected]
        i can't read the comments if they're longer than 3 lines

You can also tag or leave comments like this:

ti tag 6 feature
ti comment (ticketid) -m 'my comment'

For the ‘comment’ and ‘new’ actions, if you don’t specify a ‘-m’ for the message, it puts you into $EDITOR to write it. The ‘new’ action is especially useful with this, because you can also tag it and give it an initial comment when you create it this way:

# ---
tags:
# first line will be the title of the tic, the rest will be the first comment
# if you would like to add initial tags, put them on the 'tags:' line, comma delim
~                                                                                                                  
~                                                                                                                  
~                           

The ‘list’ command can also be sorted and filtered:

develop>ti list -h
Usage: ti list [options]
    -o, --order ORDER                Field to order by - one of : assigned,state,date
    -t, --tag TAG                    List only tickets with specific tag
    -s, --state STATE                List only tickets in a specific state
    -a, --assigned ASSIGNED          List only tickets assigned to someone
    -S, --saveas SAVENAME            Save this list as a saved name
    -l, --list                       Show the saved queries

So if you wanted to see a list of all your tickets that have the ‘feature’ tag, assigned to ‘schacon’ and are ‘open’, ordered by date opened descending, and save that view as ‘mytics’, you can run this:

#>ti list -t feature -s open  -a schac -o date.desc -S mytics

     # TicId  Title                     State Date  Assgn    Tags                
--------------------------------------------------------------------------------
     1 6f9e7c priority for ticket       open  03/23 schacon  feature,ticket      
     2 93ef93 change ticket assignment  open  03/22 schacon  feature             
     3 9b0e09 link to a git object      open  03/22 schacon  feature,ticket      
     4 28c3fa start web ui              open  03/22 schacon  feature,webapp      
     5 e1629e improved cli support      open  03/22 schacon  cli,feature         
     6 94f24e show expanded comments    open  03/22 schacon  feature,ticket      
     7 9b83ea general tag management    open  03/22 schacon  feature,tags        
     8 6ca8be download attached file    open  03/22 schacon  attach,feature      
     9 9ebd07 add attachment to ticket  open  03/22 schacon  attach,feature      

Then, if you want that same view later, you can do :


#>ti list mytics

If you want to see recent actions on the ticgit branch, you can run

#>ti recent
c8b979c  03/23 12:33        added state (hold) to ticket 1206206444_remove-a-ticket_143
2268c45  03/23 12:11        added comment to ticket 1206207422_change-ticket-assignment_157
0257e6b  03/23 11:55        added state (open) to ticket 1206206747_link-to-a-git-object_972
f065c2c  03/23 11:55        added state (open) to ticket 1206206679_start-web-ui_911
9901f07  03/23 11:52        added ticket 1206298375_priority-for-ticket_953
ea747b7  03/23 11:50        added state (resolved) to ticket 1206206220_add-a-milestone_912
11bb2de  03/23 11:49        added comment to ticket 1206206220_add-a-milestone_912
2e1d4e6  03/23 11:49        added state (hold) to ticket 1206206220_add-a-milestone_912
c8d72c6  03/22 10:39        added comment to ticket 1206207503_checked-out-ticket-changes-when-new-ticket-added_530
a0b8467  03/22 10:39        added state (resolved) to ticket 1206207503_checked-out-ticket-changes-when-new-ticket-added_530

(This still needs some work – translating the “1206206444_remove-a-ticket_143” to the ticket name and sha, but it works for now. The sha on the left is the commit sha that you can use ‘git show c8b979c’ on if you want.)

Installing via cygwin

If you are installing TicGit via cygwin you need to perform some additional steps to get TicGit running.

0.- It is assumed that you already have git installed and working.

1.- Since the ruby installation in cygwin does not include the “gem” command you need to install it as described here

3.- Add the github gem repositories to your search in the gem command and add the github gem (sudo is generally not necessary in cygwin)

#> gem sources -a http://gems.github.com 
#> gem install defunkt-github

4.- Install the git gem

#> gem install schacon-git

Updates

The original author who started ticgit, schacon, hasn’t been active in development since January of 2009 based on commit logs . For the most recent updates to ticgit, check the schacon ticgit network graph .

http://groups.google.com/group/ticgit Group dead? Now there’s only spam :(

The groups are mostly inactive now, except for spam. For questions or discussion about ticgit, your best bet is to message one/some of the most recent and frequent contributors to ticgit based on the network graph linked above.

Clone this wiki locally