What is CVS and how to use it.
CVS usage is not essential for contributing to FHSST. It makes
coordination easier for us but we will gladly accept help in any form.
Concurrent Versions System (
CVS) is basically
a tool for collaborating. In practical terms a server exists which every member can connect to. This
server stores copies of all our documents. As a user you connect to the server and retrieve the
current documents onto your personal computer. Then you edit them and send your changes back to the
server. Other members of the project who connect to the server will then be able to retrieve your
changes onto their own personal machines.
The things that make CVS particularly useful are:
- it keeps track of all changes - this means that everytime an edit is sent to the server it
updates a version number for each edited file. At any time you can go back and retrieve a version of the
document at any stage in its development.
- if two people edit the same file in conflicting ways the first person to commit will have no
problems but the second person will not be allowed to commit their changes and they will
be warned of a conflict. It is their responsibility to update their document and resolve the conflict.
- we have a central place to backup everyones work without having to worry about keeping track
of individual changes etc.
- even if things go wrong we can always go back.
The jargon that you need to be familiar with is quite simple. The server storage is the
repository.
When you retrieve a copy of the repository it is called a
checkout. When you send your
changes back to the repository it is called a
commit. If you have a copy of the repository and you
want to get other peoples edits included in your own copy you
update your copy of the repository.
The procedure we recommend you follow is:
- checkout the repository
- everytime you begin working you should update to ensure you are working on the latest
version of the files
- before you commit you should update again to check that while you were
editing no other changes were made to the files. You will be warned if there is a conflict.
- text that is in conflict will be between >>>>>>>> and <<<<<<<<<< and >>>>>>>> . Once you have reached this stage you may resolve the conflict and commit.
Using CVS on Windows
- You need to make a free account on
Savannah.
- Send one of the project administrators your username so we can add you to the project. We
must add you before you will be able to access CVS.
- Download 3 programs - Pageant, puTTYgen and TortoiseCVS.
- Run puTTYgen and make a DSA key. Save the private key in a file
and the public key in another file in a folder where you will not delete them.
- Now you need to register your public key. To do this go to your Savannah homepage
at the top there is a link to Account Configuration. Follow this link and on the
configuration page there is a link "Edit the 0 SSH Public Key(s) Registered" thats the
link to follow. You need to cut and paste your public key into the text box. Once you have
done that click "Update". There is a 1 hour delay.
Note: Be sure to copy the whole thing at once (i.e. as one line)
and paste it as one line - it will take two lines even
though you did it as a single line - this is correct.
- Install TortoiseCVS, its the program that will talk to the CVS server
for you.
- Now run Pageant; a little icon of a computer with a hat will appear
on the toolbar. This is the program that makes it possible to use
keys to communicate - keys aren't built into Windows like in Linux.
Right-click on the hat and on the menu select Add Key. Select
your private key file that you saved earlier. Now windows knows about your keys.
Windows has your private key and Savannah has your public key and so
you can now do secure communication.
- Now to actually get the books from CVS.
Right click on your desktop, the menu will have some little tortoise
icons. You want to do a "checkout" (i.e. get a copy of the books).
Click on the checkout icon. It will ask all sorts of questions - here
are the answers:
CVSROOT = :ext:<username>@subversions.gnu.org:/cvsroot/fhsst
module name = fhsst
Replace <username> with your savannah username. Now it should
checkout a directory called fhsst with all our stuff in it. If you
modify a file right-click on its icon and click on commit. You will be asked
for a log message and then it will send the changes to the
server.
Using CVS on Linux
There is a great
guide to CVS under Linux available,
which I recommend you bookmark. Its got everything from how to do the basic tasks through to how
configure your own server.
- Open a terminal and if you have not yet created a DSA key
you can do so by executing (save the keys in the default files - just press <RETURN> when
prompted for filenames and passphrases):
ssh-keygen -t dsa
Your public key has been saved in ~/.ssh/id_dsa.pub and we now need to register it
on your Savannah homepage.
- To register your public key go to your Savannah homepage
at the top there is a link to Account Configuration. Follow this link and on the
configuration page there is a link "Edit the 0 SSH Public Key(s) Registered" thats the
link to follow. You need to cut and paste your public key into the text box. Once you have
done that click "Update". There is a 1 hour delay.
Note: Be sure to copy the whole thing at once (i.e. as one line)
and paste it as one line - it will take two lines even
though you did it as a single line - this is correct.
- Once sufficient time has passed you should be able to access the CVS server.
To get the books requires that you set two environment variables:
bash | csh |
export CVS_RSH=ssh | setenv CVS_RSH ssh |
export CVSROOT=:ext:<username>@subversions.gnu.org:/cvsroot/fhsst | setenv CVSROOT :ext:<username>@subversions.gnu.org:/cvsroot/fhsst |
Replace <username> with your savannah username.
- Once this is complete execute the following command to get the books:
cvs co fhsst
Now it should
checkout a directory called fhsst with all our stuff in it. If you
modify a file right-click on its icon and click on commit. You will be asked
for a log message and then it will send the changes to the
server.