A zh_TW.Big5 encoding translation of doc/en_US.ISO8859-1/articles/cvs-freebsd/.
Submitted by: Jose Liang <jose at jose.idv.tw> PR: docs/91479
This commit is contained in:
parent
1650783dc5
commit
5d4474cba5
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=26801
5 changed files with 610 additions and 1 deletions
|
@ -1,6 +1,6 @@
|
|||
# $FreeBSD$
|
||||
|
||||
#SUBDIR = articles
|
||||
SUBDIR = articles
|
||||
SUBDIR += books
|
||||
|
||||
COMPAT_SYMLINK = zh
|
||||
|
|
7
zh_TW.Big5/articles/Makefile
Normal file
7
zh_TW.Big5/articles/Makefile
Normal file
|
@ -0,0 +1,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
SUBDIR =
|
||||
SUBDIR+= cvs-freebsd
|
||||
|
||||
DOC_PREFIX?= ${.CURDIR}/../..
|
||||
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
|
5
zh_TW.Big5/articles/Makefile.inc
Normal file
5
zh_TW.Big5/articles/Makefile.inc
Normal file
|
@ -0,0 +1,5 @@
|
|||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
DESTDIR?= ${DOCDIR}/zh_TW.Big5/articles/${.CURDIR:T}
|
21
zh_TW.Big5/articles/cvs-freebsd/Makefile
Normal file
21
zh_TW.Big5/articles/cvs-freebsd/Makefile
Normal file
|
@ -0,0 +1,21 @@
|
|||
# $FreeBSD$
|
||||
#
|
||||
# Article: Setting up a CVS repository - the FreeBSD way
|
||||
#
|
||||
# Build the Traditional Chinese Version
|
||||
|
||||
MAINTAINER= stijn@win.tue.nl
|
||||
|
||||
DOC?= article
|
||||
|
||||
FORMATS?= html
|
||||
|
||||
INSTALL_COMPRESSED?= gz
|
||||
INSTALL_ONLY_COMPRESSED?=
|
||||
|
||||
SRCS= article.sgml
|
||||
|
||||
URL_RELPREFIX?= ../../../..
|
||||
DOC_PREFIX?= ${.CURDIR}/../../..
|
||||
|
||||
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
|
576
zh_TW.Big5/articles/cvs-freebsd/article.sgml
Normal file
576
zh_TW.Big5/articles/cvs-freebsd/article.sgml
Normal file
|
@ -0,0 +1,576 @@
|
|||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||||
<!-- $FreeBSD$ -->
|
||||
<!-- The FreeBSD Documentation Project -->
|
||||
<!-- Setting up a CVS repository - the FreeBSD way -->
|
||||
<!-- Translate into Chinese by jose@jose.idv.tw -->
|
||||
<!-- English Version: 1.15 -->
|
||||
|
||||
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN">
|
||||
%articles.ent;
|
||||
]>
|
||||
|
||||
<article>
|
||||
<articleinfo>
|
||||
<title>建立 CVS 儲存庫 - 使用 FreeBSD 的方式</title>
|
||||
|
||||
<author>
|
||||
<firstname>Stijn</firstname>
|
||||
<surname>Hoop</surname>
|
||||
<affiliation>
|
||||
<address><email>stijn@win.tue.nl</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
|
||||
<copyright>
|
||||
<year>2001</year>
|
||||
<year>2002</year>
|
||||
<year>2003</year>
|
||||
<holder role="mailto:stijn@win.tue.nl">Stijn Hoop</holder>
|
||||
</copyright>
|
||||
|
||||
<releaseinfo>$FreeBSD$</releaseinfo>
|
||||
|
||||
<legalnotice id="trademarks" role="trademarks">
|
||||
&tm-attrib.freebsd;
|
||||
&tm-attrib.general;
|
||||
</legalnotice>
|
||||
|
||||
<abstract>
|
||||
<para>這份文件描述了使用和 FreeBSD 專案相同的命令稿來建立 CVS 儲存庫的步驟
|
||||
。這和標準 CVS 建立的儲存庫相較之下有許多優點,包含了更多對於原始碼樹的
|
||||
granular access 控制,以及為每一次的提交產生易讀的電子郵件。</para>
|
||||
</abstract>
|
||||
</articleinfo>
|
||||
|
||||
<sect1 id="introduction">
|
||||
<title>簡介</title>
|
||||
|
||||
<para>大多數的開放原始碼軟體專案都使用 <application>CVS</application> 作為
|
||||
他們的原始碼控制系統。當 <application>CVS</application> 有這樣的優點存在
|
||||
時,它也有部份的瑕疵和缺點。其中之一的原因是和其他的開發者分享原始碼樹能
|
||||
夠快速地導致系統管理的惡夢,特別是如果其中一人希望保護部份的原始碼樹免受
|
||||
於一般的存取。</para>
|
||||
|
||||
<para>FreeBSD 是其中一個使用 <application>CVS</application> 的專案,同時也
|
||||
是基於它的開發者遍佈於全世界。他們撰寫了一些命令稿使得管理儲存庫變得更加
|
||||
容易。最近這些命令稿由 &a.joe; 重新整理過且更標準化,使得在其他的專案上再
|
||||
次使用這些命令稿會更加容易。本文件將描述使用這些新的命令稿的方法。</para>
|
||||
|
||||
<para>為了使本文件中的訊息有用,你需要熟悉 <application>CVS</application>
|
||||
基本的操作方式。</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="first-setup">
|
||||
<title>基本設定</title>
|
||||
|
||||
<warning>
|
||||
<para>最好的方式是在一個全新的儲存庫中執行這些步驟,並確定你了解所有的後
|
||||
果。同時,請確定你有最新且可讀的資料備份!</para>
|
||||
</warning>
|
||||
|
||||
<sect2>
|
||||
<title>初始化儲存庫</title>
|
||||
|
||||
<para>首先要做的是建立一個新的儲存庫,執行下列命令告訴
|
||||
<application>CVS</application> 建立並初始化:</para>
|
||||
|
||||
<screen>&prompt.user; <userinput>cvs -d <replaceable>path-to-repository</replaceable> init</userinput></screen>
|
||||
|
||||
<para>這命令告訴 <application>CVS</application> 建立
|
||||
<filename>CVSROOT</filename> 的目錄,這個目錄裡放置了所有的組態檔。</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>設定儲存庫的群組</title>
|
||||
|
||||
<para>現在我們將建立一個擁有該儲存庫的群組,所有的開發者必須加入這個群組
|
||||
,這樣他們才能夠存取該儲存庫。我們假設群組名稱是以 FreeBSD 內定的
|
||||
<literal>ncvs</literal>。</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>pw groupadd <replaceable>ncvs</replaceable></userinput></screen>
|
||||
|
||||
<para>接者你需要使用 &man.chown.8; 將目錄所有者指定給剛剛新增的群組:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>chown -R :<replaceable>ncvs</replaceable> <replaceable>path-to-your-repository</replaceable></userinput></screen>
|
||||
|
||||
<para>如此一來沒有適當的群組許可將沒有其他人可以寫入該儲存庫。</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>取回原始檔案</title>
|
||||
|
||||
<para>現在你需要從 FreeBSD 儲存庫中取回 <filename>CVSROOT</filename> 目錄,
|
||||
從 FreeBSD 匿名的 CVS 映射站來取回會是最簡單的方法。請查閱 <ulink
|
||||
url="&url.books.handbook;/anoncvs.html">在 handbook 中的相關章節</ulink>來
|
||||
獲得更多資訊。我們假設取回的檔案存放在相同目錄下的
|
||||
<filename>CVSROOT-freebsd</filename> 目錄中。</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>複製 FreeBSD 的命令稿</title>
|
||||
|
||||
<para>接下來我們要複製 FreeBSD <filename>CVSROOT</filename> 裡的檔案到你
|
||||
的儲存庫中。如果你是孰悉於 <application>CVS</application>,你也許會想你
|
||||
可以直接匯入這些命令稿,試圖更容易的同時和更新的版本同步;不過,事實是
|
||||
<application>CVS</application> 在這個部份有缺點:當匯入檔案到
|
||||
<filename>CVSROOT</filename> 時,它並不會更新組態檔。為了要認出這些檔案
|
||||
,你還需要在匯入它們後一一重新提交,這就失去了
|
||||
<literal>cvs import</literal> 的價值。因此,建議的方法是僅複製這些命令
|
||||
稿過去。</para>
|
||||
|
||||
<para>若上述內容對你沒有意義是不重要的—因為最後的結果都是一樣的。
|
||||
首先匯出你的 <filename>CVSROOT</filename>,然後複製剛剛取回的 FreeBSD
|
||||
檔案到本地的目錄中(尚未編動過):</para>
|
||||
|
||||
<screen>&prompt.user; <userinput>cvs -d <replaceable>path-to-your-repository</replaceable> checkout CVSROOT</userinput>
|
||||
&prompt.user; <userinput>cd CVSROOT</userinput>
|
||||
&prompt.user; <userinput>cp ../CVSROOT-freebsd/* .</userinput>
|
||||
&prompt.user; <userinput>cvs add *</userinput></screen>
|
||||
|
||||
<para>注意:你很可能會得到一段關於某些目錄沒有被複製的警告,這是正常的,
|
||||
你並不需要用到這些目錄。</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>命令稿說明</title>
|
||||
|
||||
<para>現在你的工作目錄中有了完整 FreeBSD 專案在它們的儲存庫中使用的命令稿
|
||||
的複本,以下是每個檔案簡單的介紹。</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><filename>access</filename> - 此檔案在預設的安裝中沒有被用到。
|
||||
這是使用在<link linkend="freebsdspecific">FreeBSD 的特殊設定</link>中
|
||||
,用來控制儲存庫的存取。如果你不希望使用這個設定的話你可以刪除這個檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>avail</filename> - 此檔案控制儲存庫的存取。在此檔案中
|
||||
你可以指定允許存取儲存庫的群組,也可以拒絕在哪些目錄中提交。你應該
|
||||
調整為在你的儲存庫中將包含的群組和目錄。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>cfg.pm</filename> - 此檔案說明了設定內容,並提供預設的設定。
|
||||
你<emphasis>不</emphasis>該修改此檔案,而該將修改的設定放到
|
||||
<filename>cfg_local.pm</filename>。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>cfg_local.pm</filename> - 此檔案包含所有的系統設定值
|
||||
。你應該設定所有列在此的設定,例如提交的郵件要寄到哪、在哪些主機上
|
||||
的使用者可以提交等等。更多的相關資訊在稍後會提到。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>checkoutlist</filename> - 此檔案列出所有在
|
||||
<application>CVS</application> 控制下此目錄中的檔案,除了標準在
|
||||
<literal>cvs init</literal> 建立出的檔案。你可以刪除某些不需要的
|
||||
FreeBSD 特殊的檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>commit_prep.pl</filename> - 此命令稿執行各種提交前的檢查,
|
||||
基於你是否在 <filename>cfg_local.pm</filename> 中啟用。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>commitcheck</filename> - 此命令稿會直接影響
|
||||
<application>CVS</application>。首先它會使用
|
||||
<filename>cvs_acls.pl</filename> 來檢查提交者是否可以存取指定的原始碼樹,
|
||||
然後執行 <filename>commit_prep.pl</filename> 來確認各種提交前的檢查。
|
||||
如果一切正常,<application>CVS</application> 將允許此次提交繼續執行。
|
||||
你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>commitinfo</filename> - 此檔案是
|
||||
<application>CVS</application> 用來定義在提交前所要執行的程式—在
|
||||
此例中是 <filename>commitcheck</filename>。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>config</filename> - 儲存庫的設定選項。你可以修改為你
|
||||
想要的,但大多數的管理者可能會保留預設值。更多關於可以在此設定的選項
|
||||
資訊可以查閱 <application>CVS</application> 手冊。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>cvs_acls.pl</filename> - 此命令稿定義提交者的身分,以
|
||||
及他/她是否允許存取原始碼樹,它是基於 <filename>avail</filename> 中
|
||||
的設定。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>cvsignore</filename> - 此檔案列出哪些檔案
|
||||
<application>CVS</application> 不用處理到儲存庫中,你可以修改成你想
|
||||
要的。更多關於可以此檔案的說明可以查閱 <application>CVS</application>
|
||||
手冊。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>cvswrappers</filename> - 此檔案是
|
||||
<application>CVS</application> 用來啟用或停用關鍵字展開,或者是否檔
|
||||
案該被視為二進位檔。你可以修改成你想要的。更多關於可以此檔案的說明
|
||||
可以查閱 <application>CVS</application> 手冊。注意 <literal>-t</literal>
|
||||
和 <literal>-f</literal> 選項在 <application>CVS</application>
|
||||
client/server 並不能夠正確的運作。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>edithook</filename> - 此檔案已經沒有在使用了,留著只
|
||||
是為了某些有意義的原因。你可以安全地刪除此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>editinfo</filename> - <application>CVS</application>
|
||||
使用這個檔案來強迫你使用特定的編輯器。FreeBSD 沒有使用這個功能,因
|
||||
為輸入日誌訊息已經由 <filename>verifymsg</filename> 和
|
||||
<filename>logcheck</filename> 來完成。這是因為
|
||||
<filename>editinfo</filename> 功能在從遠端提交或是使用
|
||||
<literal>-m</literal> 或 <literal>-F</literal> 選項時不會執行。你不
|
||||
該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>exclude</filename> - 此檔案列出被
|
||||
<filename>commit_prep.pl</filename> 定義不能包含修正版標頭的檔案。
|
||||
在 FreeBSD 版本的設定中,所有在修正版控制下的檔案需有一個修正版標頭
|
||||
,(像是 $FreeBSD$)。在此檔案中所有符合一行一個的檔
|
||||
案名稱將不會被檢查。你可以在此檔案中為不需要修正版標頭的檔案新增一
|
||||
個正規運算式。為了安裝這些命令稿,最好的方法是排除
|
||||
<filename>CVSROOT/</filename> 會受到標頭的檢查。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>log_accum.pl</filename> - 此命令稿會處理由
|
||||
<filename>logcheck</filename> 所提供的日誌訊息,並且將之為備份目的
|
||||
附加於儲存庫中的記錄檔案。同時也執行要將郵件寄到你提供的信箱中的程
|
||||
式(在 <filename>cfg_local.pm</filename> 中)。它和
|
||||
<application>CVS</application> 之間是由 <filename>loginfo</filename>
|
||||
負責溝通。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>logcheck</filename> - 此檔案分析提交者提供的日誌訊息
|
||||
,並試圖對其作清理動作。它和 <application>CVS</application> 之間是
|
||||
由 <filename>verifymsg</filename> 負責溝通。你不該更動此檔案。</para>
|
||||
|
||||
<note><para>此命令稿依附於本地的 FreeBSD <application>CVS</application>
|
||||
處理:FreeBSD 版本在此命令稿修改過後才讀取日誌訊息;標準的
|
||||
<application>CVS</application> 版本雖然能夠檢查語法上是否正確,但並
|
||||
不會清理日誌訊息。<application>CVS</application> 1.11.2 可以透過在
|
||||
<filename>config</filename> 設定 <literal>RereadLogAfterVerify=always</literal>
|
||||
來和 FreeBSD 版本有相同的作用。</para></note>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>loginfo</filename> - 此檔案是
|
||||
<application>CVS</application> 用來控制日誌訊息要寄到哪裡,而
|
||||
<filename>log_accum.pl</filename> 負責處理。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>modules</filename> - 此檔案保留了
|
||||
<application>CVS</application> 原始的意義。你應該刪除新增的 FreeBSD
|
||||
模組,並修改為你想要的內容。更多關於可以此檔案的說明可以查閱
|
||||
<application>CVS</application> 手冊。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>notify</filename> - 此檔案為
|
||||
<application>CVS</application> 用來控制監看某個檔案。在 FreeBSD 的
|
||||
儲存庫中沒有使用到此檔案,你可以修改成你想要的。更多關於可以此檔案
|
||||
的說明可以查閱 <application>CVS</application> 手冊。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>options</filename> - 此檔案僅限使用於 FreeBSD 和 Debian
|
||||
的 <application>CVS</application> 版本。它包含了需要在修正版標頭中
|
||||
展開的關鍵字。你可以修改為符合你指定在 <filename>cfg_local.pm</filename>
|
||||
的關鍵字。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>rcsinfo</filename> - 此檔案定義提交時儲存庫所要使用的
|
||||
日誌訊息樣式範本,如 <filename>rcstemplate</filename>。FreeBSD 預設
|
||||
為所有的儲存庫使用同一個樣式範本,你可以加入其他你想要的。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>rcstemplate</filename> - 此檔案是提交者在提交時會看到
|
||||
的日誌訊息樣式範本,你應該修改為你定義在 <filename>cfg_local.pm</filename>
|
||||
的各種參數。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>tagcheck</filename> - 此檔案控制在儲存庫中貼上標籤的
|
||||
存取。標準的 FreeBSD 版本拒絕名為 RELENG* 的標籤,因為這是 release
|
||||
engineering 的工作。你可以根據需要來修改此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>taginfo</filename> - 此檔案控制執行在儲存庫中貼上標籤
|
||||
的存取的命令稿,如 <filename>tagcheck</filename>。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>unwrap</filename> - 此命令稿可以用來在匯出時自動<quote>解開</quote>
|
||||
二進位檔(請見 <filename>cvswrappers</filename>)。現在 FreeBSD 並
|
||||
沒有使用此設定,因為此功能在遠端提交時並不是執行的非常完善。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>verifymsg</filename> - 此檔案用來執行和日誌訊息相關的
|
||||
命令稿,如 <filename>logcheck</filename>。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>wrap</filename> - 此命令稿可以用來在提交時自動<quote>包裹</quote>
|
||||
二進位檔(請見 <filename>cvswrappers</filename>)。現在 FreeBSD 並
|
||||
沒有使用此設定,因為此功能在遠端提交時並不是執行的非常完善。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>自訂命令稿</title>
|
||||
|
||||
<para>接下來的步驟要設定這些命令稿使得它們可以在你的環境中運作。你應該檢
|
||||
查所有在目錄中的檔案,並修改為符合你的設定。尤其,你會想要修改下列的檔案:</para>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>如果你不希望使用<link linkend="freebsdspecific">FreeBSD 的特殊設定</link>,
|
||||
你可以安全地刪除 <filename>access</filename>:</para>
|
||||
|
||||
<screen>&prompt.user; <userinput>cvs rm -f access</userinput></screen>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>編輯 <filename>avail</filename> 來包含你想控制存取的各種儲存庫
|
||||
目錄,請確定你有保留 <literal>avail||CVSROOT</literal> 這一行,否則
|
||||
你將會在下一步把你自己鎖在外面。</para>
|
||||
|
||||
<para>另外你可以在此檔案中新增開發者的群組,FreeBSD 預設使用
|
||||
<filename>access</filename> 來列出所有的開發者,但你可以使用任何你
|
||||
想要用的檔案。如果你想的話也可以新增群組(請使用指定在
|
||||
<filename>cvs_acls.pl</filename> 上層裡的語法)。</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>編輯 <filename>cfg_local.pm</filename> 來包含你需要的選項。尤其
|
||||
你應該檢視一下下列的設定項目:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><literal>%TEMPLATE_HEADERS</literal> - 這是用來取得日誌訊
|
||||
息內容的程序,並加入將呈現的郵件項目和提供非空值的訊息。你可
|
||||
以刪除 <literal>PR</literal> 和 <literal>MFC after</literal>
|
||||
敘述,當然也可以加入你想要的。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><literal>$MAIL_BRANCH_HDR</literal> - 如果你想要在每一封
|
||||
提交的郵件中加入描述是在哪一個分支中提交的標頭,那麼請定義為
|
||||
符合你的設定。如果你不想使用這樣的標頭,那麼請設定為空值。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><literal>@COMMIT_HOSTS</literal> - 定義使用者能夠提交的主機。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><literal>$MAILADDRS</literal> - 設定應該收到提交郵件的郵
|
||||
件位址。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><literal>@LOG_FILE_MAP</literal> - 以你所需要的來修改這個
|
||||
陣列,每個設定值應該符合被提交的目錄,而提交的日誌訊息會以
|
||||
<filename>commitlogs</filename> 的名稱儲存在每個被設定的目錄下。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><literal>$COMMITCHECK_EXTRA</literal> - 如果你不想使用
|
||||
<link linkend="freebsdspecific">FreeBSD 特殊的存取控制</link>
|
||||
功能,你可以在此檔案中刪除對 <literal>$COMMITCHECK_EXTRA</literal>
|
||||
的定義。</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<note><para>修改 <literal>$IDHEADER</literal> 的功能只有在 FreeBSD
|
||||
平台上可以運作,它是相依在 FreeBSD 的特殊 <application>CVS</application>
|
||||
設定上。</para></note>
|
||||
|
||||
<para>你可以檢查 <filename>cfg.pm</filename> 是否有其他的參數可以修改
|
||||
,但是修改最好是有原因的。</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>刪除 <filename>exclude</filename> 中關於FreeBSD 的特殊設定的敘
|
||||
述(如以 <literal>^ports/</literal> 為開頭的每一行等)。此外,註解
|
||||
掉以 <literal>^CVSROOT/</literal> 為開頭的行列,然後新增一行只有
|
||||
<literal>^CVSROOT/</literal>。等到關鍵字展開的命令稿安裝好後,你可
|
||||
以在 <filename>CVSROOT</filename> 目錄中的檔案裡加上標頭,然後再恢
|
||||
復剛剛註解的行列,但在你還沒有提交前則只保持這樣。</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>編輯 <filename>modules</filename>,並刪除所有 FreeBSD 的群組。
|
||||
加入你需要的模組。</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<note><para>此步驟只有在你於 <filename>cfg_local.pm</filename> 中指定
|
||||
了 <literal>$IDHEADER</literal> 才有必要設定(只有在 FreeBSD 的特殊
|
||||
<application>CVS</application> 設定上才能夠執行)。</para></note>
|
||||
|
||||
<para>編輯 <filename>options</filename> 以符合你在
|
||||
<filename>cfg_local.pm</filename> 中設定的標籤名稱。並在所有的檔案
|
||||
中搜尋 <literal>FreeBSD</literal> 並替換為你設定的標籤名稱。</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>修改 <filename>rcstemplate</filename> 為和在
|
||||
<filename>cfg_local.pm</filename> 中相同的設定。</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>選擇性的刪除在 <filename>tagcheck</filename> 中針對 FreeBSD 檢
|
||||
查的設定。你可以僅僅在檔案的最上層加上 <literal>exit 0</literal> 來
|
||||
取消所有標籤的檢查。</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>在你完成前的最後一件事是確認 commitlogs 可以正確儲存。預設會儲
|
||||
存在儲存庫中的 <filename>commitlogs</filename> 子目錄中,而這個目錄
|
||||
需要先建立:</para>
|
||||
|
||||
<screen>&prompt.user; <userinput>mkdir commitlogs</userinput>
|
||||
&prompt.user; <userinput>cvs add commitlogs</userinput></screen>
|
||||
</step>
|
||||
</procedure>
|
||||
|
||||
<para>現在,在細心的檢視過後,你可以提交你的修改了。確定你先前有在
|
||||
<filename>avail</filename> 中允許你自己存取 <filename>CVSROOT</filename>
|
||||
目錄,因為如果沒有這樣做的話你會把你自己鎖在外面。完整確認過後請執行下
|
||||
列命令:</para>
|
||||
|
||||
<screen>&prompt.user; <userinput>cvs commit -m '<replaceable>- Initial FreeBSD scripts commit</replaceable>'</userinput></screen>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>測試設定</title>
|
||||
|
||||
<para>你已經準備好做基本的測試了:強制提交 <filename>avail</filename>
|
||||
以確認每件事都如預期的運作。</para>
|
||||
|
||||
<screen>&prompt.user; <userinput>cvs commit -f -m '<replaceable>Forced commit to test the new CVSROOT scripts</replaceable>' avail</userinput></screen>
|
||||
|
||||
<para>如果一切正常,那麼恭喜了!你現在已經為你的儲存庫建立好 FreeBSD 的命
|
||||
令稿了。如果 <application>CVS</application> 仍然有警告什麼,回頭檢視上
|
||||
述的步驟是否有正確的執行。</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="freebsdspecific">
|
||||
<title>FreeBSD 的特殊設定</title>
|
||||
|
||||
<para>FreeBSD 專案自己使用一個有點不同的設定,那就是同時也使用 FreeBSD
|
||||
<filename>CVSROOT</filename> 中的 <filename>freebsd</filename> 子目錄。因
|
||||
為大量的提交者必須在相同的群組中,因此專案寫了一個簡單的 wrapper 來確認提
|
||||
交者可以正確的提交,並設定儲存庫的群組名稱。</para>
|
||||
|
||||
<para>如果你的儲存庫也需要這樣的功能,那麼下面就會介紹如何建立,不過首先要
|
||||
先來看一段複雜的概述。</para>
|
||||
|
||||
<sect2>
|
||||
<title>FreeBSD 設定中使用的檔案</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><filename>access</filename> - 此檔案用來控制儲存庫的存取。你
|
||||
應該編輯並加入所有在專案中的成員。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>freebsd/commitmail.pl</filename> - 此檔案已經沒有在
|
||||
使用了,留著只是為了某些有意義的原因。你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>freebsd/cvswrap.c</filename> - 此 CVS wrapper 原始
|
||||
碼是用來建立檢查所有存取的工作。更多的訊息在稍後會提出。你應該編
|
||||
輯 <literal>ACCESS</literal> 和 <literal>REALCVS</literal> 的路徑
|
||||
以符合你的設定。</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>freebsd/mailsend.c</filename> - 此檔案是 FreeBSD 設
|
||||
定 mailing lists 需要的,你不該更動此檔案。</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>步驟</title>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>只有加入你的使用者名稱到 <filename>access</filename> 中。</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>編輯 <filename>cvswrap.c</filename> 的路徑以符合你的設定,定義
|
||||
在大寫的 <literal>ACCESS</literal> 中。同時如果預設值不符合你的情況
|
||||
的話也應該修改本地實際的 <command>cvs</command> 程式所在位置。原始
|
||||
的 <filename>cvswrap.c</filename> 希望替代伺服端的 CVS 程式,例如可
|
||||
能會是 <filename>/usr/bin/ncvs</filename>。</para>
|
||||
|
||||
<para>我的 <filename>cvswrap.c</filename> 是這樣:</para>
|
||||
|
||||
<programlisting>#define ACCESS "/local/cvsroot/CVSROOT/access"
|
||||
#define REALCVS "/usr/bin/ncvs"</programlisting>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>接下來是建立 wrapper 來確認你在提交時是在正確的群組中。
|
||||
在你的 <filename>CVSROOT</filename> 中的
|
||||
<filename>cvswrap.c</filename> 要能夠使用。</para>
|
||||
|
||||
<para>在你完成編輯並加入正確的路徑後我們要來編譯原始碼:</para>
|
||||
|
||||
<screen>&prompt.user; <userinput>cc -o cvs cvswrap.c</userinput></screen>
|
||||
|
||||
<para>然後進行需要設定(此步驟需要 root 權限):</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>mv /usr/bin/cvs /usr/bin/ncvs</userinput>
|
||||
&prompt.root; <userinput>mv cvs /usr/bin/cvs</userinput>
|
||||
&prompt.root; <userinput>chown root:<replaceable>ncvs</replaceable> /usr/bin/cvs /usr/bin/ncvs</userinput>
|
||||
&prompt.root; <userinput>chmod o-rx /usr/bin/ncvs</userinput>
|
||||
&prompt.root; <userinput>chmod u-w,g+s /usr/bin/cvs</userinput></screen>
|
||||
|
||||
<para>這會將 wrapper 安裝成預設的 <command>cvs</command> 程式,請確定
|
||||
任何要使用儲存庫的人應該有正確的存取權限。</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>現在你可以刪除所有在儲存庫群組中的使用者,所有的存取控制會經由
|
||||
wrapper 完成,同時 wrapper 會設定存取的正確群組。</para>
|
||||
</step>
|
||||
</procedure>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>測試設定</title>
|
||||
|
||||
<para>你的 wrapper 現在應該已經安裝好了,你當然也可以強制提交
|
||||
<filename>access</filename> 來測試是否正常:</para>
|
||||
|
||||
<screen>&prompt.user; <userinput>cvs commit -f -m '<replaceable>Forced commit to test the new CVSROOT scripts</replaceable>' access</userinput></screen>
|
||||
|
||||
<para>同樣地,如果有錯誤,檢查是否上述所有步驟都有正確的執行。</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</article>
|
Loading…
Reference in a new issue