建立 CVS 儲存庫(repository) - 使用 FreeBSD 的方式 | ||
---|---|---|
前一頁 |
FreeBSD 專案自己使用一個有點不同的設定,那就是同時也使用 FreeBSD CVSROOT 中的 freebsd 子目錄。因 為大量的提交者必須在相同的群組中,因此專案寫了一個簡單的 wrapper 來確認提 交者可以正確的提交,並設定儲存庫的群組名稱。
如果你的儲存庫也需要這樣的功能,那麼下面就會介紹如何建立,不過首先要 先來看一段複雜的概述。
access - 此檔案用來控制儲存庫的存取。你 應該編輯並加入所有在專案中的成員。
freebsd/commitmail.pl - 此檔案已經沒有在 使用了,留著只是為了某些有意義的原因。你不該更動此檔案。
freebsd/cvswrap.c - 此 CVS wrapper 原始 碼是用來建立檢查所有存取的工作。更多的訊息在稍後會提出。你應該編 輯 ACCESS 和 REALCVS 的路徑 以符合你的設定。
freebsd/mailsend.c - 此檔案是 FreeBSD 設 定 mailing lists 需要的,你不該更動此檔案。
只有加入你的使用者名稱到 access 中。
編輯 cvswrap.c 的路徑以符合你的設定,定義 在大寫的 ACCESS 中。同時如果預設值不符合你的情況 的話也應該修改本地實際的 cvs 程式所在位置。原始 的 cvswrap.c 希望替代伺服端的 CVS 程式,例如可 能會是 /usr/bin/ncvs。
我的 cvswrap.c 是這樣:
#define ACCESS "/local/cvsroot/CVSROOT/access" #define REALCVS "/usr/bin/ncvs"
接下來是建立 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 程式,請確定 任何要使用儲存庫的人應該有正確的存取權限。
現在你可以刪除所有在儲存庫群組中的使用者,所有的存取控制會經由 wrapper 完成,同時 wrapper 會設定存取的正確群組。
你的 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>。