Access the Parma Polyhedra Library Using CVS
The Parma Polyhedra Library is currently being maintained on a publicly readable CVS server.
CVS is a powerful tool that allows many developers to work on the same source code. This is possible because each developer checks out a copy of the current version of the source code. Developers then work independently on their personal copy. When they have made changes, they commit them back to the CVS repository. The CVS server takes care of things like trying to merge the changes coming from different developers. When this is not possible, developers are notified so that they can proceed to a manual merge of the conflicts.
Full read-write access to this repository is of course restricted to recognized developers. Write to us if you want to be involved in the development effort.
We also provide read-only anonymous access to the repository. This allows anyone to easily synchronize their own copy with the development sources.
CVS is a powerful and complex system: see below for some CVS tips and pointers to further reading. []{#read-only-access}
Read-Only Anonymous CVS Access
For this to work you need CVS version 1.9 or later.
Set the CVSROOT
environment variable to
:pserver:anoncvs@cvs.cs.unipr.it:/cvs/ppl
Alternately, you can add
-d :pserver:anoncvs@cvs.cs.unipr.it:/cvs/ppl
to the CVS commands below (place it immediately after cvs
, i.e.,
before any other argument of the cvs
command).
To checkout the PPL distribution, issue the command
cvs -z 9 checkout -P ppl
to check out the PPL sources, or
cvs -z 9 checkout -P w3ppl
to check out our web pages.
After the initial checkout, you can change into one of the project’s
directories and execute CVS commands without the -d :pserver...
option
or the CVSROOT
environment variable. For example, whenever you want to
merge with the latest code changes, cd
into your ppl
directory and
issue
cvs -z 9 update -d -P
[]{#read-write-access}
Read-Write CVS Access
Full access to the repository requires authenticated access via the SSH
protocol. For this to work, an SSH client must be available on your
local machine and you must have an account on cvs.cs.unipr.it
. To see
if these are the cases, use SSH to enter your myusername
account on
cvs.cs.unipr.it
: issue the command
ssh cvs.cs.unipr.it -l myusername
If this does not work there is no point in reading further: solve this problem first.
The environment variable CVS_RSH
must be set to a working path for the
ssh. If you use bash, this can be done issuing the command
export CVS_RSH=ssh
or adding it to the appropriate startup file (and then logout and login again).
Set the CVSROOT environment variable to
myusername@cvs.cs.unipr.it:/cvs/ppl
Alternately, you can add
-d myusername@cvs.cs.unipr.it:/cvs/ppl
to the CVS commands below (place it immediately after cvs
, i.e.,
before any other argument of the cvs
command).
To checkout the PPL distribution, issue the command
cvs -z 9 checkout -P ppl
to check out the PPL sources, or
cvs -z 9 checkout -P w3ppl
to check out our web pages. If you get permission denied errors with
no prompt for a password, you do not have the CVS_RSH
environment
variable set properly or SSH is not available to your system. Fix this
before suspecting a password problem.
After the initial checkout, you can change into one of the project’s
directories and execute CVS commands without the -d myusername...
option or the CVSROOT
environment variable. For example, whenever you
want to merge with the latest code changes, cd
into your ppl
directory and issue
cvs -z 9 update -d -P
To avoid messages about (lack of) X11 forwarding, put in your
$HOME/.ssh/config
an entry like:
Host cvs.cs.unipr.it ForwardX11 no
Web Pages
Note that when you commit changes to the web pages, these will automatically be checked out into the web server’s data area at http://www.cs.unipr.it/ppl/ .
Write Access and Responsibility
Always remember the commandments of team membership:
- Thou shalt not break the build. Cause not the build team to call down demons upon your workstation.
- Thou shalt not wander through thy brother’s code changing his parts without first obtaining thy brother’s permission. A plague upon those that sow random and wanton destruction through others code.
- Thou wilt respond to build and/or bringup problems with haste and thoroughness. Be humble, and serve.
- Thou shalt coordinate interface changes and submissions with thy brother developers. Woe be to thee who causes thy brother’s code to break.
- Thou shalt not unnecessarily change common headers. Woe be the developer who heedeth this not, he shall cause a rebuilding of the world and incur 40 days and 40 nights of compiles.
- Thou shalt not covet the false temptress code change past code-freeze. Resist the evil temptation of just one more fix. Thy brother developers and release managers will curse thy name long into the darkness.
[]{#using-cvs}
Using CVS
Documentation
Tips
Use a .cvsrc
File
You can save some keystrokes by putting a file called .cvsrc
into your
home directory. This file should contain default options for some CVS
commands. Here is a set of good defaults you can take for inspiration:
put them into $HOME/.cvsrc
and see if you like them.
cvs -z 9 diff -u -d -N update -d -P checkout -P
CVS Ultra-Quick Reference
For the lazy, here are some CVS commands that may be of use:
get/checkout downloads a local copy of the requested module update bring your working directory up to date with the repository add adds a new file to the repository, requires write access commit apply local changes to the repository, requires write access diff shows differences between local files and repository history shows reports on commands against the CVS repository log shows CVS log information rdiff used to prepare a diff file between releases status shows current status if files in repository and local copies tag applies a tag to the repository, requires write access
You can also try giving to your shell the command
cvs --help-commands
or, if you really feel adventurous,
man cvs