建立 CVS 储存库 (repository) - 以 FreeBSD 的方式
上一页 |  |

# 3 FreeBSD 的专用配置

FreeBSD 项目自己使用一个有点不同的配置，那就是同时也使用 FreeBSD `CVSROOT` 中的 `freebsd` 子目录。 因为大量的 committer 必须在相同的用户组中， 因此项目写了一个简单的 wrapper 来确保 committer 可以正确的提交， 并配置储存库的用户组名称。

如果你的储存库也需要这样的功能，那么下面就会介绍如何建立， 不过首先要先来看一段复杂的概述。

## 3.1 FreeBSD 配置中使用的文件

- `access` - 此文件用来控制储存库的存取。 你应该编辑并加入所有在项目中的成员。

- `freebsd/commitmail.pl` - 此文件已经不再使用了， 只是因为历史原因而保留。 你不应更动此文件。

- `freebsd/cvswrap.c` - 此 CVS wrapper 源代码是用来建立检查所有存取的工作。更多的信息在稍后会提出。 你应该编辑 `ACCESS` 和 `REALCVS` 的路径以符合你的配置。

- `freebsd/mailsend.c` - 此文件是 FreeBSD 设定 mailing lists 需要的， 你不应更动此文件。

## 3.2 步骤

1. 只把你的用户名加到 `access` 中。

2. 编辑 `cvswrap.c` 的路径以符合你的配置， 定义在大写的 `ACCESS` 中。 同时如果默认值不符合你的情况的话也应该修改本地实际的 `cvs` 程序所在位置。 原始的 `cvswrap.c` 希望替代服务器端的 CVS 程序， 例如将其改名为 `/usr/bin/ncvs`。

   我的 `cvswrap.c` 是这样：

       #define ACCESS "/local/cvsroot/CVSROOT/access"
       #define REALCVS "/usr/bin/ncvs"

3. 接下来是建立 wrapper 来确认你在提交时是在正确的用户组中。 在你的 `CVSROOT` 中的 `cvswrap.c` 要能够使用。

   在你完成编辑并加入正确的路径后我们要来编译源代码：

       % cc -o cvs cvswrap.c

   然后进行需要配置（此步骤需要 root 权限）：

       # mv /usr/bin/cvs /usr/bin/ncvs
       # mv cvs /usr/bin/cvs
       # chown root:ncvs /usr/bin/cvs /usr/bin/ncvs
       # chmod o-rx /usr/bin/ncvs
       # chmod u-w,g+s /usr/bin/cvs

   这会将 wrapper 安装成预设的 `cvs` 程序， 请确定任何要使用储存库的人应该有正确的存取权限。

4. 现在你可以删除所有在储存库用户组中的使用者，所有的存取控制会经由 wrapper 完成，同时 wrapper 会配置存取的正确用户组。

## 3.3 测试配置

你的 wrapper 现在应该已经安装好了，你当然也可以强制提交 `access` 来测试是否正常：

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

同样地，如果有错误，检查是否上述所有步骤都有正确的执行。

上一页 | 起始页 |
基本配置 |  |

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

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