From lechner@cs.uml.edu Sat Apr 2 16:55:36 2005 Subject: $PH/COOL-GEN/genv13progressrept050402.txt To: 05s523 RJLRef: $PH/COOL-GEN/genv13progressrept050402.txt This note describe my progress in making a cvs repository copy of sjaganat/src so genv12 can be checked out of cvs and committed after revision, by anyone in group 04f522 using: setenv CVSROOT /usr/proj3/case/gen/base/Master cvs checkout -r genv12-merge050402 chgen The result: a chgen tree below your $CWD that is sjaganat's latest, with a new non-branch tag (that is 'sticky': CVS/Tag is -Ngenv12-merge050402) In the spirit of 'agile' programming, you should test your mods by compiling chgen/src and running it with bde's schema, and verifying that your changes improve the pr_*.c or 94sbde_schema.h output's agreement with my edits in $RL/newpr_util.050316. Then, your incremental changes to gen/ver_12/src /file? should be checked back in to the cvs repository for sharing with others and for measuring progress toward the next version genv13. Progress means migrating pr_util from genv13 away from sjaganat's or $RL/genpr_util.050316 and toward $RL/newpr_util.050316 below: ------------ saturn.cs.uml.edu(110)> ls -d $RL/???pr_util*050316 /usr/cs/fac1/lechner/bde2alpha_rl/sandbox/bdecheckout/bde/genpr_util.050316 /usr/cs/fac1/lechner/bde2alpha_rl/sandbox/bdecheckout/bde/newpr_util050316 saturn.cs.uml.edu(111)> -------------- Questions on CVS: ----------------- I would be happy for anyone with version control experience to verify my conclusions below. I am still studying these questions: 1. One problem is that cvs history -aT does not show my non-branch tags on all files. [Ref: Fogel: OS Dev. with CVS (Coriolis 1999): p. 73-78 on merging from branch to trunk. p. 230: There is no convenient way to get a list of ALL tags. To see ALL tags on ONE file, you can do 'cvs log -h filename' E.g., 'cvs log -h src/chgen.c' shows 8 separate revisions and 16 tags or symbolic names. 2. Another problem is when to use 'cvs update -A' to remove a branch tag. Without -A you cannot check a modified file back into CVS, because this would violate a tag's purpose: to identify a previously tagged and 'frozen' snapshot in the repository. I was always very reluctant to use -A, fearing loss of tags. [Fogel p. 228: "if a date or nonbranch [n] tag is used [to checkout], the working copy will be a frozen copy of the projecet's history- so naturally you will not be able to commit any changes from it." (Fogel is silent on -T branch-tags)] So, first, do 'cvs update -A chgen' to "clear all the sticky tags and update each file to the latest revisions". Then build and test chgen with your (and all other checked-in) revisions, and when you are satisfied with YOUR revisions, check in that file (not all of chgen) with the changes you made. [RJL 050421: -A migrates the local file to the trunk tip version, by merging all incremental changes, which may cause conflicts. The order is back thru the branches and down the trunk. I could not find out how to do the reverse - migrate from trunktip all changes upword to fork then down a branch.] Collaborators who change the same file may find their changes accidentally overlap. 'cvs update ...' will report C for conflict instead of M for mod or U for unchanged. (A 'C' will produce syntax errors during make, which the current collaborator must edit and resolve.) changes 3. Another problem is when to use 'cvs update -j tag ...' or 'cvs update -j tag1 -j tag2' which merges a tagged branch with the current main 'HEAD' versions of files, or merges two tagged branch points. Which order to put the tags, and which way the branch occurs, are still confusing to me. I hope you do not have to use this merge technique. At the end, I expect to tag your results as genv13 and begin using genv13 with bde. [RJL 050421: I did have to use one -j to merge a branch rev. back to the main trunk(tip). (Two -j's are needed to avoid redundant application of the same deltas if they were 'already made once'.) E.g. if earier branch revs were already merged back onto the trunk.) Anyone can tag the current version of ALL files in chgen using cvs tag to remember and recover this state. Please use tags with YOUR initials as a suffix, not anonymous ones. I believe that $CASE/gen/ver_12/lechner2/chgen now contains a committed and checked-out copy of sjaganat's genv12 with non-branch [N] tag genv12-merge050402. I ran make and it compiled this executable $CASE/gen/ver_12/lechner2/chgen/executables/alpha/chgen and it linked, despite some 400 warnings:-(. TBD: run chgen and compare its pr_util output. TBD: Do build and test also on mercury. ------------------------------------------- More details on this process las night are at (in reverse chrono order): $CASE/gen/ver_12/lechner2/chgen/src/genv12makebugs050402.txt $CASE/gen/ver_12/lechner/chgen/cvsgenv12checkin050402.txt $CASE/gen/ver_12/lechner/aareadme.050324 Here are the current tags on genv12's sources: ----------------- saturn.cs.uml.edu(95)> pwd /nfs/earth/misc/proj3/case/gen/ver_12/lechner2/chgen saturn.cs.uml.edu(96)> m CVS/Tag Ngenv12-merge050402 saturn.cs.uml.edu(97)> m ../../lechner/chgen/CVS/Tag Ttag01f522 ------------------