CC-ing the list > -----Original Message----- > From: Luiz Guilherme Kimel [mailto:lki...@dba.com.br] > Sent: 29 October 2010 15:44 > To: Giulio Troccoli > Subject: RES: Advice on process for web development > > Giulio, > > I would recommend you a reference book for SCM patterns. Try > ADDISON WESLEY Software Configuration Management Patterns. It > has solutions > > Answering your questions, you need to stablish baselines for > your software. > Branches will have one baseline as their common start point, > as their "base". This base will usually be a stable version > of your software. Let's say your baseline is exactly your > current production release.
What you're saying is that the branches should be created as copies of trunk at a specific revision, i.e. the production one. Have I understood correctly? > Sometimes your baseline will evolve. Maybe because your QA > team approved some new features for production, maybe because > you made urgent corrections. > If it's approved for production it will be your new baseline. > All branches from this baseline will need to be "rebased" > before releasing, they need to incorporate any production changes. So, basically, I need to merge changes in trunk from the previous "production" revision to the current "production" revision (which may not be HEAD at all) to the branches. > Your correction will be tested isolated, approved and merged > to your trunk for tagging and release. If your development > branches are based on the trunk, then you will need to merge > trunk changes to each development branch to rebase them. Use > the development branch for integration so that the next > approved branch will always merge to the trunk with no > possibility of conflict. After rebasing, apply new QA tests. I'm not sure I understand you here. After the development in a branch has been completed, the branch is tested and if approved merged back into the trunk. Surely though I need to test trunk as well. I didn't say, but yes when a branch is reintegrated into the trunk, the other branches should merge from trunk to get those changes. > Why your QA team have a branch??? They won't ever make > changes, so all they need is a tag. I mean, in SVN it's the > samething, but in the concept it's a lot different. The QA team does not have a branch. I realised I said "create a QA branch as a copy of trunk" but then in the command I did create the "branch" in tags. Which doesn't mean that they cannot change it, but it will be prevented and, as you said, conceptually is different. > Do you already use any project management and bug tracking > tool? If not, I would recommend MantisBT. We do. It's actually part of what the Web Team does. Thanks for your input, however, you haven't touched on the main issues I have, which is about the case of an urgent fix. Giulio > Best Regards, > Luiz Guilherme M. Kimel > > > -----Mensagem original----- > De: Giulio Troccoli [mailto:giulio.trocc...@uk.linedata.com] > Enviada em: sexta-feira, 29 de outubro de 2010 09:20 > Para: users@subversion.apache.org > Assunto: Advice on process for web development > > Hi, > > I'm working with our Web Team to re-engineer their > development process. All the code is already under > Subversion, but everything is in one big directory. They're > not using any branch or tags for that matter. And of course, > testing is not as rigorous and controlled as it should be. > Anyway, I have suggested the usual trunk/branches/tags layout. > > Developers will normally work on branches, but can > occasionally work directly on trunk for easy and quick fixes. > The tester will create a QA branch as a copy of trunk at a > specific revision. When they are happy that a QA is ready for > releasing, a tag is created from the QA (or maybe from trunk > again at the same revision). > > I think they will go for such a solution, even though it > means that they cannot pick-and-choose what to test. If they > want to test a bug fixed in revision 1000, they will also > test all bugs fixed in previous revision. > > The problem is that they may want to fast track an urgent bug > fix. It shouldn't happen often, but it may happen so I need > to come up with a solution for that case too. > > What I'm thinking is something like the following. Let's > supposed that 1.1 is the latest release, i.e. it's what's in > production. > i) the developer creates a branch off the tag > svn cp http://<URL TO REPO>/tags/1.1 http://<UR TO > REPO>/branches/1.1_urgent_fix -m"Creating branch fro urgent > bug 123456" > ii) the developer makes all the necesary, coding and testing > iii) the fix is merged back to trunk > cd trunk > svn merge ^/branches/1.1_urgent_fix . > svn ci -m"Fixing urgent bug 123456" > iv) the branch goes live > svn cp http://<URL TO REPO>/branches/1.1_urgent_fix > http://<URL TO > REPO>/tags/1.2 -m"Fixed bug 123456" > switch the production site to point to ^/tags/1.2 > v) at this point all the QA are useless because the do not > contain the urgent fix, so a new QA must be created > svn cp -rHEAD http://<URL TO REPO>/trunk http://<URL TO > REPO>/tags/QA_1.3_1 -m"Created first QA for 1.3" > > Now my questions. > 1 - Do you have any comments on the process and/or any suggestions? > 2 - Would the merge, in step iii, do the right thing and > merge all revisions committed into the branch into trunk? I > can't use --reintegrate becuase I haven't previously merged > from trunk to the branch (as the branch was created as a copy > of a tag). > 3 - I don't really like the fact that after the fix has gone > live, we are forced to create a QA from HEAD, which means > testing everything that has gone into trunk, but I can't > think of another way to make sure the fix is indeed included > in the Qas and especially in the next (1.3 in this case) release. > > Thank you in advance. > > Giulio > > > Linedata Limited > Registered Office: 85 Gracechurch St., London, EC3V 0AA > Registered in England and Wales No 3475006 VAT Reg No 710 3140 03 > > > > >