Synch github, bitbucket, and trac issues with taskwarrior
Pull request Compare This branch is 757 commits behind ralphbean:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


bugwarrior - Pull tickets from github, bitbucket, and trac into taskwarrior

This is a command line utility for updating your local taskwarrior database from your forge issue trackers.

Getting bugwarrior


Installing it from is easy with pip:

$ pip install bugwarrior

The Source

You can find the source on github at


Create a ~/.bugwarriorrc file with the following contents.

# Example ~/.bugwarriorrc

# General stuff.
# Here you define a comma separated list of targets.  Each of them must have a
# section below determining their properties, how to query them, etc.  The name
# is just a symbol, and doesn't have any functional importance.
targets = my_github, my_bitbucket, paj_bitbucket, moksha_trac

# The bitly username and api key are used to shorten URLs to the issues for your
# task list.
bitly.api_user = YOUR_USERNAME
bitly.api_key = YOUR_API_KEY

# This is a github example.  It says, "scrape every issue from every repository
# on  It doesn't matter if ralphbean owns the issue
# or not."
service = github
username = ralphbean

# This is the same thing, but for bitbucket.  Each target entry must have a
# 'service' attribute which must be one of 'github', 'bitbucket', or 'trac'.
service = bitbucket
username = ralphbean

# Here's another bitbucket one.  Here we want to scrape the issues from repos of
# another user, but only include them in the taskwarrior db if they're assigned
# to me.
service = bitbucket
username = paj
only_if_assigned = ralphbean

# Here's an example of a trac target.  Scrape every ticket and only include them
# if 1) they're owned by me or 2) they're currently unassigned.
# Note -- You must have the trac XML-RPC plugin installed and configured to work
# over HTTP.
service = trac

trac.base_uri =
trac.username = ralph
trac.password = OMG_LULZ

only_if_assigned = ralph
also_unassigned = True


Just run bugwarrior-pull.

It's ideal to create a cron task like:

0 * * * *  /usr/bin/bugwarrior-pull 2>&1 | /usr/bin/logger