[M3devel] Fwd: Re: CM3 5.8 Release Engineering, was Re: back again -- cm3 status worse?

Olaf Wagner wagner at elegosoft.com
Tue Sep 22 15:45:55 CEST 2009


Forward to list as it may be of interest for others:

----- Forwarded message from wagner at elegosoft.com -----
     Date: Tue, 22 Sep 2009 15:44:05 +0200
     From: Olaf Wagner <wagner at elegosoft.com>
Reply-To: Olaf Wagner <wagner at elegosoft.com>
  Subject: Re: [M3devel] CM3 5.8 Release Engineering,was Re: back  
again -- cm3 status worse?
       To: Randy Coleburn <rcoleburn at scires.com>

Quoting Randy Coleburn <rcoleburn at scires.com>:

> Olaf:
>
> You stated the following about CVS:
>
>>>> Olaf Wagner wagner at elegosoft.com> 9/22/2009 7:21 AM >> (    
>>>> mailto:wagner at elegosoft.com> )
> ...
>   o Release engineering is performed on the cm3_branch_release_5_8.
>     This should decouple (stabilizing) bug fixes from potentially
>     destabilizing other commits. CVS is still used for version control;
>     the steps needed to perform merges to the release branch are
>     'cvs update -j rev' (two point merge) or 'cvs update -j rev -j rev'
>     (three point merge, general case). All merges in CVS are performed
>     in a local workspace and need to be committed explicitly (after
>     local testing, at least proper compilation).
> ...
>
> I'm sorry, but I'm not fully up-to-speed on all these various CVS    
> options, particularly with branching and merging.  I've tried to    
> better understand it by reading some of the TortoiseCVS    
> documentation, but alas, it leaves much to be desired.

No problem, I'll try to explain it in more detail.

> Am I to understand that we should continue to commit changes to the   
>  repository as before (I suppose this is the HEAD branch), then for   
>  those changes that pertain to the release, we have to merge the    
> changes from the head to the release branch using one of the options  
>   you mention?

Both options are possible:

   (a) fix on the main trunk, then merge into release branch
   (b) fix directly on the release branch, back merge after the release
       (or just later)

Anyway the merge takes place in the local workspace and should be
tested locally before commit.

I'll care for (b) sometime after the release.

> Not sure what 2-point and 3-point merges are all about.

The general case when merging looks like this:

    a -> b -> c -> d -> e -> f (trunk head)
         \->p -> q -> r -> s   (branch tip)

Suppose you want to merge the changes from d to e into the branch.

   (1) You update your workspace to the branch:
       cvs up -r <branchname>

   (2) You merge in the changes (`join'):
       cvs up -j d -j e

   (3) compile and test

   (4) Commit to the branch (thereby creating version t):
       cvs commit -m 'merge changes from d to e from the main trunk'

This is called a three-point-merge because you explicitly specify
the start, end, and target versions.

If you leave out one of the -j <version> options above, CVS implicitly
assumes the common ancestor of the versions involved as the third point
(in this case b). So `cvs up -j e' would merge the changes from b to
e into the workspace.

Two more examples (same scenario):

   o To merge the changes from c to f just specify these versions:
     cvs up -j c -j f

   o To revert the change committed as q use
     cvs up -j q -j p
     which applies the inverse delta to the workspace (note the order).

Does this explain it more clearly?

If anybody is unsure how to merge, I'm happy if he (or she) sends me
two tags or file versions for inclusion into the release branch.

Two simple rules:

   o It is always a good idea to tag any commit with a unique tag
     (label).
   o If more than one file is involved, tags are more or less
     mandatory (as lists of pairs of versions for every file are very
     tedious to handle).

I'm afraid I don't know offhand how to merge in TurtoiseCVS :-/

Olaf
-- 
Olaf Wagner -- elego Software Solutions GmbH
                 Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
     http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194



----- End forwarded message -----


-- 
Olaf Wagner -- elego Software Solutions GmbH
                Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany
phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95
    http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz: Berlin
Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194




More information about the M3devel mailing list