[cvsnt] Edit/Commit by bug ( was Latest updates )
Mike Wake
mike.wake at thales-tts.com
Wed Aug 25 16:49:03 BST 2004
Hi Tony,
I am interested in learning more about the Edit/Commit by Bug new to 2.0.52
<snip>
* Edit/Commit by bug. The edit system allows you to specify a bug
number when editing, then unedit/commit based on that bug number. The
notifyinfo procedure now takes some more parameters to handle that (do a
'cvs init' for the latest documentation on that if you're interested).
Basically the best documentation at the moment is 'cvs -H edit' and 'cvs
-H unedit'. Most of these features need both a 2.0.52 client and server
to make any sense.
</snip>
Is the intention of this concept to be used like a mini branch per bug.
This would be great to allow developers to further isolate themselves
from each other while still having the ability to checkin incremental
changes to the repository without the overhead/mess created by applying
a branch to their whole working area.
Some of the groups around me are (un)/lucky enough to have clearcase
licenses and have a nice front end that sets up a config_spec based on
developer and change request/bug that tells clearcase to do a mkbranch
on checkin.
Could this new "Edit/Commit by bug" feature be used to achieve something
similar with CVSNT.
Below is a worked example of how I was thinking of manually achieving
something similar with current CVSNT functionality. This of course
could do with a nice frontend to automate it and do the hard work. (Just
like in Clearase).
Cheers
Mikew
Branch Per Feature Process Within CVS.
Stage 1: Starting out.
checkout latest baseline
cvs checkout main.cpp
Or Update to latest baseline
cvs update -A main.cpp
Or update to baseline branch
cvs update -r ib_v4_02_rX
Stage 2: Do some dev.
Make some changes till the point that you wish to commit
a snapshot of them to the repository.
Stage 3: Commit to working on a single Bug within this file.
Ask Which Bug are you working on? User Types "Bug0123"
Parse the output of cvs status main.cpp to check that it
isn't already on this branch fb_Bug0123.
if !onbranch(fb_Bug0123)
{
cvs tag -b fb_Bug0123 main.cpp
cvs update -r fb_Bug0123 main.cpp
cvs commit -m "Initial snapshot of fix to Bug0123" main.cpp
}
else
{
cvs commit -m "subsequent snapshot of work onBug0123" main.cpp
}
Stage 4: Prepare for Ready_For_Recheck(RFR)
Merge in latest changes from latest baseline.
cvs update -jHEAD main.cpp
or
cvs update -jib_v4_02_rX
resolve any conflicts
do some more testing
Commit any merged changes to the fb_Bug0123 Branch.
cvs commit "Merged with latest baseline"
Stage 5: Mark as Ready_For_Recheck
Now tag bug Ready_For_Recheck (RFR)
cvs tag -c fb_Bug0123_RFR main.cpp
Stage 6: Prepare to Integrate into baseline
To intergrate onto the tip of the main trunk.
cvs update -A
Or To integrate onto the tip of a branch called ib_v4_02_rX.
cvs update -r ib_v4_02_rX
Stage 7: Integrate to the baseline using a merge.
Merge from the Bug0123 Branch into the baseline.
cvs update -jfb_Bug0123_RFR main.cpp
resolve any conflicts
do some more testing.
Stage 8: Commit the change to the Baseline.
cvs commit -m "Integrated Bug0123"
More information about the cvsnt
mailing list