Penguin

Differences between version 16 and predecessor to the previous major change of CVS.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 16 Last edited on Monday, January 10, 2005 1:08:42 pm by JohnMcPherson Revert
Older page: version 10 Last edited on Saturday, February 28, 2004 5:15:51 pm by ReedLoden Revert
@@ -1,130 +1,23 @@
-[Acronym] for __C__oncurrent __V__ersioncontrol __S__ystem. Not to be confused with [CSV]. 
+[Acronym] for __C__oncurrent __V__ersions __S__ystem, a VersionControlSystem . ( 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 .  
-  
-It's starting to show its age now however as it's starting to have a few design limitations.  
-  
-cvs is invoked by using the cvs(1) command
+It was born as a batch of [Shell] scripts wrapping [RCS] and diff3(1), but evolved into something much greater . Unfortunately, its roots also imply some annoying limitations like being unable to rename/move files in the repository without losing the associated history
  
+See also:  
+* cvs(1), the user interface to [CVS]  
+* [Open Source Development with CVS | http://cvsbook.red-bean.com/] by Coriolis Open Press.  
+ * [Online version | http://cvsbook.red-bean.com/cvsbook.html]  
+ * [Offline HTML version | http://cvsbook.red-bean.com/cvsbook.html.gz]  
+ * [PostScript version | http://cvsbook.red-bean.com/cvsbook.ps]  
+ Note that some (irrelevant?) chapters regarding the philosophy behind [CVS] in OpenSource are only present in the printed edition.  
+* very brief example usage in our [CVSHowto] page.  
 ---- 
-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.  
+!! Notes  
  
+A message such as  
  
-----  
-there are 3 commands you need to understand to use cvs :  
-# cvs checkout  
-# cvs update  
-# cvs commit  
+ <verbatim>  
+ 2402/path/ to/repository : no such repository  
+ </verbatim>  
  
-:)  
-  
-(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*$/&#8230;/;  
- ---  
- > $tmptext =~ s/\s\S*$/&#8230;/; # 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,)/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/(?:&nbsp;|\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, , 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  
+means that your client is older than version 1 .11 .x and doesn 't understand <tt >host :port </tt > being part of the pserver path (eg <tt >cvs -d :pserver :hostname :2402 /path /to /repository </tt >). You need to upgrade