How to commit on Github and automatically mark done on Basecamp?

I have send a same question to both github and basecamp support and bellow they answer.

Basecamp Support:

Sorry about that confusion with the GitHub integration! At the moment, that integration only brings in the commits you make into the Progress page and recaps. Here's the code behind that integration so you can get a better idea of the guts of that service hook:

https://github.com/github/github-services/blob/master/services/basecamp.rb

If you have any other questions, just let me know and I'll be happy to help. And have an awesome Sunday!

Chase Clemons
37signals CustomerCare

Github Support:

The Basecamp hook is for the new Basecamp system, and only adds to a project's event log. There is a Basecamp Classic hook for the older Basecamp system. It looks like that hook only creates Basecamp messages. It doesn't look like anyone has written any Basecamp to-do integration with GitHub at this time. Our 3rd party hooks are contributed by other users because we don't actually use any of those services (Basecamp included). You're welcome to contribute to them:

https://github.com/github/github-services

So it's clear at the moment (when I write this), what we commit and push into Github repository just automatically show on Basecamp Progress page.


I don't think that's possible with the existing github-basecamp integration (the one in the predefined service hooks). So, in short: if I'm correct, it cannot be done the way you can close github issues, which you also seem to be referring.

So basically you'd need to do some coding of your own. You have two main choices.

  1. You can enable a webhook in your github service hooks, have that do a POST request to an url of your choice, and have a script at that url use basecamp API to update the list. The todolists api seems quite simple: you should read a commit message coming in the POST request, and do a "update todolist" request with "completed": true.

  2. Another alternative is to interact with Basecamp API from your local repo. There seems to be some existing tool called gitcamp, made by someone, to help with that - however as the api is quite simple, as well as your requirement, you could do your stuff with a custom script installed as a hook, and possibly with more ease.