[H-GEN] F-king CVS!

Jason Henry Parker jasonp at uq.net.au
Thu Jul 8 21:13:49 EDT 1999


(Note reply-to: being general at humbug.org.au vs Jason Henry Parker <jasonp at uq.net.au>)

Raymond Smith <raymonds at uq.net.au> writes:

> I am wondering why CVS is held up as such a great version control system.

I think mostly it is because it allows concurrent access to the source
tree.  That's *certainly* not to be discounted.  GNOME, FreeBSD and
other projects probably would not be able to take full advantage of
parallelism if they had to use a VCS more like RCS where files are
locked.

The other handy thing is that people who check out your module
read-write and then don't check anything back in for a few weeks don't
squander resources while others wait for them to get back from
holidays or whatever.

> I have had a great many problems with branches and tags (perhaps Jason
> could enlighten me?). Someone, I think it might have been Andrae, was
> saying that they tried CVS with Linux but found it to be a poor
> choice.

http://www.psc.edu/~semke/cvs_branches.html

Okay.  I found this url when I was asked to explain branches and
tags.  Reading it several times and playing with a ~/CVSROOT
repository and checking in a few version of GNU utilities (I think I
used bash?) and merging branches, etc, has made it all clear for me.

Basically, a tag is a snapshot of the source tree.  

% cvs tag <tagname> <modulename>

creates a tag called <tagname> at the end of the main trunk of the
module <modulename>.  You don't need to do a cvs commit after this.
After the tag, anyone can come along and say

% cvs checkout -r <tagname>

and get a copy of the tree as it was the moment you tagged it.

The problem, such as it is, is that you can't commit stuff back to a
tag.  It really is just a snapshot, and it can't be changed.  To be
able to change the sources checked out and commit back, you need a
branch:

% cvs tag -b <branchname>

in a checked-out tree will tag the last commited version as
<branchname>.  This also does not require a commit.  Your checked-out
tree stays on the *old* branch, you have to update to the new one if
you want to work on it then and there.

% cvs update -r <branchname>

> Any comments? Is there anyone on the list using CVS for large projects?

Having seen Bruce's post about remote CVS servers, it occurs to me
that most every project I've seen using CVS successfully has used a
remote server and restricted access locally, if they provide it at
all.

jason

-- 
____   Every once in a while, you catch a memory leak,   /"\ ASCII ribbon
\ _/__ realise that the operating system hasn't crashed, \ /   campaign 
 \X  / and you get this warm, shit-eating grin for the    X  against HTML
   \/  next hundred lines of code.  -- Dave Taylor       / \    email

--
This is list (humbug) general handled by majordomo at lists.humbug.org.au .
Postings only from subscribed addresses of lists general or general-post.



More information about the General mailing list