CVS exercises
intERLab / AIT March 2008


1. Install cvs

	# apt-get install cvs


2. Init a new CVS ROOT:

	*NOTE* Do this exercise as the normal user, NOT ROOT!!!

	- First, set the environment variable "CVSROOT" to the path
	- Where your CVS repository will be created:

	> CVSROOT=/home/MYHOMEDIRECTORY/cvs
	> export CVSROOT

	- Now create the directory

	> mkdir $CVSROOT
	> cvs init

	- Check that it was created correctly!

	> ls -l /home/MYHOMEDIRECTORY/cvs

	- You should see a directory called "CVSROOT"
	- Look at the contents of the directory.

3. Let's create a project in CVS for the configuration files on your system
   and import these files into the CVS!

	> mkdir /home/MYHOMEDIRECTORY/temp
	> cp /etc/smokeping/config /home/mysername/temp/config.smokeping

	- Now we need to import these files into CVS:
	- Let's make a new project called "configs"

	> cd /home/MYHOMEDIRECTORY/temp
	> cvs import configs before_cvs start

	(Note: the "before_cvs" and "start" are just names to say that
	we are importing from "before we used CVS, and this is the start")

	- When you see this:

CVS: ----------------------------------------------------------------------
CVS: Enter Log.  Lines beginning with `CVS:' are removed automatically
CVS:
CVS: ----------------------------------------------------------------------

	... just enter a message saying what you did, for example:

	This is a first import of our config files

	... Then save the file + quit.

	You should see something like this:

File /tmp/cvsh3EOVw saved
N configs/config.smokeping
^
(new file)

No conflicts created by this import

3b. Look at the contents of /home/MYHOMEDIRECTORY/cvs/configs

	> ls -l /home/MYHOMEDIRECTORY/cvs/configs
	total 36
	-r--r--r--   1 regnauld  wheel    799 Aug 31 17:26 config,v


4. Now we can remove our temp directory, and check out the
   configs/ project from CVS!

	> cd /home/MYHOMEDIRECTORY
	> rm -rf temp

	- Let's now check out from cvs :

	> cvs -d /home/MYHOMEDIRECTORY/cvs co configs

	- You should see something like:

cvs checkout: Updating configs
U configs/config.smokeping

	> ls -l /home/MYHOMEDIRECTORY/configs/

	- Notice the CVS directory in /home/MYHOMEDIRECTORY/configs/

	*NOTE* remember, never modify the CVS/ directory by hand!!
	It is only for experienced CVS users...

5. Let's modify the files, add another one, and check things in again:

	> cd /home/mysername/configs
	> vi config.smokeping

	... add something to it, for example a new configuration for
	a new host, then save and quit.

	- Add the APT sources.list file to the directory:

	> cp /etc/apt/sources.list .

	- Tell cvs to show us the status:

	> cvs status

	- Add it to the CVS:

	> cvs add sources.list

	- You should see this:

cvs add: scheduling file `sources.list' for addition
cvs add: use `cvs commit' to add this file permanently

	- You are now ready to commit!

	> cvs commit

	- If all goes well, you should have this in your editor window:

CVS: ----------------------------------------------------------------------
CVS: Enter Log.  Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS:    config.smokeping
CVS: Added Files:
CVS:    sources.list
CVS: ----------------------------------------------------------------------





	... add a message:

	Importing APT sources.list, and modifying smokeping config

	... then save + quit

	You should see this:

File /tmp/cvs3CyXND saved
/home/inst/cvs/configs/config.smokeping,v  <--  config.smokeping
new revision: 1.2; previous revision: 1.1
/home/inst/cvs/configs/sources.list,v  <--  sources.list
initial revision: 1.1


6. Let's see the history for the config.smokeping file:

	> cvs log config.smokeping

	... notice the output

	- Finally, let's try and see the difference between two
	  versions of the config.smokeping file:

	> cvs diff -r 1.1 -r 1.2 config.smokeping

	- What do you notice ?

