Freecare Spiritwise wrote:One thing that concerns me though: This global revision counter. It's going to get huge isn't it? Y'all must have some big counters. I picture someday looking at revision 769876978698769867968769 and it just seems kinda weird. Oh well.
We're at 170,000-ish and tick over about 100-300 per day depending on how busy we are. Never really been a problem.
Taxious wrote:How would you guys handle this situation?
- About 6 developers (team A) are working on the trunk of a project which releases every 3 weeks.
- A couple other developers (team B) are working on branches of the truck which release ever 1 week.
A new branch is created from the trunk when (A) releases so that (B) can work on that to update their code and release every week until (A) releases again. When (A) releases again, the new trunk is created and all the changes from the new release must be merged in with the changes from the previous branch that (B) has been working on for the last week.
That's not going to work well in subversion. It really wants you to merge all the stuff from (B) back into the trunk before (A) makes their new branch. Merging from branch to branch is going to give pain. I've got 3 suggestions:
i) Stick with Subversion and use their recommended branching rules:
"Trunk" belongs to no one. (A) and (B) work in their own branches. Each team releases by:
- Merge changes from trunk into your own branch, fixing conflicts
- Reintegrate merging into trunk, checking everything works after the checkin
- Deleting their branch
- Creating a release "tag" branch
- Branching their branch from trunk fresh
- Notifying the other team to merge changes from trunk to make sure they are keeping up with the changes to avoid massive conflicts
That's basically how we work - we have a bunch of teams that each work in their own feature branch and do daily pulls from trunk to get whatever changes everyone else has committed. That way it's the teams responsibility to solve their own merge conflicts (because they're the ones best able to deal with it).
ii) Switch to git or mercurial. They handle merging a lot better but have the downside of a little more overhead in creating a central repository.
iii) Look into ClearCase (from IBM). It has the God of all merging solutions but requires a Ph.D. to understand it.
Dd