info-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Maintaining branches...


From: Ralph Mack
Subject: Re: Maintaining branches...
Date: Wed, 13 Jun 2001 22:25:18 -0400

[Quoth Stephen Cameron...]
> There is no merge history.

OUCH! That should probably be mentioned when people are comparing
CVS to things like ClearCase. Merge history is an important feature.
In ClearCase, you can get a version tree for each file showing every 
branch and merge that ever occurred, which I have found essential 
when trying to figure out precisely what happened. Knowing the merge
history also enables the findmerge tool to know the best reference
version to use for merges, which generally keeps merges very small.

I am a little puzzled that people aren't having more problems with
merges in CVS. When there is pipelined development going on, it seems 
inevitable that you are going to be copying changes across at least 
three versions of a product on a relatively frequent basis. Do CVS 
developers really do all these parallel updates by hand-editing with 
cut/paste?

Maybe the term "merge" is ambiguous. My concept of a merge is:
0. select a reference version and a from and to version
1. make a diff from the reference version to the "from" version
2. make a diff from the reference version to the "to" version
3. merge the diffs (preferably with optional user input), and
4. apply the result to the "to" version.
Does CVS use a different merge concept entirely? 

Assuming that the answer is "no", how much of this is user-accessible?
Does CVS support a command to do a merge of two revisions of a single 
file from a user-specified reference revision? This is the fundamental 
user-controlled merge operation. From your comments, it sounded like 
the answer is "no", that it always merges from the root of the oldest
branch or some such thing. 

I would like to see CVS support, at least for individual files, a 
means to specify the "from", "to", and "reference" revisions on an 
update. CVS could generalize this to directories and trees by 
permitting the user to specify branches or labels for "from" and 
"to" and a label for the reference revision. With this support, 
everything else (e.g. labeling important merge points) could then be 
done through customary disciplines, like "always label after checking 
in a merge", possibly supported through scripts. 

This approach seems to be in harmony with the CVS philosophy of 
providing the raw mechanics without dictating how they are to be 
used. Did I miss something?

Ralph A. Mack




reply via email to

[Prev in Thread] Current Thread [Next in Thread]