2 基本配置

警告: 最好的方式是在一个全新的储存库中执行这些步骤, 并确定你了解所有的后果。 同时, 请确定你有最新且可读的资料备份!

2.1 初始化储存库

  首先要做的是建立一个新的储存库, 执行下列命令告诉 CVS 建立并初始化:

% cvs -d path-to-repository init

  这命令告诉 CVS 建立 CVSROOT 的目录, 这个目录里放置了所有的配置文件。

2.2 配置储存库的用户组

  现在我们将建立一个拥有该储存库的用户组, 所有的开发者必须加入这个用户组, 这样他们才能够存取该储存库。 我们假设用户组名称是以 FreeBSD 内部所采用的 ncvs

# pw groupadd ncvs

  接着你需要使用 chown(8) 将目录所有者指定给刚刚新增的用户组:

# chown -R :ncvs path-to-your-repository

  如此一来, 没有适当的用户组许可的用户, 就不再能够写入该储存库。

2.3 取回源文件

  现在你需要从 FreeBSD 储存库中取回 CVSROOT 目录, 从 FreeBSD 匿名的 CVS 镜像站来取回会是最简单的方法。请查阅 在 使用手册 中的相关章节 来获得更多信息。 我们假设取回的文件存放在相同目录下的 CVSROOT-freebsd 目录中。

2.4 复制 FreeBSD 的命令脚本

  接下来我们要复制 FreeBSD CVSROOT 里的文件到你的储存库中。 如果你熟悉 CVS, 你也许会想你可以直接汇入 (import) 这些命令脚本, 从而更容易地在未来有新版时进行版本同步; 不过,事实是 CVS 在这个部份有缺点: 当汇入文件到 CVSROOT 时, 它并不会更新配置文件。 为了要认出这些文件, 你还需要在汇入它们后一一重新提交, 这就失去了 cvs import 的价值。 因此, 推荐的方法是直接将这些命令脚本复制过去。

  如果您不了解这些操作也没有关系 ── 因为最后的结果都是一样的。 首先汇出 (checkout) 你的 CVSROOT, 然后复制刚刚取回的 FreeBSD 文件到本地的目录中(尚未变动过):

% cvs -d path-to-your-repository checkout CVSROOT
% cd CVSROOT
% cp ../CVSROOT-freebsd/* .
% cvs add *

  注意: 你很可能会得到一段关于某些目录没有被复制的警告,这是正常的, 你并不需要用到这些目录。

2.5 命令脚本说明

  现在你的工作目录中有了完整 FreeBSD 项目在他们的储存库中使用的命令脚本的副本, 以下是每个文件简单的介绍。

2.6 定制命令脚本

  接下来的步骤要配置这些命令脚本使得它们可以在你的环境中运作。 你应该检查所有在目录中的文件, 并修改为符合你的配置。 尤其, 你会想要修改下列的文件:

  1. 如果你不希望使用 FreeBSD 的专用配置, 你可以安全地删除 access

    % cvs rm -f access
    
  2. 编辑 avail 来包含你想控制存取的各种储存库目录, 请确定你有保留 avail||CVSROOT 这一行, 否则你将会在下一步把你自己锁在外面。

    另外你可以在此文件中新增开发者的用户组,FreeBSD 预设使用 access 来列出所有的开发者, 但你可以使用任何你想要用的文件。 如果你想的话也可以新增用户组 (请使用指定在 cvs_acls.pl 前面所介绍的语法)。

  3. 编辑 cfg_local.pm 来包含你需要的选项。 你应该特别检视一下下列的配置项目:

    • %TEMPLATE_HEADERS - 这是用来取得日志信息内容的程序, 并加入将呈现的邮件项目和提供非空值的信息。 你可以删除 PRMFC after 叙述,当然也可以加入你想要的。

    • $MAIL_BRANCH_HDR - 如果你想要在每一封提交的邮件中加入描述是在哪一个分支中提交的标头, 那么请定义为符合你的配置。 如果你不想使用这样的标头, 那么请配置为空值。

    • @COMMIT_HOSTS - 定义使用者能够提交的主机。

    • $MAILADDRS - 配置应该收到提交邮件的邮件地址。

    • @LOG_FILE_MAP - 以你所需要的来修改这个数组, 每个配置值应该符合被提交的目录,而提交的日志信息会以 commitlogs 的名称储存在每个被配置的目录下。

    • $COMMITCHECK_EXTRA - 如果你不想使用 FreeBSD 专用的存取控制 功能, 你可以在此文件中删除对 $COMMITCHECK_EXTRA 的定义。

    注意: 修改 $IDHEADER 的功能只有在 FreeBSD 平台上可以运作, 它依赖于 FreeBSD 专用的 CVS 配置。

    你可以检查 cfg.pm 是否有其它的参数可以修改, 但是修改最好是有原因的。

  4. 删除 exclude 中关于FreeBSD 的专用配置的叙述 (如以 ^ports/ 为开头的每一行等)。 此外, 注释掉以 ^CVSROOT/ 为开头的行列, 然后新增一行只有 ^CVSROOT/。 等到关键词展开的命令脚本安装好后, 你可以在 CVSROOT 目录中的文件里加上标头, 然后再恢复刚刚注释的行列, 但在你还没有提交前则只保持这样。

  5. 编辑 modules, 并删除所有 FreeBSD 的模块。 加入你需要的模块。

  6. 注意: 此步骤只有在你于 cfg_local.pm 中指定了 $IDHEADER 才有必要配置 (只有在 FreeBSD 专用的 CVS 配置上才能够执行)。

    编辑 options 以符合你在 cfg_local.pm 中配置的标签名称。 在所有的文件中搜寻 FreeBSD 并替换为你配置的标签名称。

  7. 修改 rcstemplate 为和在 cfg_local.pm 中相同的配置。

  8. 选择性的删除在 tagcheck 中针对 FreeBSD 检查的配置。你可以仅仅在文件的最上层加上 exit 0 来取消所有标签的检查。

  9. 在你完成前的最后一件事是确认 commitlogs 可以正确储存。 预设会储存在储存库中 CVSROOT 里的 commitlogs 子目录中, 而这个目录需要事先建立:

    % mkdir commitlogs
    % cvs add commitlogs
    

  现在, 在细心的检视过后, 你可以提交你的修改了。 确定你先前有在 avail 中允许你自己存取 CVSROOT 目录, 因为如果没有这样做的话你会把你自己锁在外面。 完整确认过后请执行下列命令:

% cvs commit -m '- Initial FreeBSD scripts commit'

2.7 测试配置

  你已经准备好做基本的测试了: 强制提交 avail 以确认每件事都如预期的运作。

% cvs commit -f -m 'Forced commit to test the new CVSROOT scripts' avail

  如果一切正常, 那么恭喜了! 你现在已经为你的储存库建立好 FreeBSD 的命令脚本了。 如果 CVS 仍然有警告什么, 回头检视上述的步骤是否有正确的执行。

本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.