When will be CVS replaced by modern version control system?

Nils Philippsen nphilipp at redhat.com
Sun Nov 11 16:39:14 UTC 2007

On Fri, 2007-11-09 at 17:17 +0100, Nils Philippsen wrote:
> On Fri, 2007-11-09 at 15:42 +0100, Ralf Corsepius wrote:
> > On Fri, 2007-11-09 at 12:37 +0100, Nils Philippsen wrote:
> > 
> > > - With a DVCS, we could put the several Fedora/EPEL versions into
> > > branches and merge between them. 
> > We could do the same if fedora's package CVS would have used real CVS
> > branches instead of branch directories.
> "The use of [branching and merging with CVS] cripples the mind
> [...]" (sorry, Edsger). I like walking with my feet instead of having to
> use crutches.

Hyperbole provokes PMs (which have slipped under my radar so far).
Apologies for the hyperbole, here my answers (again slightly edited):

Someone wrote:
> Wrt. the implementation of "branches" in Fedora's package CVS, AFAICT,
> the only reason it has been done the way it currently is was RH's
> stubborness on ACLs[...].

We had dir-style non-branches long before we had ACLs (long before there
was a publicly writable repository). IMO it should be possible to set
ACLs for certain individual branches if you need it. I don't know if
that can be done with any VCS discussed.

> >  Note that branching is not even half
> > of the rent, merging is where things get tricky with CVS.
> It does a way better job on merging than e.g. hg does.

I've yet to see examples where merging between branches with CVS is
easier than merging between different branches in Hg or git. Even
experts on the matter of CVS[1] seem to differ:

5.7 Merging from a branch several times
If you just use the cvs update -j R1fix m.c command again, CVS will
attempt to merge again the changes which you have already merged, which
can have undesirable side effects.

So instead you need to specify that you only want to merge the changes
on the branch which have not yet been merged into the trunk. To do that
you specify two `-j' options, and CVS merges the changes from the first
revision to the second revision. [...]

With Hg (or git) I merge once, I merge twice or even umpteen times, I
don't care. They remember what I already merged and only attempt to
merge what's new. If there are conflicts in the new stuff, they won't
overwrite my files but let me resolve them in a 3way diff tool like

I'd like to read one specific example where merging in CVS is actually
easier than in Hg or git. I won't hold my breath.

> Also, cvs-branch merging is at least one magnitude easier than merging
> "branches" in VCS's which lack the concept of branches, such as git,
> hg, and svn.

Hg at least (I'm sure git as well) does know "named" branches just like
CVS, take a look at the "hg branch" command. Woot, several branches,
right there in your own repository!


[1]: again the same link from the Cederqvist which AFAIK is considered
"The Reference" for CVS:
     Nils Philippsen    /    Red Hat    /    nphilipp at redhat.com
"Those who would give up Essential Liberty to purchase a little Temporary
 Safety, deserve neither Liberty nor Safety."  --  B. Franklin, 1759
 PGP fingerprint:  C4A8 9474 5C4C ADE3 2B8F  656D 47D8 9B65 6951 3011

More information about the fedora-devel-list mailing list