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:
- Ask you to login to Basecamp
- Ask you to select a Basecamp project
- Ask you to select a Basecamp todo list from that project
- Ask you to login to GitHub
- Ask you to enter a GitHub repository name (eg. owner/repo)
- Ask you to confirm what you're about to do
- Find or create a milestone in GitHub with the name of the todo list
- Create or update an issue for each todo
- Tag each issue with the label
basecamp
- 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:
- Ask you to login to GitHub
- Ask you to enter a GitHub repository name (eg. owner/repo)
- Ask you to select a GitHub milestone from that repository
- Ask you to login to Basecamp
- Ask you to select a Basecamp project
- Ask you to confirm what you're about to do
- Find or create a todolist in Basecamp with the name of the milestone
- Create an todo for each issue
- Add the issue description as a comment
- 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.