C.12 Expansions in administrative files
Sometimes in writing an administrative file, you might
want the file to be able to know various things based
on environment CVS is running in. There are
several mechanisms to do that.
To find the home directory of the user running CVS
(from the HOME environment variable), use
`~' followed by `/' or the end of the line.
Likewise for the home directory of user, use
`~user'. These variables are expanded on
the server machine, and don't get any reasonable
expansion if pserver ( 2.9.3 Direct connection with password authentication)
is in use; therefore user variables (see below) may be
a better choice to customize behavior based on the user
running CVS.
One may want to know about various pieces of
information internal to CVS. A CVS internal
variable has the syntax ${variable},
where variable starts with a letter and consists
of alphanumeric characters and `_'. If the
character following variable is a
non-alphanumeric character other than `_', the
`{' and `}' can be omitted. The CVS
internal variables are:
CVSROOT
-
This is the value of the CVS root in use.
2. The Repository,
for a description of the various
ways to specify this.
RCSBIN
-
In CVS 1.9.18 and older, this specified the
directory where CVS was looking for RCS
programs. Because CVS no longer runs RCS
programs, specifying this internal variable is now an
error.
CVSEDITOR
-
VISUAL
-
EDITOR
-
These all expand to the same value, which is the editor
that CVS is using. A.4 Global options, for how
to specify this.
USER
-
Username of the user running CVS (on the CVS
server machine).
If you want to pass a value to the administrative files
which the user who is running CVS can specify,
use a user variable.
To expand a user variable, the
administrative file contains
${=variable}. To set a user variable,
specify the global option `-s' to CVS, with
argument variable=value. It may be
particularly useful to specify this option via
`.cvsrc' ( A.3 Default options and the ~/.cvsrc file).
For example, if you want the administrative file to
refer to a test directory you might create a user
variable TESTDIR. Then if CVS is invoked
as
| | cvs -s TESTDIR=/work/local/tests
|
and the
administrative file contains sh
${=TESTDIR}/runtests, then that string is expanded
to sh /work/local/tests/runtests.
All other strings containing `$' are reserved;
there is no way to quote a `$' character so that
`$' represents itself.
|