Gitcamp

Gitcamp is a handy command line tool for syncing GitHub issues & milestones with Basecamp todo lists, and visa-versa.

Requirements

You'll need to have Rubygems installed. If you're on a Mac then you've probably already got it.

Run

$ gem -v

to check. If not, you'll need to install it.

Installation

$ gem install gitcamp

Usage

$ gitcamp
Commands:
  gitcamp help [COMMAND]  # Describe available commands or one specific command
  gitcamp milestone       # creates GitHub milestone & issues from a Basecamp todo list
  gitcamp todolist        # creates Basecamp todo list from a milestone of GitHub issues

Creating a GitHub milestone & issues from a Basecamp todo list

$ gitcamp milestone

Follow the instructions provided. This command will perform the following:

  1. Ask you to login to Basecamp
  2. Ask you to select a Basecamp project
  3. Ask you to select a Basecamp todo list from that project
  4. Ask you to login to GitHub
  5. Ask you to enter a GitHub repository name (eg. owner/repo)
  6. Ask you to confirm what you're about to do
  7. Find or create a milestone in GitHub with the name of the todo list
  8. Create or update an issue for each todo
  9. Tag each issue with the label basecamp
  10. Update the Basecamp todo with the issue number of the newly created GitHub issue

Creating a Basecamp todo list from a milestone of GitHub issues

$ gitcamp todolist

Follow the instructions provided. This command will perform the following:

  1. Ask you to login to GitHub
  2. Ask you to enter a GitHub repository name (eg. owner/repo)
  3. Ask you to select a GitHub milestone from that repository
  4. Ask you to login to Basecamp
  5. Ask you to select a Basecamp project
  6. Ask you to confirm what you're about to do
  7. Find or create a todolist in Basecamp with the name of the milestone
  8. Create an todo for each issue
  9. Add the issue description as a comment
  10. Add the issue number of the GitHub issue to the front of the todo

Login credentials

You will only be asked for your GitHub and Basecamp credentials the first time you authenticate. After that they will be stored on your computer so you don't have to enter them each time.

TODO: Add a --force-login or --clear-credentials flag to allow users to login again

Idempotence

Gitcamp is designed to be idempotent, that is to say you can run it multiple times (selecting the same milestone and todolist) and it will not duplicate todos or issues.

For example, if you sync a Basecamp todolist to a GitHub milestone once, then add another todo it will add that todo as an issue and leave all the other issues in place.