Agile – What’s the best version control/QA workflow for a legacy system

agilebranchingproject-managementversion control

I am struggling to find a good balance with our development and testing process.

We use Git right now, and I am convinced that ReinH's Git Workflow For Agile Teams is not just great for capital-A Agile, but for pretty much any team on DVCS. That's what I've tried to implement but it's just not catching.

We have a large legacy system with a complex environment, hundreds of outstanding and undiscovered defects, and no real good way to set up a test environment with realistic data. It's also hard to release updates without disrupting users.

Most of all, it's hard to do thorough QA with this process… and we need thorough testing with this legacy system.

I feel like we can't really pull off anything as slick as the Git workflow outlined in the link. What's the way to do it?

Best Answer

That workflow looks a lot like Vincent Driessen's git workflow model, with it's different branches for features and QA and I agree it's a lot to deal with at once. Vincent's model adds even more branches: develop branch, hotfix branches, release branches, but it is worth using.

That being said, there's two easy things that I think would make a good start:

  1. Feature branches
  2. Tagging

Both are easy enough to do and shouldn't be too hard to implement off the bat. Have a stable version worth remembering? Tag it, that way you can QA a tagged version as opposed to constantly chasing the edge of the repository. Have a feature that you're not too sure about and you don't want everyone to have it yet? Build it in a branch. I'd say between those two things, you'll be doing 20% of the work for 80% of the benefit.

If however, you're still intrigued by the idea—and you should be—you should take a look at git-flow (and it's screencast). git-flow makes all of this a lot easier by building the functionality into commands like git flow start feature fewer-clowns.

Related Topic