Advice for setting up our development workflow for php web app and mercurial?

First of all congratulations on making the decision to have some kind of version control. There may be some pain early on, but it'll be worth it in the long run My initial thoughts are that the dev side of things sounds fine. I'm not convinced about the need for a central server, but many use it without problems I think the issues start to creep in around QA.

You say: QA person will pull from dev to the QA repo. Since many people can be pushing to dev, and we want to focus on testing one new feature at a time, MrQA can choose which changesets to apply This means that the QA guy is cherry-picking from the dev tree, so I assume he'd be using something like graft In which case QA have a branch that doesn't exist anywhere in the dev ecosystem. When a developer needs to fix a bug, will he fix it in his dev tree, or off the QA branch?

If he's fixing it on the QA branch (that's where the bug was) how does it get back to dev? I can see problems here where dev and QA are forever diverging Personally I'd recommend reading how the mercurial project does it Basically there's a named branch for each release that QA will be testing. Any bugfixes for QA go on that branch, and it can be merged back into development branches.No cherry-picking as part of the normal flow, as I'd expect it would get difficult to manage in the long term There are other work-flows out there (probably as many as there are people using mercurial ;-) ), but this is a good starting point, and you can tweak it as necessary.

First of all congratulations on making the decision to have some kind of version control. There may be some pain early on, but it'll be worth it in the long run. My initial thoughts are that the dev side of things sounds fine.

I'm not convinced about the need for a central server, but many use it without problems. I think the issues start to creep in around QA. You say: QA person will pull from dev to the QA repo.

Since many people can be pushing to dev, and we want to focus on testing one new feature at a time, MrQA can choose which changesets to apply This means that the QA guy is cherry-picking from the dev tree, so I assume he'd be using something like graft. In which case QA have a branch that doesn't exist anywhere in the dev ecosystem. When a developer needs to fix a bug, will he fix it in his dev tree, or off the QA branch?

If he's fixing it on the QA branch (that's where the bug was) how does it get back to dev? I can see problems here where dev and QA are forever diverging. Personally I'd recommend reading how the mercurial project does it.

Basically there's a named branch for each release that QA will be testing. Any bugfixes for QA go on that branch, and it can be merged back into development branches. No cherry-picking as part of the normal flow, as I'd expect it would get difficult to manage in the long term.

There are other work-flows out there (probably as many as there are people using mercurial ;-) ), but this is a good starting point, and you can tweak it as necessary.

We need all programmer's work to get tested by QA people before being sent to production. So how would you do it? I followed your link to mercurial's project, but I just can't understand how it would work in our case... please explain.

Thanks! – esther h 2 days ago pull-only and pure p2p exchange of changes can work - every Mercurial have hg serve (it's fastest, but not single way to share repo), which will show repo to public – Lazy Badger 2 days ago The link doesn't really concern itself with central or not.To be honest, I'd say that was a bit of a distraction for a team this size. Go with central server if that's less alien.

The important thing in that link is how the branches are structured. A named branch for the release to QA which gets bugfixes. Those are then merged onto the dev branch (default).

Hginit.Com is also worth a read. It really starts from the basics, but finishes up with talking about branching for releases, QA, etc. It's not very long either. – Paul S 2 days ago @PaulS thanks for the help.

I did read hginit at the beginning of my research, which is where I got the idea of a central server from. – esther h yesterday.

Separate repos) Partial repo on QA-side can become a source of additional troubles (see Paul's text again). Maybe full clone and strong communication (team is small) "Test branch X against default" will be more clean way what if we have two QA people testing in the QA repo at the same time (testing two new features)? Everybody have own repo (they may be identical, but QA-tests used for different branches).

Maybe here will be place of Central QA-repo, in which only QAs can commit passed all tests changesets and post-commit hook publish every change to external 3-rd party I read up on having separate branches for each revision. Separate branches for each shipped version I hope, it was "branch per feature|branch per bugfix|branch per mayor-minor release", not branch per changeset Final conclusions (just IMHO) is the workflow described above usable? Yes, it may get some modification diring real-life, but it's a natural process Is it overkill for our small team?

I don'think so - it's logical, semi-transparent (QA-part only seems to be polished somehow) and well-scalable to wide teams (while "chaotic anarchy" communication may be replaced by some more hierarchical model at some time) is it too simplified? Can't see over-simplicity here.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions