for instance, i just modified the file BUILDING.txt in the HEAD of jboss-mail.

so i guess i would do the following (which i'll do on the command-line as i write): 
[note: i realized after doing this that in general, we'll usually want to merge from 
M1 to HEAD instead, since i guess no new features will go in M1 yet the HEAD should 
get the bugfixes... sorry... steps 7+ should handle this case]

1. do a cvs commit as usual to get the change into HEAD. tag with something like 
'merged-to-M1-1' to indicate that everything from the branch point to HEAD has been 
(will be in steps 2-5) merged into the branch from HEAD for the first ('-1') time. we 
may use this tag in later merges from HEAD to branch to avoid conflicts (using two 
'cvs -j' options).

2. in the branch (separate checkout), do a 'cvs update -j HEAD BUILDING.txt' (since i 
know i only modified BUILDING.txt, otherwise i'd omit that filename). this will merge 
the change in HEAD since the branch point into the branch.

3. in the branch, check for conflicts and if so correct them (shouldn't be any if 
developers don't conflict)

4. commit the change to the branch (the big boy/gal step)

5. tag the branch with a tag like 'merge-from-head-1' to help keep track of things.

6. we're done. further steps are how one might proceed later on, with an important 
difference: how to avoid re-merging changes and the resulting conflicts

7. now, for instance, lets say we instead do a bugfix on the branch and go through the 
analogous procedure of committing, tagging, merging to HEAD, etc. in general, this 
will involve the whole repository and not just a single file like 'BUILDING.txt'.

8. so after doing the same procedure as before, we'll have a tag on the branch called 
something like 'merged-to-head-1' from step 7.

9. now we want to commit the second bugfix on the branch and merge it into the HEAD 
too. we commit and tag the fix on the branch as 'merged-to-head-2'. 

10. now we do a merge of all the changes between tags 'merged-to-head-1' and 
'merged-to-head-2' to the HEAD, thus picking up only the second bugfix. thus, in the 
HEAD repository, we execute a 'cvs update -j merged-to-head-1 -j merged-to-head-2'

11. this avoids re-merging the first bugfix after the branch point and the inevitable 
conflicts it would cause.

so basically its pretty standard stuff and folks probably already know all this. i 
picked it up myself from the book 'open source development with cvs, by karl fogel' 
(any errors here are mine). what i mainly wanted to accomplish was to informally get 
some kind of consensus and awareness of the coordination between developers that helps 
to avoid conflicts when branches are being used. the apparent answer is a common 
naming scheme for tags at most control points, to communicate what's been merged into 
what, where, when and how. don't worry --- when we move onto M2 we can then delete all 
those verbose tags from the repository to clean things up. 

somebody probably knows a better way to do this than i do, and so i'd greatly 
appreciate getting educated if someone could provide some more information or 
references here.

one pitfall (of many?) in this procedure may be due to a deficiency of cvs itself, 
which is that if another developer is doing the same thing while you're in the middle 
of steps 2-5, you'll cause each other problems. that's because cvs doesn't use 
transactions and furthermore doesn't provide atomicity. but chances of this happening 
are quite small.

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3831494#3831494

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3831494


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to