On Mar 31, 2007, at 12:34 AM, s.ross wrote:
I was that poster -- or at least one of them -- and I stand by that recommendation. Broken builds are simply not acceptable in a team environment where everyone needs passing tests to move ahead with their work. That's what branch and merge are all about. If you want to dork around with the code and check in changes that break the build, create a temporary working branch and do all of that there.
Well, I agree with everyone on this. Regular check-ins are a must. And that's exactly the reason why subversion has branches :)
Depending on how you use your branches, you might require people who have a larger task to work on a separate branch and then merge when they're done. Personally I have most of the developers working on the main trunk, and maintain separate 'production' branches, because I want to monitor everyone's changes easily. And since the code of each module doesn't interfere with other modules, 'breaking' a revision won't stop other developers from working on their source.
My rule of thumb is never make a checkin to trunk that will break a build.
Even if you are not running continuous integration or are a single- person shop, branching is still a good habit to get into because you may need to expand your team size at some point and then continuous integration will greatly speed up your development process.
Completely agree, apart from the 'trunk' part... it really depends on the structure of your repos, it might be the trunk, it might be some branches.. :) And note i don't necessarily DISagree with the 'trunk' part, just saying it could be either.
Quoting from the Agile Manifesto[1]
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
To deliver working software frequently, you have to keep the software working. Right?
Yes, and whether you keep working branches or a working trunk depends on how your repository is set up. I prefer to keep working branches, allows for easy 'version' management and track-back :)