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.
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 cTI
directory and issue
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/cTI
Alternately, you can add
-d myusername@cvs.cs.unipr.it:/cvs/cTI
to the CVS commands below (place it immediately after
cvs
, i.e., before any other argument
of the cvs
command).
To checkout the cTI distribution, issue the command
cvs -z 9 checkout -P cTI
to check out the cTI sources, or
cvs -z 9 checkout -P w3cTI
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 cTI
directory and issue
cvs -z 9 update -d -P
To avoid messages about (lack of) X11 forwarding, put in your
$HOME/.ssh/config
and 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/cTI/.
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
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 -c -d -N
update -d -P
checkout -P
CVS Quick Reference
For the lazy, here are some CVS commands that may be of use:
login |
login to the CVS server |
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
[Page last updated on January 16, 2013, 21:43:28.]