加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

CVS 版本控制环境配置指南

发布时间:2020-12-15 20:54:30 所属栏目:大数据 来源:网络整理
导读:CVS 版本控制环境配置指南 - 第二部分 CVS Configuration HOWTO CVS 版本控制环境配置指南 Stephen Suen Copyright ? 2005 Stephen Suen. All rights reserved. ? CVS ?是应用最为广泛的版本控制系统。有大量的有关如何使用? CVS ?的参考资料,也有很多关于?

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?访问工具:

?

  • ViewCVS

  • CVSweb

其中的?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 服务器。我们将使用大多数系统中预装的?Apache?HTTP 服务器作为我们的 Web 服务器。另外,还需要?GNU?的?RCS?工具,包括其中的?rlog(1)?和?rcsdiff(1)CVSweb?需要物理地存取资源库,任何外部访问方式或者基于密码认证的服务器访问方式都不适用。最后,CVSweb?还需要系统中安装有?CVS

除了基本的?CVSweb?工具外,你可能还需要以下两个常用的用于扩展?CVSweb?的第三方工具。尽管这些是可选的,没有它们,CVSweb?也可以毫无问题地正常工作。但我们极力推荐安装这些工具:

?

  • GNU?的?Enscript?—— 用于语法加亮

  • CvsGraph?—— 用于版本和分支的图形化展示

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?的安装包中。最终,在我们的示例中,将有以下文件需要安装:

?

  • IO-Tty-1.02.tar.gz

  • MIME-Base64-3.05.tar.gz

  • String-Ediff-0.06.tar.gz

  • IPC-Run-0.79.tar.gz

  • MIME-Types-1.15.tar.gz

  • URI-1.35.tar.gz

注意:?大多数模块的安装包中都包含?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?需要安装以下支持库才能使用:

?

  • zlib?通用数据压缩库。

  • libpng?PNG 参考实现库。

  • GD?图形库。

典型安装的?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?程序,构建过程将报告程序非法选项之类的错误而失败。所以,请先确保你的系统中安装有以下这些程序:

?

  • GNU?的?Flex

  • GNU?的?Bison

  • GNU?的?m4

以我们的?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 脚本的目录中。比如对于我们的?Solaris?10 中 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?所需的图标信息。典型的?Apache?HTTP 服务器环境中包含这些图标,并且无需修改这些配置。样式文件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?可以集成其它工具提供附加功能。为了使用这些可选功能,你需要:

?

  • GNU?的?Enscript?—— 用于语法加亮

  • CvsGraph?—— 用于版本和分支的图形化展示

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,0-596-00459-1,O'Reilly,?Essential CVS.

[Daniel-01]?Daniel J Barrett?和 Richard Silverman,2001,?SSH,The Secure Shell: The Definitive Guide

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读