SVN on steroids using beanstalk and integrating basecamp

Posted on Jan 20, 2010

Well, if you consider yourself a professional and care about what you do in your day to day work you probably use some sort of version control system.

Whether you are using GIT or SVN, both self hosted or in the cloud.

Me, I’m a huge fan of cloud services and moving things and services into the cloud, managing my entire work (almost) in the cloud, from my email (GMail) to my backup service (Mozy) and now, SVN.

I will tell you about my solution in this post along with screenshots of what it looks like

Just to give you an idea, I’m talking about a solution on steroids, the sort of solutions that makes you feel like: “how the hell did I do this up until now”, this solution will work amazing for you if you are working in a team or working alone.

I do both, and I absolutely love this solution.

Like I said in the title, the solution is based on 2 cloud services

  1. Beanstalkapp – hosted SVN with an amazing web interface, user management and more

  2. Basecamp – hosted project management system from 37Signals.

The concept of the solution is simple, see what’s being done, by who, when and why, all this inside the context of a web page with a link from the project management system back to the SVN and vice versa.

Also, you are able to track time being “wasted” on a mission, everything from within the comfort of the environment convenient to you.

You won’t need to change anything in your habits, if you are used to using a command line, you will use the same command line with some extra commands to track time and do other things.

So, let’s dig into just how you can do this:

First, open an account in Beanstalk, the pricing range is convenient and I found myself rising from the trial period to my current account in no time.

Second, go and open an account in Basecamp (this is not a must, just an extra).

In Basecamp, find your account details and grab your API token (you can regenerate a new one at any time you want)

OK, we are set to go.

When you log in into Beanstalk you will see the repositories tab on the top, when you click it, you can see all of your repositories.

it’s important to understand, each of your clients/users will see different things in this tab, meaning there’s a permission system, if you give access to a client he will see his projects only.

Now, click “Create Repository”

This screen will come up

Select a repository name (you will not be able to change this in the future so select it wisely)

After you give a name, you will be redirected to the next phase in the wizard, here, you can import your working copy (if you have one).

This is actually a very important feature for me, all of my SVN was self hosted and I wanted to keep the repo consistent and be able to revert back to older revisions of files and more.

After you import (or not) you will be redirected to giving permissions to clients/users.

you can skip this phase if you don’t need it or you don’t know yet, you can change the permissions at any time in the future.

You can also select (of course) the type of permissions the user has.

That’s it, your repository (first one) is setup.

Nnow, you can click the activity page and you will see just a blank (or something else if you imported data) page.

This is your activity page and it will get filled with each commit user does.

On the right side, you can see a textInput where you can copy and paste he repository URL for this repository.

This url is the one you type into the SVN tool you are using, whether you are using the command line or Versions (mac) or even tortoise SVN (windows).

Cool, so let’s create a connection to Basecamp now.

Let’s click the setup tab in the top.

We will get this screen

As you can see, Basecamp is my option of choice but you you can select any service they have to offer, from twitter to freckle and many more.

What’s next.

type your Basecamp url, paste in your API token.

After you type in the details and click next you will be able to select a project from you project management system.

After you select a project you’ll be able to select the category to which every commit message will be transmitted to.

I always select “code”

I’ll explain a bit.

When you commit a revision and type a message, this message will be posted to the “messages” section in Basecamp.

The messages section contains every message users post, so the code revisions and every other message is in once place, for me this is amazing also because I can reply to a message.

When a programmer from you team posts a commit message you can reply, giving him anything from a feedback to rejects.

Also, you have a link from Basecamp to the changeset in Beanstalk.

you don’t have to exit, log in and look for the latest change, it’s just a click of a button away.

Let’s see how it looks.

When I commit a revision it looks like this:

and this is where I go after I click the link inside Basecamp