3. FreeBSD 的特殊設定

FreeBSD 專案自己使用一個有點不同的設定,那就是同時也使用 FreeBSD CVSROOT 中的 freebsd 子目錄。因 為大量的提交者必須在相同的群組中,因此專案寫了一個簡單的 wrapper 來確認提 交者可以正確的提交,並設定儲存庫的群組名稱。

如果你的儲存庫也需要這樣的功能,那麼下面就會介紹如何建立,不過首先要 先來看一段複雜的概述。

3.1. FreeBSD 設定中使用的檔案

  • access - 此檔案用來控制儲存庫的存取。你 應該編輯並加入所有在專案中的成員。

  • freebsd/commitmail.pl - 此檔案已經沒有在 使用了,留著只是為了某些有意義的原因。你不該更動此檔案。

  • freebsd/cvswrap.c - 此 CVS wrapper 原始 碼是用來建立檢查所有存取的工作。更多的訊息在稍後會提出。你應該編 輯 ACCESSREALCVS 的路徑 以符合你的設定。

  • 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 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。

關於本文件的問題,請洽詢 <doc@FreeBSD.org>。