CVS 版本控制环境配置指南 - 第二部分
CVS Configuration HOWTO
CVS 版本控制环境配置指南
Stephen Suen
Copyright © 2005 Stephen Suen. All rights reserved.
CVS是应用最为广泛的版本控制系统。有大量的有关如何使用CVS的参考资料,也有很多关于CVS的安装和配置的零散信息,并且如此多的开源团体在使用CVS作为他们的版本控制系统。但如何配置CVS环境,以满足多种访问方式以及访问控制需求,为用户提供安全可靠且便捷的版本控制服务,这方面的完整参考资料并不多见。本文则侧重这方面的内容,提供了关于CVS访问控制,访问方式以及常用第三方集成工具的详细信息。
本文的最新版本将发布在程序员咖啡馆网站上(建设中)。欢迎订阅我们的邮件组,以获得关于本文的正式发布及更新信息。全文在保证完整性,且保留全部版权声明(包括上述链接)的前提下可以在任意媒体转载——须保留此标注。
-
目录
前言
-
-
1. 关于本文
2. 读者对象
3. 关于范例
1. 概述
2. 安装
-
-
2.1. 从源代码安装
2.2. 从二进制安装(仅对 Solaris 用户)
3. 资源库
-
-
3.1. 创建资源库
3.2. 文件系统权限
-
-
3.2.1. 资源库所有者
3.2.2. 资源库根目录权限
3.2.3. 管理目录权限
3.2.4. 项目目录权限
4. 资源库访问方式
-
-
-
4.1. 资源库名称
4.2. 本地访问方式
5. 通过 SSH 访问
-
-
5.1. SSH 简介
5.2. SSH 服务器
5.3. 从 Unix 客户端访问 CVS
-
-
5.3.1. 公共密钥认证
6. 基于密码认证的服务器
-
-
-
6.1. 设置基于密码认证的服务器
6.2. 密码文件
6.3. 只读资源库访问
6.4. 匿名访问
7. CVSWeb
-
-
7.1. 需求
7.2. 安装
-
-
7.2.1. 安装 Perl(仅对 Solaris 用户)
7.2.2. 安装 Perl 模块
7.2.3. 安装 RCS 工具
7.2.4. 安装 CvsGraph(可选)
7.2.5. 安装 Enscript(可选)
7.2.6. 安装 CVSWeb
7.2.7. 配置 CVSWeb
8. ViewCVS
-
-
-
8.1. 需求
8.2. 安装
-
-
8.2.1. 安装 Python
8.2.2. 安装 RCS 和 Diffutils
8.2.3. 安装 ViewCVS
8.2.4. 配置 ViewCVS
参考文献
-
本文的第一部分请见:
http://spaces.msn.com/members/stephensuen/Blog/cns!1p1G_DGhjYiYGmj6keNZQAcw!202.entry
章 7. CVSWeb
-
目录
7.1. 需求
7.2. 安装
-
-
7.2.1. 安装 Perl(仅对 Solaris 用户)
7.2.2. 安装 Perl 模块
7.2.3. 安装 RCS 工具
7.2.4. 安装 CvsGraph(可选)
7.2.5. 安装 Enscript(可选)
7.2.6. 安装 CVSWeb
7.2.7. 配置 CVSWeb
对于只想浏览一下资源库的内容,或者偶然地下载几个资源库中的文件的用户而言,最理想的途经莫过于通过 Web 访问CVS的资源库了。CVS本身并没有提供这样的支持,不过我们可以利用第三方的工具来为用户提供这样的访问支持。以下为最常见的两个基于 Web 的CVS访问工具:
其中的CVSweb源于FreeBSD项目,并很快成为非常流行的CVS资源库的 Web 访问工具。它本身实际上是一个基于Perl编写的软件,以 CGI 脚本的形式,配置在 Web 服务器中,提供对CVS资源库的 Web 访问支持。我们将首先介绍CVSweb的需求,以及如何安装和配置这个工具。在之后的章节中我们将介绍另一个同类工具,即ViewCVS。
7.1. 需求
CVSweb是基于Perl编写的 CGI 脚本程序,在服务器上需要安装有Perl 5.6.0或其更新版本。此外,以下CVSweb所需的Perl模块可能没有预先安装,而需要用户自己手工安装:
-
File::Temp
-
IPC::Run
-
MIME::Types
-
String::Ediff
-
URI
作为 CGI 脚本程序,CVSweb当然还需要一个可以运行 CGI 脚本的 Web 服务器。我们将使用大多数系统中预装的ApacheHTTP 服务器作为我们的 Web 服务器。另外,还需要GNU的RCS工具,包括其中的rlog(1)和rcsdiff(1)。CVSweb需要物理地存取资源库,任何外部访问方式或者基于密码认证的服务器访问方式都不适用。最后,CVSweb还需要系统中安装有CVS。
除了基本的CVSweb工具外,你可能还需要以下两个常用的用于扩展CVSweb的第三方工具。尽管这些是可选的,没有它们,CVSweb也可以毫无问题地正常工作。但我们极力推荐安装这些工具:
7.2. 安装
在这一节,我们将首先分别介绍如何安装作为CVSweb先决条件的软件和工具,然后介绍如何安装和配置CVSweb以及如何配置扩展的第三方工具。你的系统中有可能已经安装有我们所需的一些软件,请根据本文提供的信息,仔细检查你的系统。
7.2.1. 安装 Perl(仅对 Solaris 用户)
Perl通常都预装在你的系统中,一般情况下,你只需要跳到下一节,按照说明安装所需的额外模块即可。不幸的是,对于Solaris用户而言,由于安装Perl的额外模块需要编译器,预装在Solaris中的Perl需要Sun的Forte中的编译器才能安装新的模块,而这个编译器不是免费的。这意味着你的Solaris很可能没有所需的编译器,也就无法方便地安装后面的模块。解决这个问题的最简单办法是,从www.sunfreeware.com下载并安装一个最新的Perl,这个Perl可以利用GNU的GCC编译器安装模块,而且通常比预装的Perl的版本更新。以下的安装过程只适用于Solaris系统的用户。
根据你的平台类型以及相应的Solaris版本下载对应的安装包。解压后,通过pkgadd(1M)进行安装。通常Sunfreeware提供的软件都将被安装在目录/usr/local中。参见下面的示例:
# gunzip perl-5.8.5-sol10-sparc-local.gz # pkgadd -d perl-5.8.5-sol10-sparc-local
接着,按照命令行的提示完成安装过程。当安装结束时,应该看到类似下面的信息表明安装成功:
Installation of <SMCperl> was successful.
Perl的程序文件安装在了/usr/local/bin目录中。因为Solaris预装的Perl在目录/usr/bin中有符号链接,你需要确保在环境变量$PATH
中,安装目录的位置在/usr/bin之前。不过,重新创建一个符号链接指向新的Perl安装是我个人喜欢的方案:
$ which perl /usr/bin/perl $ ls -l /usr/bin/perl lrwxrwxrwx 1 root other 19 May 18 12:09 /usr/bin/perl -> /usr/loca l/bin/perl
7.2.2. 安装 Perl 模块
在安装需要的Perl模块之前,应该首先检查你的Perl的安装,看看是否已经安装了这些模块。当然,首先我们需要知道模块都安装在哪里。Perl的解释器有一个搜索模块的目录列表。在Perl程序中,这个列表包含在全局数组@INC中(你完全不必理解这句话也可以继续下面的安装)。通过下面的方法可以检查@INC的内容:
$ perl -V ... @INC: /usr/local/lib/perl5/5.8.5/sun4-solaris /usr/local/lib/perl5/5.8.5 /usr/local/lib/perl5/site_perl/5.8.5/sun4-solaris /usr/local/lib/perl5/site_perl/5.8.5 /usr/local/lib/perl5/site_perl $
所有的模块文件都以模块名字加上.pm扩展名保存在该目录中。特别的,对于File::Temp这样的模块,File表示包(Package)。模块File::Temp相应地保存在库中的File/子目录下,所以文件File/Temp.pm表明该模块已经安装:
$ find /usr/local/lib/perl5 -name "Temp.pm" /usr/local/lib/perl5/5.8.5/File/Temp.pm
如果发现上述模块没有安装,可以从www.cpan.org(Comprehensive Perl Archive Network)浏览并下载所需的模块。在CPAN上,大多数模块都以 tar 压缩包的形式保存,以.tar.gz作为扩展名,并根据模块的包结构组织在相应的子目录中。根据模块名称,找到相应的安装包并下载到本地。需要注意的是,模块URI依赖于模块MIME::Base64;而模块IPC::Run测试过程如果发现模块IO:Pty没有安装也会报错。所以,如果你的Perl中缺少这两个模块,请一并下载并先安装这两个模块。这里有一点特别的是,模块IO:Pty包含在模块IO:Tty的安装包中。最终,在我们的示例中,将有以下文件需要安装:
注意:大多数模块的安装包中都包含README文件,在安装模块前请先阅读这些文件,了解是否需要特殊的安装过程,或者需要安装其它作为前置条件的模块。
安装Perl模块的过程基本上都是以下三步:
-
解压缩并展开安装包
-
构建模块
-
安装模块
下面仅以模块IO::Tty为例,简要说明安装过程。首先,解压缩并展开下载下来的安装包:
# gzip -dc IO-Tty-1.02.tar.gz | tar xf - # cd IO-Tty-1.02
然后在该安装目录中构建模块。构建过程需要执行下面三个命令:
perl Makefile.PL make make test
其中Makefile.PL是一个Perl脚本程序,用于创建Makefile构建文件。命令make则具体构建模块, 而make test则进行安装前的测试。构建过程同样需要 C 编译器,所以,构建前确保你具有可用的编译环境。我们使用的是GNU的GCC编译器。检查你的$PATH
是否包含编译所需的程序路径。就我们的Solaris环境而言,参考下面的示例:
# echo $PATH /usr/bin:/usr/ccs/bin:/usr/ucb:/usr/local/bin
检查测试的报告,如果测试成功,则说明你已经准备好可以安装该模块了。安装模块只需要在安装目录中执行下面这个命令:
# make install
对于大多数操作系统而言,安装Perl模块需要root身份。
注意:在模块IPC::Run的安装过程中,命令make test有时会报告类似如下的错误:
# make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/adopt............ok 29/29 skipped: adopt not done yet t/binmode..........ok t/bogus............ok t/filter...........ok t/harness..........ok t/io...............ok t/kill_kill........ok t/parallel.........ok t/pty..............ok t/pump.............ok t/run..............NOK 70# Test 70 got: "Resource temporarily unavailable: write ( 6, '...9760 /"x/" chars...DOC2/n' ) at /tmp/IPC-Run-0.79/blib/lib/IPC/Run/IO.p m line 547/n" (t/run.t at line 350) # Expected: "" # t/run.t line 350 is: ok $x, ""; t/run..............FAILED test 70 Failed 1/267 tests, 99.63% okay t/signal...........ok t/timeout..........ok t/timer............ok t/win32_compile....ok Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/run.t 267 1 0.37% 70 (1 subtest UNEXPECTEDLY SUCCEEDED), 29 subtests skipped. Failed 1/15 test scripts, 93.33% okay. 1/704 subtests failed, 99.86% okay. *** Error code 29 make: Fatal error: Command failed for target `test_dynamic'我并不明白为何会发生这样的错误。不过,忽略这个错误而直接安装模块并没有发现什么问题。
7.2.3. 安装 RCS 工具
在安装RCS工具之前,请先检查你的系统中是否已经安装了这些工具。CVSweb至少需要rlog(1)和rcsdiff(1)两个程序。限于篇幅,本节将仅以Solaris为例,说明如何安装RCS工具。通过这里给出的链接,应可以找到适合其它系统的安装所需的安装包或者源代码。
还是老样子,对Solaris用户而言,可以从Sunfreeware下载我们需要的安装包。RCS工具目前的版本是5.7。此外,RCS工具需要GNU的Diffutils工具包。主流操作系统中都预装了这些工具(包括cmp(1),diff(1),diff3(1)和sdiff(1)等),当然也可以从Sunfreeware下载安装,如果你的系统中还没有的话。
7.2.4. 安装 CvsGraph(可选)
CvsGraph可以用于为CVS资源库中的文件生成其所有版本和分支的图形化展现。这是一个可选组件,你完全可以安全的跳过这一节。尽管安装这个组件需要额外安装一系列的组件,不过,相信为你的CVS用户提供尽可能好的使用体验会让你觉得这些努力都是值得的。
CvsGraph需要安装以下支持库才能使用:
典型安装的Solaris中应该已经包含了zlib和libpng,分别对应于 SUNWzlib 和 SUNWpng 两个包。此外Solaris的 Companion CD 中还提供了对应于GD库的 SFWgd 安装包。因此,安装这些库之前,请先检查是否你的系统中已经安装了这些库。下面的例子说明了如何进行这种检查:
$ pkginfo SUNWzlib SUNWpng SFWgd system SFWgd gd - GD Graphics Library GNOME2 SUNWpng PNG - Portable Network Graphics library system SUNWzlib The Zip compression library
除了利用这些安装包之外,Sunfreeware 也提供了对应上述库的安装包。所有通过 Sunfreeware 安装包安装的软件默认情况下都安装在/usr/local目录中,并且包名都以SMC作为前缀。这就使得我们可以方便的检查系统中是否已经安装有所需的包:
$ pkginfo SMCzlib SMClpng SMCgd application SMCgd gd application SMClpng libpng application SMCzlib zlib
最后,当然你可以从这些库的官方网站下载源代码,在本地构建。不过,构建过程比较麻烦,而且非常容易出错。对于Solaris用户而言,最方便的方法当然是使用Solaris提供的包,因为Solaris的安装包工具极大地方便了软件的安装,维护以及卸载。
在安装了这些库之后,就可以开始安装CvsGraph了。因为这个软件的构建过程用到了一系列的GNU程序,尽管Solaris中也有这些程序对应的实现,但是它们对参数的支持和处理有所不同。如果你的操作系统环境中缺少这些GNU程序,构建过程将报告程序非法选项之类的错误而失败。所以,请先确保你的系统中安装有以下这些程序:
以我们的Solaris环境为例,从Sunfreeware下载上述三个软件安装即可。构建前,要确保在你的$PATH
环境变量中,路径/usr/local/bin出现在/usr/bin之前。下面的示例说明了安装之后的检查结果:
$ pkginfo SMCbison SMCflex SMCm4 application SMCbison bison application SMCflex flex application SMCm4 m4 $ which bison flex m4 /usr/local/bin/bison /usr/local/bin/flex /usr/local/bin/m4
构建CvsGraph的过程参见下面的示例:
gzip -dc cvsgraph-1.5.1.tar.gz | tar xf - cd cvsgraph-1.5.1 ./configure make
如果你的构建过程报告类似 GD 库没找到之类的错误,可以在执行configure命令时指出 GD 库的安装位置。如下面的示例:
$ ./configure --with-gd-inc=/opt/sfw/inlcude --with-gd-lib=/opt/sfw/lib
如果你不知道这些 GD 库文件的安装位置,可以通过命令pkgchk(1M)检查包的安装位置。以安装 SFWgd 包为例,参见下面的示例:
# pkgchk -l SFWgd
如果一切顺利,构建过程将生成程序文件cvsgraph。将这个文件复制到合适的位置,比如/usr/bin或者/usr/local/bin目录(确保目标目录在$PATH
环境变量中)。另外将安装目录中的CvsGraph配置文件cvsgraph.conf复制到适当位置,比如/etc或者/usr/local/etc中。
至此,CvsGraph已经安装就绪可以被CVSweb调用了。因为CvsGraph需要GD库,所以,你可能需要配置你的运行环境,以便CvsGraph可以找到运行所需的库。在Solaris中,可以通过crle(1)命令配置库环境。参见下面的示例:
# crle -l /lib:/usr/lib:/opt/sfw/lib
7.2.5. 安装 Enscript(可选)
Enscript用于将 ASCII 文件转换为 PostScript 并将结果保存在一个文件中或者直接发送到打印机。当然,我们所感兴趣的是这个软件的一个特性:语法加亮。在CVSweb中集成这个工具,可以在用户浏览并显示资源库中的源程序的内容时,提供语法加亮支持。
Enscript的安装过程相对比较简单。目前有两个选择,从 Companion CD 安装(包名为 SFWenscr),或者从http://people.ssh.com/mtr/genscript/下载该软件的源代码(当前版本为1.6.4)在本地构建。前者当然是强烈推荐的方法。如果选择从源代码构建,则解开下载的文件后,参考安装目录中的安装说明./INSTALL安装即可。以下是简要安装过程:
gzip -dc enscript-1.6.4.tar.gz | tar xf - cd enscript-1.6.4 ./configure make make check make install
至此,我们已经安装了全部所需的软件,可以开始真正安装和配置CVSweb了。
7.2.6. 安装 CVSWeb
从http://people.freebsd.org/~scop/cvsweb/下载最新的CVSweb版本,展开到适当的目录。在展开后的目录中,文件./INSTALL包含详细的安装信息。在继续下面的安装过程前,请仔细阅读该文件。
首先将文件cvsweb.conf复制到适当的配置文件目录中,典型的比如/usr/local/etc/cvsweb/cvsweb.conf。然后将文件cvsweb.cgi复制到 Web 服务器运行 CGI 脚本的目录中。比如对于我们的Solaris10 中 Apache Web 服务器而言,为/var/apache/cgi-bin目录。编辑该脚本程序文件中的$config
变量(搜索“Configuration Area”可以找到该变量),使其指向你的配置文件。如果你的Perl不在标准的/usr/bin目录中,还需要修改该脚本程序的第一行。最后,将文件css/cvsweb.css复制到你的 Web 服务器目录中(比如/var/apache/htdocs/css目录)。
7.2.7. 配置 CVSWeb
CVSWeb 的配置文件需要适当修改,以最终完成安装过程。打开安装在配置文件目录中配置文件,首先检查@command_path
变量是否包含了我们之前安装的诸多工具所在的路径。然后是最重要的@CVSrepositories
变量。你不必熟悉Perl的语法,根据配置文件给出的例子的格式,定义你自己的所有资源库的实例应该不成问题。我们没有定义$cvstreedefault
变量的值,所以刚刚定义的资源库实例的列表中的第一项将作为默认的资源库实例。用户浏览资源库时,将默认首先显示该资源库的内容。
变量$iconsdir
和%ICONS
用于配置CVSweb所需的图标信息。典型的ApacheHTTP 服务器环境中包含这些图标,并且无需修改这些配置。样式文件cvsweb.ccs用于CVSweb,修改$cssurl
变量指向该文件的实际安装位置即可。
现在,如果一切顺利,你应该已经可以访问CVSweb了。不过,我们将配置额外的集成工具,以提供附加的功能。
CvsGraph用于图形化展示显示文件的版本和分支信息。变量$allow_cvsgraph
和$cvsgraph_config
用于配置该工具。只要正确配置@command_path
变量,则无需修改默认的$allow_cvsgraph
变量。如果没有指定$cvsgraph_config
变量,则将使用CvsGraph的默认配置。
Enscript用于语法加亮,通常只需要留意变量$allow_enscript
的值即可。
至此,我们已经完成了CVSweb的基本配置。再次访问CVSweb,你将发现资源库文件列表中的每个文件名的左侧多了一个图标,点击该图标,将显示该文件的图形化版本和分支信息。如果,你的资源库中有源程序,比如 C 或者 Java 源程序,你可以浏览并显示这些源程序的内容,此时应该是语法加亮的。
章 8. ViewCVS
-
目录
8.1. 需求
8.2. 安装
-
-
8.2.1. 安装 Python
8.2.2. 安装 RCS 和 Diffutils
8.2.3. 安装 ViewCVS
8.2.4. 配置 ViewCVS
ViewCVS和我们已经介绍的CVSweb一样,提供对资源库的 Web 访问支持。不过ViewCVS是基于Python编写的。基本上可以在这两个工具之间自由选择,通常没有必要同时安装这两个工具。不过,因为 Perl 语言本身可读性较差,这使得基于 Perl 的项目,比如CVSweb被认为将越来越难于维护。因此,现在很多用户基于这个原因而使用ViewCVS。当然,最好还是基于自身的实际使用经验决定你最终使用哪个工具为你的CVS用户提供服务。
8.1. 需求
使用ViewCVS访问CVS资源库,你需要:
-
Python-1.5.2或其更新版本
-
RCS(Revision Control System)
-
GNU的Diffutils
-
对CVS资源库的只读物理访问
尽管ViewCVS支持以独立的服务器模式运行,而无需第三方的 Web 服务器支持,我们推荐使用Apache HTTP 服务器或者其它可以运行 CGI 脚本的 Web 服务器。我们的介绍将是基于 Apache HTTP 服务器的。
另外,ViewCVS可以集成其它工具提供附加功能。为了使用这些可选功能,你需要:
8.2. 安装
ViewCVS的安装过程相对CVSweb来说稍微简单一些,这主要是因为安装额外软件模块的过程稍微简单了一些。对于已经介绍过的软件安装过程,这里不再赘述,请参考相应的说明。
8.2.1. 安装 Python
Python是一种解释型的交互式面相对象编程语言。对于Solaris用户而言,安装Python比较简单:从Sunfreeware下载所需的安装包安装即可。安装Python之前,还需要安装GNU的ncurses。此外,如果你还没有安装GCC,则还需要安装GCC编译器或者libgcc共享库。参见Sunfreeware上关于Python安装包的说明。
安装的简要过程如下(假设系统中已经安装了GCC):
gzip -d ncurses-5.4-sol10-sparc-local.gz gzip -d python-2.3.3-sol10-sparc-local.gz pkgadd -d ncurses-5.4-sol10-sparc-local pkgadd -d python-2.3.3-sol10-sparc-local
8.2.2. 安装 RCS 和 Diffutils
ViewCVS需要RCS工具,至少需要其中的rlog(1),rcsdiff(1)和co(1)程序。此外,还需要安装GNU的Diffutils。关于这些工具的安装过程,在CVSweb的安装过程中已有说明,请参考 安装 RCS 工具。
8.2.3. 安装 ViewCVS
当前的ViewCVS的发布版本为0.9.3。你可以从官方网站直接下载这个版本,开始后面的安装过程。不过,由于我们将同时安装用于ViewCVS的集成工具,而其中某些工具的最新版本可能与ViewCVS的0.9.3不相适应。为此,我们将安装ViewCVS的最新开发版本,目前为1.0-dev版。
ViewCVS并没有提供可供直接下载的开发版本的压缩包。我们需要从它的CVS资源库中直接检出其最新版本程序。为此,你当然需要有适当的CVS客户端软件。假定我们用于检出的工作目录为/tmp/viewcvs,检出的方法如下:
# mkdir /tmp/viewcvs # cd /tmp/viewcvs # cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/viewcvs login Logging in to :pserver:anonymous@cvs.sourceforge.net:2401/cvsroot/viewcvs CVS password: # cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/viewcvs co -P viewcvs ... # cd viewcvs # ls CHANGES cvsgraph.conf.dist tests website CVS elemx tools windows INSTALL lib tparse www README standalone.py viewcvs-install TODO templates viewcvs.conf.dist #
在上面的例子中,登录CVS服务器时输入空的密码,即直接回车即可。在检出的文件./INSTALL中包含安装说明,安装前请仔细阅读该文件。
ViewCVS提供了脚本程序./viewcvs-install用于自动安装所需的文件。运行该脚本时,它将提示输入安装的根目录,默认为/usr/local/viewcvs-VERSION,其中VERSION为相应的ViewCVS版本,在我们的例子中为/usr/local/viewcvs-1.0-dev。安装过程将自动检查是否需要创建目标目录。除了程序文件外,如果安装程序检查到之前安装的文件,并且文件已经修改,将提示用户是否需要覆盖。因此,用户不必担心自己之前的文件,尤其是配置文件viewcvs.conf被覆盖。
安装后的结果如下面的例子所示:
# ls /usr/local/viewcvs-1.0-dev cvsdbadmin loginfo-handler svndbadmin www cvsgraph.conf make-database templates lib standalone.py viewcvs.conf
注意:ViewCVS的0.9.3版本的安装结果与此不大相同,比如用于 CGI 的脚本程序保存的位置就不同。请参考特定版本的安装说明文件。
8.2.4. 配置 ViewCVS
安装ViewCVS之后,就需要对其进行相应的配置,并将相应的 CGI 脚本程序安装到 Web 服务器中。
ViewCVS的配置文件为VIEWCVS_INSTALLATION_DIRECTORY/viewcvs.conf。其中VIEWCVS_INSTALLATION_DIRECTORY为安装目录。配置文件中包含对各个选项的详细说明。典型的情况下,需要修改以下这些选项:
-
cvs_roots——CVS资源库信息
-
default_root—— 默认的CVS资源库
-
rcs_path——RCS工具所在的路径
选项cvs_roots同于指定允许用户访问的每个CVS资源库的路径,并同时赋予它们一个名称。每个资源库由name: path指定;多个资源库由逗号分隔(可以分行)。选项default_root用于指定默认的资源库,即用户访问ViewCVS将首先显示的资源库的名称。这里的名称即选项cvs_roots中定义的资源库对应的名称。如果没有指定该选项,则ViewCVS将首先显示一个资源库的列表。
ViewCVS还有一个指定资源库的方式可能对某些用户非常有吸引力。选项root_parents用于指定一组目录,其中每一个目录中都可以有任意多个资源库实例。该选项使得用户不必每次增加一个资源库实例,就在选项cvs_roots中增加一项。只要这些资源库实例在同一父目录下,选项roots_parents中的一项记录就可以达到同样的目的了。当然,由于这种“自动“的方式将以目录名称作为资源库的名称,同时指定上述两个选项时,或者指定多个资源库父目录时,要小心处理名称冲突的问题。
提示:两个非常著名的开源组织Apache和SourceForge分别使用了上述两种指定资源库的方式。其中Apache本身作为其为数不是很多的项目的管理者,因此将不同的项目作为同一资源库实例之下的不同模块,以便集中管理。因此Apache只要通过选项cvs_roots指定自己的资源库即可。而SourceForge为数量巨大的自由项目提供平台,每个项目具有独立的资源库实例,分别由各个项目自己的管理者管理。对于这样的组织,维护资源库的列表是不可能的,因此root_parents更适合它的需要。
指定了资源库之后,需要告诉ViewCVS在哪里可以找到RCS工具。修改rcs_path选项,指向安装RCS工具的目录。如果ViewCVS没有找到所需的RCS工具,在浏览资源库中的文件时,将报告类似下面这样的错误:
Error: Rlog output ended early. Expected RCS file "<FILENAME>"
正确配置了以上选项之后通常就可以了。另外几个常用的选项你可能也希望现在修改,包括mime_types_file选项,hide_cvsroot选项和address选项。当然,还有很多其它选项,可以参考配置文件中相应的说明。
在配置其它集成工具,包括CvsGraph和Enscript之前,我们先安装ViewCVS的脚本,看看到现在为止的工作是否正确,以及此时的ViewCVS是什么样子。
ViewCVS的脚本程序安装在VIEWCVS_INSTALLATION_DIRECTORY/www/cgi/目录中。你可以在你的 Web 服务器执行 CGI 脚本的相应目录中建立到ViewCVS脚本的符号链接,当然,这需要将 Web 服务器配置为允许追随符号链接。更简单的方法是将这些脚本直接复制到 Web 服务器的 CGI 脚本目录中。ViewCVS的脚本中记录了ViewCVS的安装位置,因此不必担心这些脚本能否找到它们的配置文件及其它文件。现在,你可以通过浏览器访问刚刚安装的脚本,看看是否一切正常。接下来,我们将配置ViewCVS使用集成工具。
我们将使用的集成工具包括Enscript和CvsGraph。这些工具都不是必须的,但它们将提供非常吸引人的附加功能,所以我们建议典型的情况下,应该尽可能配置这些工具。尽管在之前我们安装这些工具看起来费了不少周折,好消息是配置这些工具要简单得多了。在ViewCVS的配置文件viewcvs.conf中,修改以下几个选项:
-
use_enscript—— 是否使用Enscript
-
enscript_path——Enscript所在的路径
-
use_cvsgraph—— 是否使用CvsGraph
-
cvsgraph_path——CvsGraph所在的路径
-
cvsgraph_conf——CvsGraph配置文件,通常接受默认值即可
修改配置文件之后,在重新浏览我们的资源库,看看有什么变化。你会看到在资源库的目录文件列表中,每个文件名称前面多了一个图标。点击该图标,就可以看到CvsGraph的输出结果。此外,如果你的资源库中保存有源程序时,比如 C 或者 Java 的源程序,查看它们的内容时,将可以发现它们都是语法加亮的,这正是Enscript的功劳。
注意:如果你安装的ViewCVS的版本是0.9.3,且安装的Enscript是较新的版本。则有可能二者不相匹配。此时,查看源程序内容时,ViewCVS将报告与Enscript有关的“Broken pipe”之类的错误。
参考文献
[Cederqvist-1.11.20]Per Cederqvist, 2005,Version Management with CVS, for CVS 1.11.20.
[Moshe-03]Moshe Bar和 Karl Fogel, 2003, 1-932111-81-6, Paraglyph Press, Inc.,Open Source Development with CVS, 3RD EDITION.
[Jennifer-03]Jennifer Vesperman, 2003, 0-596-00459-1, O'Reilly,Essential CVS.
[Daniel-01]Daniel J Barrett和 Richard Silverman, 2001, 0-596-00459-1, O'Reilly,SSH, The Secure Shell: The Definitive Guide