kgersen / tratihubis

convert Trac tickets to Github issues; revised to support more labels, better wiki translation, etc

Home Page:

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Tratihubis converts Trac tickets to Github issues by using the following steps:

1. The user manually exports the Trac tickets to convert to a CSV file.
2. Tratihubis reads the CSV file and uses the data to create Github issues and

For more information, visit <>.

May, 2015

Edits for GENI-NSF use:

 - SQL edits for Trac 0.11 backed by PostgreSQL, and export keywords,
   priorities, and CC list.
 - Support labels from keywords and priorities.
 - Add option `--skipExisting`: If there are existing tickets or pull requests, skip importing
   those tickets. Useful to pick up where an import left off.
 - Fix up translator from wiki to Markdown to properly convert links,
   and links to commit messages, etc.
 - Try to support logging the name of the github user even when we
   don't have a Github key for them, and try to have the commenter and
   ticket reporter be the right person where possible.
 - Support repositories belonging to an organization, not the user.
 - Watch the Github API rate limit and sleep until the reset time.
   Add additional pauses during large imports to avoid Github abuse
   prevention limits (not entirely successfully).
 - Include Trac CC list in ticket comment (stripping email domain from
   the CC list).
 - Change print statements to log messages.
 - Add option `ticketToStartAt` in config file, to allow resuming import.
 - Cache Github objects, and optionally use `update()` if
   `--updateObjects` is supplied. API calls take 5 seconds+ each, and
   this eliminates many calls.

1) Export Tickets from Trac
For each `.sql` file included, create a new Trac report
View Tickets -> Available Queries -> Create New Report
Paste in the SQL from one of the files. Run the report, and at the
bottom click the link to save it as CSV.

2) Write a tratihubis config file
See sample-ticket-export.cfg

3) Configure repository
 - Create labels for all Trac keywords, resolutions, priorities, and
 ticket types that you want to preserve
 - Ensure all users for whom you have tokens and who will be issue
 creators are listed as collaborators on the repository
 - Enable issues

Do this for both a practice repository and your real repository.

3) Practice ticket imports
Run your ticket import into a new / practice repository. Check that it
works and the new github issues look good. Then delete that

4) Import tickets
Run command something like: `python ./ ../my-ticket-export.cfg --skipExisting --really`

Note the use of `--skipExisting` to allow picking up where an
interrupted import left off.


convert Trac tickets to Github issues; revised to support more labels, better wiki translation, etc

License:BSD 3-Clause "New" or "Revised" License


Language:Python 100.0%