Using Git and Subversion tools to update DoneDone issues

Last Friday we released Git and Subversion integration for two fantastic version control services, GitHub and Beanstalk. What this means is that programmers can make a number of changes to DoneDone issues directly from their version control tools (Cornerstone, Tortoise, command line, etc.), provided their repositories are hosted at one of the above services.

We follow the same general conventions other issue tracking services have followed in the past in that you’ll be using some simple syntax in your commit messages, the contents of which are sent over to DoneDone via webhook by the respective service.

While we’re cooking up more formal documentation for both services, we wanted to get some preliminary instructions for getting DoneDone speaking version-controlese.

What you can do

  • Change an issue’s status
  • Change an issue’s Fixer
  • Add a comment to an issue
  • Add tags to an issue

Information you need to get started

  • Your DoneDone API key  – This is located on your own Profile page (screenshot)
  • Your DoneDone URL – You’ll find this, eh hmm, in your browser’s address bar provided you have DoneDone open.n (screenshot)
  • A DoneDone project’s ID – This is the number right after the *.com/ if you’re on a project’s landing page. (screenshot)

Why don’t we put this info on the Project Settings page? Good idea. It’ll be up this Friday, January 27th

Setting up Beanstalk

First, log into your Beanstalk account, navigate to the repository you want to integrate with a DoneDone project, and select Setup > Integration > Web Hooks. For the URL, enter the URL tied to your DoneDone project’s integration endpoint. For Beanstalk, it looks like this:

https://user:APIKEY@[account].mydonedone.com/issuetracker/hook/process/[projectID]/beanstalk

Once integrated, Beanstalk will post data to DoneDone each time you commit something to your SVN repo or each time you push something to your Git repo.

Setting up GitHub

To integrate with your Github repository, you’ll need to add a post-receive URL to the Service Hooks settings of any repository at GitHub. They’ve got some pretty simple instructions for how to do this up at http://help.github.com/post-receive-hooks/. As for providing a URL endpoint for DoneDone, you’ll need to create something as follows:

https://user:APIKEY@[account].mydonedone.com/issuetracker/hook/process/[projectID]/github

Creating your message to DoneDone

Regardless of whether you’re using Beanstalk (svn or git) or GitHub, when your repository receives a commit or a push from a developer, it will send a message describing what happened to DoneDone. This message, in essence, is a formatted comment included in your push/commit. The syntax DoneDone expects to see is as follows:

Your general commit comments would go here. This will be inserted
as a comment in DoneDone for the issues you specify below.
  [#ISSUE_NUMBER tags:"QUOTED,LIST,OF,COMMA,SEPARATED,TAGS"]
  [#ISSUE_NUMBER reassign:VALID_EMAIL@OF.DONEDONE.USER]
  [#ISSUE_NUMBER status:VALID_STATUS]

If you want to include several edits in a single action, it would look something like this:

[#ISSUE_NUMBER status:VALID_STATUS tags:"QUOTED,LIST, OF,
COMMA, SEPARATED,TAGS" reassign:VALID_EMAIL@OF.DONEDONE.USER]

Valid Edits

Each action tag must begin with a pound sign (#) followed by a valid issue number after which at least one (and up to all three) of the following actions (case-sensitive):

  • status
  • tags
  • reassign

Valid Statuses

The status action, if provided, changes the status of the issue and valid values for this key are as follows (case-insensitive):

  • Ready For Next Release
  • Closed
  • Fixed
  • Open
  • In Progress
  • Not An Issue
  • Not Reproducible
  • Missing Information
  • Pushed Back
  • Ready For Retest
  • Fix Not Confirmed

Tag additions

The tags action, if provided, must be a comma separated list of tags wrapped in quotes.

Reassigning Fixers

The reassign action, if provided, must be the valid email address of a person on the DoneDone project to whom you wish to reassign the issue.

A note on limits

You can add a total of 10 of actions in a commit (for SVN) or push (for Git). If you provide more than 10, only the first 10 will be processed. This is an arbitrary number in place to prevent overuse while we ensure the service is in healthy shape under normal usage.

It’s also important to mention that DoneDone maps users via their email address, so the email address you use with Github or Beanstalk needs to match the email address of your DoneDone account.

Examples

Example A

I fixed the weird glitch with the font that happens in IE7 and IE8.
I also fixed a javascript bug. Lastly, I stubbed in an image for
the new graphic we want to use so that the designer can create
a new one.[#19 status:Fixed tags:"ui"]
[#20 status:Fixed tags:"javascript"]
[#23 reassign:designer@wearemammoth.com tags:"graphics,ui"
status:In Progress]

In DoneDone, this will mark issues #19 and #20 as Fixed and add the tags “ui” and “javascript”. Issue #23 will be reassigned to designer@wearemammoth.com, the tags “graphics” and “ui” will be added, and the status will be set to In Progress. The comment describing the changes to these issues will be “I fixed the weird glitch with the font that happens in IE7 and IE8. I also fixed a javascript bug. Lastly, I stubbed in an image for the new graphic we want to use so that the designer can create a new one.”

Example B

Sped up the issue detail page by 10%.
[#22]

In DoneDone, the only thing that’ll happen is the comment “Sped up the issue detail page by 10%” will be added to issue #22. 

Wrap up

This should get the party started for now. We’ll be working on the experience a bit, by adding some preformed URL endpoints under the Project Settings page in DoneDone. Hopefully, the good fellas over at Beanstalk will help get DoneDone-specific updates refined on their end of things.

If you’ve got any questions or issues, please holler. Either here in comments or via www.getdonedone.com/support if it’s urgent. Otherwise, enjoy, and happy committing.

You'll love these too

You'll love these too

Plane