$Id: HOWTO-CVS 2917 2006-04-27 21:25:06Z tov $


This is the file ${LARCENY}/HOWTO-CVS.  It contains information about
how to get started with CVS and how CVS is used to store Larceny source
code, documentation, and other common 


QUICK START FOR REMOTE CVS (ccs users only).

	export CVS_RSH=ssh
	export CVSROOT=:ext:user@login.ccs.neu.edu:/proj/will/lth/cvs-archives


WHAT CVS DOCUMENTATION TO READ.

The best information on CVS is the Info page accessible from GNU Emacs.
The Unix manual page is much inferior to the Info documentation.


READING THE CVS INFO PAGES.

The following instructions are for Emacs 19 and do not work in Emacs 18.

1. Start emacs.

2. To get to the Info reader, type `C-h i'. (To get help on the Info
   reader, type `m info' after you have entered the info reader.)

3. To open the CVS documentation, which unfortunately is not yet part of
   the standard Info tree installed by systems, type `C-u C-h i'.  When
   emacs asks for a filename, type `/arch/gnu/packages/cvs-1.10/info/cvs.info'.

If you haven't already done so, you should start the info reader and
read the introductory sections now.  Read at least parts of the sections
'What is CVS?'  and 'Basic concepts', and 'A sample session'.

The following alternative instructions are for users of Emacs 18.  (No
further mention will be made in this HOWTO about how to use Emacs 18 or
its info reader.)

1 and 2. As above.

3. Type 'g', and when Info asks for node, type
      (/arch/gnu/packages/cvs-1.10/info/cvs.info)
   including the parentheses.


CVS AND LARCENY.

The root directory for Larceny's CVS repository is currently

	/proj/will/lth/cvs-archives

You should set your CVSROOT environment variable to name that
repository.

The following is a list of the CVS modules is Larceny's repository:

  larceny_src: Larceny's source code.
  larceny_doc: Larceny's documentation.
  benchmarks: A growing benchmark suite.
  radioactive99: Repository for 1999 revision of 1997 PLDI paper.


QUICK REFERENCE.

checkout: To checkout a module into a clean directory, go to the parent
directory of the directory where you want the module checked out, then
run checkout:

	cvs checkout -d src larceny_src

checks out the module larceny_src into the subdirectory src of the
directory you are in.

update: To checkout updates from the module to your working directory,
go into the working directory (or a subdirectory of the working
directory) where you want updates to take place and run update:

	cvs -q update

(The -q is not required; it just reduces nonessential messages.)  Say
you want to update files in Lib/Common.  'cd' to Lib/Common, then run
update as above.  A trick: to find out what files have changed without
updating them, use the -n option to update:

	cvs -n -q update

add: To add a new file or directory to the module, create the file in
your working directory, then go to the directory that contains the file
and run add followed by commit:

	cvs add -m "This file does that." myfile.c
	cvs commit -m "Initial version." myfile.c

commit: To commit changes to a file to the module in the repository,
go to the directory that contains the file and run commit:

	cvs commit -m "This is what I've done to the file." myfile.c

remove: To remove a file from the module, go to the directory that contains
the file, remove the file using rm, then run remove followed by commit:

	rm myfile.c
	cvs remove myfile.c
	cvs commit -m "This file was removed because ..." myfile.c

log: To see changes to a file, use the log subcommand:

	cvs log myfile.c

Alas that provides too much info, try instead

	cvs -r release_2 -N myfile.c 

(info on the given branch) or 

	cvs -r release_2 -N -d '2001-01-01 < 2002-11-17' myfile.c

(info in the given date range).  Unfortunately log does not work at all
on directories, as far as I can tell, so getting useful information for
eg recent changes requires a shell script.
