views:

40

answers:

1

Currently, we're using Mercurial as our VCS on BitBucket.

The way the project is right now, is a solution with all the code checked in with all the developers working on the "default" branch. Every morning, we create a build release and the QA have it.

I'm wondering whether it makes more sense to branch each dev on his own since each dev is working on a project in the solution.

The other main point is how would this affect the QAs? Would they need to merge all the branches prior to building?

I'm really confused about this.

+2  A: 

As mentioned in "When should you make a branch", you use branching to isolate a development effort.
In your case, you would isolate each project in the solution on which you are working.
That would allows for:

  • intermediate commits, project per project
  • QA testing for each project

But that would also require a merge in a common branch for all the project to be tested together as a solution.

See HgInit (from Joel Spolsky) for more on that kind of collaboration workflow.

alt text

In "Repository Architecture", Joel illustrates two development effort isolated in two different teams, but still including a synchronization (merge) effort at the end.

VonC
Yes, I managed to find that after I posted but couldn't find it while looking prior to posting. Go figure.The thing I'm unsure about is that the projects are all DLL files that are loaded based on the startup of the application. Upon the users choice, an "app" is launched which is wholly contained in the said DLL which is a wholly contained project with winforms and all that it needs. Having said that, we're a small team of 3, would we need to maintain several local copies one for each branch?
Mustafa Ismail Mustafa
@Mustafa: if those DLL can easily be (re)generated per project, they shouldn't be versioned in the first place. Beside that point, if each project, to be tested, needs to have a stable version of the other projects, then an approach using **Mercurial subrepos** might be in order (and would still be compatible with branching): see http://stackoverflow.com/questions/2083393/mercurial-subrepos-how-do-you-create-them-and-how-do-they-work .
VonC
Ah, I must not have made it clear. The DLLs themselves are not tracked, but their source obviously is. Building the solution would suffice. I'll look into the sub-repo idea, I just need to check that it can be implemented on bitbucket!Thanks dude, marked as answered, though I might comment back.
Mustafa Ismail Mustafa
@Mustafa: 1/ bitbucket supports subrepos (see for instance http://groups.google.com/group/bitbucket-users/browse_thread/thread/aabfb144254ac76d/d163384ee76c789d?fwc=1) 2/ You definitively did *not* market that answer as accepted ;)
VonC