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 映射站來取回會是最簡單的方法。請查閱 在 handbook 中的相關章節來 獲得更多資訊。我們假設取回的檔案存放在相同目錄下的 CVSROOT-freebsd 目錄中。

2.4. 複製 FreeBSD 的命令稿

接下來我們要複製 FreeBSD CVSROOT 裡的檔案到你 的儲存庫中。如果你是孰悉於 CVS,你也許會想你 可以直接匯入這些命令稿,試圖更容易的同時和更新的版本同步;不過,事實是 CVS 在這個部份有缺點:當匯入檔案到 CVSROOT 時,它並不會更新組態檔。為了要認出這些檔案 ,你還需要在匯入它們後一一重新提交,這就失去了 cvs import 的價值。因此,建議的方法是僅複製這些命令 稿過去。

若上述內容對你沒有意義是不重要的——因為最後的結果都是一樣的。 首先匯出你的 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 可以正確儲存。預設會儲 存在儲存庫中的 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 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。
關於本文件的問題,請洽詢 <doc@FreeBSD.org>。