220.127.116.11 Using the client with password authentication
To run a CVS command on a remote repository via
the password-authenticating server, one specifies the
pserver protocol, optional username, repository host, an
optional port number, and path to the repository. For example:
cvs -d :pserver:faun.example.org:/usr/local/cvsroot checkout someproj
However, unless you're connecting to a public-access
repository (i.e., one where that username doesn't
require a password), you'll need to supply a password or log in first.
Logging in verifies your password with the repository and stores it in a file.
It's done with the
login command, which will
prompt you interactively for the password if you didn't supply one as part of
After you enter the password, CVS verifies it with
the server. If the verification succeeds, then that
combination of username, host, repository, and password
is permanently recorded, so future transactions with
that repository won't require you to run
login. (If verification fails, CVS will exit
complaining that the password was incorrect, and
nothing will be recorded.)
The records are stored, by default, in the file
`$HOME/.cvspass'. That file's format is
human-readable, and to a degree human-editable, but
note that the passwords are not stored in
cleartext—they are trivially encoded to protect them
from "innocent" compromise (i.e., inadvertent viewing
by a system administrator or other non-malicious
You can change the default location of this file by
CVS_PASSFILE environment variable.
If you use this variable, make sure you set it
cvs login is run. If you were to
set it after running
cvs login, then later
CVS commands would be unable to look up the
password for transmission to the server.
Once you have logged in, all CVS commands using
that remote repository and username will authenticate
with the stored password. So, for example
should just work (unless the password changes on the
server side, in which case you'll have to re-run
Note that if the `:pserver:' were not present in
the repository specification, CVS would assume it
rsh to connect with the server
instead (see section Connecting with rsh).
Of course, once you have a working copy checked out and
are running CVS commands from within it, there is
no longer any need to specify the repository
explicitly, because CVS can deduce the repository
from the working copy's `CVS' subdirectory.
The password for a given remote repository can be
removed from the
CVS_PASSFILE by using the
cvs logout command.