Bird Stream

Entrepreneurship, development and (sometimes) cycling, often simultaneously, mainly in Nottingham

A DVCS Working Process

I’ve started working with Git using GitHub as a remote repository. This introduces into my life branching as a cheap operation and makes for a potentially different way of working.

After a discussion with the guys at work on Friday afternoon, here’s what I’ve come up with:

Start a new feature => start a new branch.

git branch master [feature branch name]

The master branch is preserved for the current release code. My Hudson instance is only monitoring that branch for changes and ignoring all other branches.

I then push the branch to my remote repository so I get the benefits of a back-up as well being able to share the branch if I need to collaborate with someone else on it in the future.

git push [remote repository address] [feature branch name]

The code rythym then becomes add files, commit to the branch and then push to the remote repo branch.

Once the feature is finished then it’s a case of squashing the commits on my local master branch and then pushing them to the remote copy.

git checkout master

git merge --squash [feature branch name]

git push

Then it’s just a case of deleting the feature branch when I’m happy it’s complete

Would appreciate any thoughts on this, does it sound sensible?