Differences between version 10 and revision by previous author of CVS.
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 10 | Last edited on Saturday, February 28, 2004 5:15:51 pm | by ReedLoden | Revert |
Older page: | version 1 | Last edited on Thursday, July 25, 2002 10:29:23 pm | by PerryLorier | Revert |
@@ -1,5 +1,5 @@
-[Acronym] for __C__oncurrent __V__ersioncontrol __S__ystem.
+[Acronym] for __C__oncurrent __V__ersioncontrol __S__ystem. Not to be confused with [CSV]
.
A way of allowing multiple people work on one set of files at the same time and have changes merged in and history and versions kept (much like the wiki).
[CVS] started off as a couple of shell script wrappers around [RCS] and diff3(1), and it's evolved into something much much more.
@@ -8,12 +8,123 @@
cvs is invoked by using the cvs(1) command.
----
-Someone wanna write some documentation about how
to use
cvs?
+If you get a message such as
+ 2402/path/
to/repository: no such repository
+then it means that your client is too old, and doesn't understand "host:port" being part of the pserver path (eg
cvs -d :pserver:hostname:2402/path/to/repository). Upgrade to a newer (1.11.x) version. Version 1.10 (distributed with OSX and solaris for example) has this problem.
+----
+!! Existing documentation supporting CVS
+Coriolis Open Press [Open Source Development with CVS|http://cvsbook.red-bean.com/]. Its not all the chapters, but its the relevant ones. The non-free chapters regard the philosophy behind cvs in open source, or something. Direct link to [postscript|http://cvsbook.red-bean.com/cvsbook.ps] and [html|http://cvsbook.red-bean.com/cvsbook.html.gz]. [Online|http://cvsbook.red-bean.com/cvsbook.html] copy.
+
+
+----
there are 3 commands you need to understand to use cvs:
# cvs checkout
# cvs update
# cvs commit
:)
+
+(There are a few other commands you need if you want to set up a repository, but the above are all you need to get code out of and into an existing repository).
+
+----
+Here are some examples from the [Greenstone|http://greenstone.org] source code. (GreenStone is [GPL]'d digital library management software from the Computer Science department at WaikatoUniversity).
+
+1) You need to "checkout" the source code. To check it out, you need to tell cvs where the "repository" is kept.
+pserver is the method used for anonymous, read-only access to the repository. The newer way is to use ssh.
+ $ CVSROOT=:pserver:cvs_anon@cvs.scms.waikato.ac.nz:/usr/local/global-cvs/gsdl-src
+ $ export CVSROOT
+ $ cvs checkout gsdl
+
+(If we had a account on that machine for write access, the environment variables would be slightly different:
+ $ CVS_RSH=ssh ; export CVS_RSH
+ $ CVSROOT=:ext:username@server:/directory/to/repository
+)
+
+This particular root directory allows anonymous, read-only checkout. You would need a username and password on that particular machine to have write access.
+
+2) Make your own changes to the source code.
+ $ dd if=/dev/random of=a_source_file.cpp bs=1k count=$RANDOM
+(I swear this is how some of our 4th years come up with their code...)
+
+3) Now, you can use cvs to see how your stuff differs from everyone else's, and how to get everyone else's changes into your checked out version.
+ src/gsdl/perllib/plugins$ cvs update
+ ? HTMLPlug.pm-readme
+ ? mht
+ cvs server: Updating .
+ P !ConvertToPlug.pm
+ M HTMLPlug.pm
+ P !WordPlug.pm
+
+P means "patched"; my version was patched to be updated to other people's changes that they have committed. M means locally modified (ie by me).
+
+You can see what is different between my version and the current checked in version:
+ src/gsdl/perllib/plugins$ cvs diff HTMLPlug.pm
+ Index: HTMLPlug.pm
+ ===================================================================
+ RCS file: /usr/local/global-cvs/gsdl-src/gsdl/perllib/plugins/HTMLPlug.pm,v
+ retrieving revision 1.58
+ diff -r1.58 HTMLPlug.pm
+ 524c524
+ < $tmptext =~ s/\s\S*$/…/;
+ ---
+ > $tmptext =~ s/\s\S*$/…/; # horizontal ellipsis ...
+ 705,707c705,707
+ < $$textref =~ s/&(lt|gt|amp|quot|nbsp);/&z$1;/go;
+ < $$textref =~ s/&([[^;]+);/&ghtml::getcharequiv($1,1)/gseo;
+ < $$textref =~ s/&z(lt|gt|amp|quot|nbsp);/&$1;/go;
+ ---
+ > # $$textref =~ s/&(lt|gt|amp|quot|nbsp);/&z$1;/go;
+ > $$textref =~ s/&([[^;]+);/&ghtml::getcharequiv($1,0)/gseo;
+ > # $$textref =~ s/&z(lt|gt|amp|quot|nbsp);/&$1;/go;
+
+So this diff shows that I added a comment to line 524, and commented out lines 705 and 707 (and changed line 706). You may or may not recognise this gibberish as [Perl] code...
+
+4) Other cvs commands I find very useful include:%%%
+cvs status
+ src/gsdl/perllib/plugins$ cvs status HTMLPlug.pm
+ ===================================================================
+ File: HTMLPlug.pm Status: Locally Modified
+
+ Working revision: 1.58
+ Repository revision: 1.58 /usr/local/global-cvs/gsdl-src/gsdl/perllib/plugins/HTMLPlug.pm,v
+ Sticky Tag: (none)
+ Sticky Date: (none)
+ Sticky Options: (none)
+
+cvs annotate
+(this has been trimmed for brevity)
+ src/gsdl/perllib/plugins$ cvs annotate HTMLPlug.pm
+ (.... trimmed ....)
+ 1.7 (sjboddie 06-Dec-99): # if no title use first 100 characters
+ 1.7 (sjboddie 06-Dec-99): my $tmptext = $$textref;
+ 1.43 (jrm21 21-May-01): $tmptext =~ s/<\/([[^>]+)><\1>//g; # (eg) </b><b> - no space
+ 1.30 (say1 14-Oct-00): $tmptext =~ s/<[[^>]*>/ /g;
+ 1.56 (jrm21 11-Jul-02): $tmptext =~ s/(?: |\xc2\xa0)/ /g; # utf-8 for nbsp...
+ 1.43 (jrm21 21-May-01): $tmptext =~ s/^\s+//s;
+ 1.16 (gwp 22-Jun-00): $tmptext =~ s/\s+$//;
+ 1.14 (gwp 24-May-00): $tmptext =~ s/\s+/ /gs;
+ 1.56 (jrm21 11-Jul-02): $tmptext =~ s/^$self->{'title_sub'}// if ($self->{'title_sub'});
+ 1.56 (jrm21 11-Jul-02): $tmptext =~ s/^\s+//s; # in case title_sub introduced any...
+ 1.30 (say1 14-Oct-00): $tmptext = substr ($tmptext, 0, 100);
+ 1.14 (gwp 24-May-00): $tmptext =~ s/\s\S*$/.../;
+ 1.15 (sjboddie 20-Jun-00): $doc_obj->add_utf8_metadata ($section, $field, $tmptext);
+ 1.33 (paynter 02-Nov-00): print $outhandle " extracted \"$field\" metadata \"$tmptext\"\n"
+ 1.36 (sjboddie 18-Jan-01): if ($self->{'verbosity'} > 2);
+ 1.16 (gwp 22-Jun-00): next;
+ (.... trimmed ....)
+This shows each line (as checked in) of the file, showing when that line was last edited, who by, when, and which version. So if you make a stuff-up, everyone else knows who to blame!
+
+5) Put my improvements back into the main repository! (You should always do an update just before doing this, in case someone else has made a change since you last checked).
+ src/gsdl/perllib/plugins$ cvs commit HTMLPlug.pm
+----
+!"cvs update" statuses
+| A | this file was added to your checked out version by CVS
+| C | this file has a conflict between your local changes and someone else's committed changes
+| M | you've modified it and not yet committed it
+| P | you've modified the file and cvs successfully inserted someone else's recent changes
+| R | file removed from the main repository
+| U | updated other people's changes (and you haven't changed this file).
+----
+See Also BitKeeper; SubVersion