下一个: , 上一个: history file, 上层: Administrative files


C.8 扩充管理文件

在写管理文件的时候,你想让该文件可以知道 cvs 运行环境的一些情况。

寻找运行 cvs 用户的 home 目录(从 HOME 环境变量),使用 `~', 紧跟着是 `/',或者行尾。同样对应 user 的 home 目录,使用 `~user'。这些变量在服务器上展开,但如果使用 pserver (参阅 Password authenticated) 不会得到任何合理的扩展; 因此定制用户执行 cvs 时的行为,采用用户变量(见下)可能是较好的选择。

有人可能想了解 cvs 内部的各个部分信息。cvs 内部变量使用 ${variable} 语法,其中 variable 以字母开头,并由字目数字和 `_' 组成。如果 variable 后面的字符是非字母数字及 `_',符号 `{' 和 `}' 将被忽略。cvs 内部变量有:

CVSROOT
它是当前 cvs 根目录的绝对路径。参阅 Repository, 了解指定它的各种方式, 但要注意,内部变量只包含目录,但不包括任何访问方式。
RCSBIN
cvs 1.9.18 及以前,它指定 cvs 要寻找的 rcs 程序目录。因为 cvs 不再需要运行 rcs 程序,现在指定该内部变量会出错。
CVSEDITOR
EDITOR
VISUAL
它们扩充是相同值,即 cvs 使用的编辑器。参阅 Global options, 了解如何指定。
USER
当前运行 cvs 的用户名(在 cvs 服务器上)。当使用 pserver 时,它是仓库里面 指定的用户,可以与服务器上运行的不同(参阅 Password authentication server)。 不要因为使用了同样的名字,将它与环境变量混淆。

如果要传递一个值到管理文件,并由运行 cvs 的用户指定,请使用用户变量。 为了扩展 用户变量,管理文件要包含 ${=variable}。为了设置用户变量,请在 cvs 里面指定 `-s' 全局选项,然后使用 variable=value 参数。 把它在 .cvsrc (参阅 ~/.cvsrc) 里面设置特别有用。

例如,如果你想在管理文件里面指定一个测试目录,可以创建用户变量 TESTDIR。 然后启动 cvs

     cvs -s TESTDIR=/work/local/tests

管理文件里面包含的 sh ${=TESTDIR}/runtests,将被扩展为 sh /work/local/tests/runtests

其余包含 `$' 的字符串将保留; 由于没有引用 `$' 字符的方式, 所以它还保持原样。

传递到管理文件的环境变量有:

CVS_USER
如果能提供(当前只是用于 pserver 访问方式),是用户提供的 cvs 指定的用户名, 其他方式为空串。(当使用 $CVSROOT/CVSROOT/passwdcvs 用户名映射 到系统用户名时,CVS_USERUSER 会不一致)。
LOGNAME
系统用户的用户名。
USER
LOGNAME 相同。请勿将它与内部变量因为同名而混淆。