CVS 版本控制环境配置指南
CVS 版本控制环境配置指南 - 第二部分CVS Configuration HOWTOCVS 版本控制环境配置指南Stephen SuenCopyright ? 2005 Stephen Suen. All rights reserved. ? CVS?是应用最为广泛的版本控制系统。有大量的有关如何使用?CVS?的参考资料,也有很多关于?CVS?的安装和配置的零散信息,并且如此多的开源团体在使用?CVS?作为他们的版本控制系统。但如何配置?CVS?环境,以满足多种访问方式以及访问控制需求,为用户提供安全可靠且便捷的版本控制服务,这方面的完整参考资料并不多见。本文则侧重这方面的内容,提供了关于?CVS?访问控制,访问方式以及常用第三方集成工具的详细信息。 本文的最新版本将发布在程序员咖啡馆网站上(建设中)。欢迎订阅我们的邮件组,以获得关于本文的正式发布及更新信息。全文在保证完整性,且保留全部版权声明(包括上述链接)的前提下可以在任意媒体转载——须保留此标注。 ?
? 本文的第一部分请见: http://spaces.msn.com/members/stephensuen/Blog/cns!1p1G_DGhjYiYGmj6keNZQAcw!202.entry ? ?章 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?模块可能没有预先安装,而需要用户自己手工安装: ?
作为 CGI 脚本程序,CVSweb?当然还需要一个可以运行 CGI 脚本的 Web 服务器。我们将使用大多数系统中预装的?Apache?HTTP 服务器作为我们的 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?中有符号链接,你需要确保在环境变量? $ 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?的安装包中。最终,在我们的示例中,将有以下文件需要安装: ?
安装?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?编译器。检查你的? # echo $PATH /usr/bin:/usr/ccs/bin:/usr/ucb:/usr/local/bin 检查测试的报告,如果测试成功,则说明你已经准备好可以安装该模块了。安装模块只需要在安装目录中执行下面这个命令: # make install 对于大多数操作系统而言,安装?Perl?模块需要?root?身份。
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?下载上述三个软件安装即可。构建前,要确保在你的? $ 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?目录(确保目标目录在? 至此,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?目录。编辑该脚本程序文件中的? 7.2.7. 配置 CVSWebCVSWeb 的配置文件需要适当修改,以最终完成安装过程。打开安装在配置文件目录中配置文件,首先检查? 变量? 现在,如果一切顺利,你应该已经可以访问?CVSweb?了。不过,我们将配置额外的集成工具,以提供附加的功能。 CvsGraph?用于图形化展示显示文件的版本和分支信息。变量? Enscript?用于语法加亮,通常只需要留意变量? 至此,我们已经完成了?CVSweb?的基本配置。再次访问?CVSweb,你将发现资源库文件列表中的每个文件名的左侧多了一个图标,点击该图标,将显示该文件的图形化版本和分支信息。如果,你的资源库中有源程序,比如 C 或者 Java 源程序,你可以浏览并显示这些源程序的内容,此时应该是语法加亮的。 章 8. ViewCVS
ViewCVS?和我们已经介绍的?CVSweb?一样,提供对资源库的 Web 访问支持。不过?ViewCVS?是基于?Python?编写的。基本上可以在这两个工具之间自由选择,通常没有必要同时安装这两个工具。不过,因为 Perl 语言本身可读性较差,这使得基于 Perl 的项目,比如?CVSweb?被认为将越来越难于维护。因此,现在很多用户基于这个原因而使用?ViewCVS。当然,最好还是基于自身的实际使用经验决定你最终使用哪个工具为你的?CVS?用户提供服务。 8.1. 需求使用?ViewCVS?访问?CVS?资源库,你需要: ?
尽管?ViewCVS?支持以独立的服务器模式运行,而无需第三方的 Web 服务器支持,我们推荐使用?Apache HTTP 服务器?或者其它可以运行 CGI 脚本的 Web 服务器。我们的介绍将是基于 Apache HTTP 服务器的。 另外,ViewCVS?可以集成其它工具提供附加功能。为了使用这些可选功能,你需要: ?
8.2. 安装ViewCVS?的安装过程相对?CVSweb?来说稍微简单一些,这主要是因为安装额外软件模块的过程稍微简单了一些。对于已经介绍过的软件安装过程,这里不再赘述,请参考相应的说明。 8.2.1. 安装 PythonPython?是一种解释型的交互式面相对象编程语言。对于?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 和 DiffutilsViewCVS?需要?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
8.2.4. 配置 ViewCVS安装?ViewCVS?之后,就需要对其进行相应的配置,并将相应的 CGI 脚本程序安装到 Web 服务器中。 ViewCVS?的配置文件为?VIEWCVS_INSTALLATION_DIRECTORY/viewcvs.conf。其中?VIEWCVS_INSTALLATION_DIRECTORY?为安装目录。配置文件中包含对各个选项的详细说明。典型的情况下,需要修改以下这些选项: ?
选项?cvs_roots?同于指定允许用户访问的每个?CVS?资源库的路径,并同时赋予它们一个名称。每个资源库由?name: path?指定;多个资源库由逗号分隔(可以分行)。选项?default_root?用于指定默认的资源库,即用户访问?ViewCVS?将首先显示的资源库的名称。这里的名称即选项?cvs_roots?中定义的资源库对应的名称。如果没有指定该选项,则?ViewCVS?将首先显示一个资源库的列表。 ViewCVS?还有一个指定资源库的方式可能对某些用户非常有吸引力。选项?root_parents?用于指定一组目录,其中每一个目录中都可以有任意多个资源库实例。该选项使得用户不必每次增加一个资源库实例,就在选项?cvs_roots?中增加一项。只要这些资源库实例在同一父目录下,选项?roots_parents?中的一项记录就可以达到同样的目的了。当然,由于这种“自动“的方式将以目录名称作为资源库的名称,同时指定上述两个选项时,或者指定多个资源库父目录时,要小心处理名称冲突的问题。
指定了资源库之后,需要告诉?ViewCVS?在哪里可以找到?RCS?工具。修改?rcs_path?选项,指向安装?RCS?工具的目录。如果?ViewCVS?没有找到所需的RCS?工具,在浏览资源库中的文件时,将报告类似下面这样的错误:
正确配置了以上选项之后通常就可以了。另外几个常用的选项你可能也希望现在修改,包括?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中,修改以下几个选项: ?
修改配置文件之后,在重新浏览我们的资源库,看看有什么变化。你会看到在资源库的目录文件列表中,每个文件名称前面多了一个图标。点击该图标,就可以看到?CvsGraph?的输出结果。此外,如果你的资源库中保存有源程序时,比如 C 或者 Java 的源程序,查看它们的内容时,将可以发现它们都是语法加亮的,这正是?Enscript?的功劳。
参考文献[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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |