现在的位置: 首页 > 综合 > 正文

源码自动化管理系列一: Mercurial + Apache配置

2013年06月08日 ⁄ 综合 ⁄ 共 3381字 ⁄ 字号 评论关闭

    

      这段时间一直想配置一套自动化的源码管理服务器,包括:源码版本管理,持续集成,自动进行编译、单元测试、源码测试覆盖率统计,文档生成,基本的冒烟测试和测试目标的发布等等。

      基于当前工作,首先选择了Mercurial分布式版本管理工具,Apache Http服务器,Buildbot持续集成工具搭建源码管理服务器,自动编译、单元测试、源码覆盖率等放在后续过程中。

     本文主要简单介绍基于Apache实现Mercurial版本库的Http发布配置方法。

     一、Mercurial安装

            建议下载源码进行安装(源码包中会包含hgweb.cgi,稍后配置http时需要):

                  
http://mercurial.selenic.com/release/

                  
http://mercurial.selenic.com/wiki/Download

            当前最新稳定版为1.9,可以通过下面的方式安装:

                  
$ wget http://mercurial.selenic.com/release/mercurial-1.9.tar.gz

                  
$ tar -zxvf mercurial-1.9.tar.gz

mercurial-1.9

                  
$ make 
or
make all

                  
$ make install

            如果安装过程报错:

                  
python runrst hgmanpage  --halt warning \

                      --strip-elements-with-class htmlonly hg.1.txt hg.1
                   abort: couldn't generate documentation: docutils module is missing

           需要先安装docutils
                $ wget http://prdownloads.sourceforge.net/docutils/docutils-0.7.tar.gz?download
                   $ tar -zxf docutils-0.7.tar.gz
                   $ cd docutils-0.7
                   $ python setup.py install

            其它缺少模块的错误,请自行安装相应的模块。


           
$ make debuginstall                     # 测试安装情况

           如果出现以下错误:
                Checking username...
                no username supplied (see "hg help config")
                (specify a username in your .hgrc file)
               1 problems detected, please check your install!
           说明配置有问题,源码中contrib文件夹下提供了一个sample.hgrc,可以拷贝过来修改:

           找到这行:# username = xxx <xxxx @example.com>
           去掉前面的#号,修改名称为你自己的,然后保存退出。

         

            如果出现:No problems detected表示Mercurial可以使用了。

        
详细安装过程参照:http://mercurial.selenic.com/wiki/UnixInstall

  
二、Mercurial配置

        
Mercurial的使用方法本文不作介绍,请查阅其它文档。

        
1. 创建源码库:

            
$ cd /usr/local/generic_libraries/repo
          
          # 目录apache必须能够访问

            
$ hg init

            
$ cat .hg/hgrc

               
[ui]
                username = xxx<xxx@xxx.com>

                [web]
                contact = xxxx <xxx@xxx.com>                      
                description = general strings functions library      
                #name = repo # alias name                            

                allow_archive = gz, zip, bz2                             
                push_ssl = false                                            
                allow_push = *                                             

        
2. hgweb.cgi文件

            
在源码包中找到hgweb.cgi文件,拷贝到/usr/local/apache2/htdocs/hgweb/(其它目录也可以,注意访问权限,本文中使用此目录)   

             
修改hgweb.cgi文件:

                    
config = "hgweb.config"  # 当前目录下的hgweb.config文件

        
3. hgweb.config文件

             
创建hgweb.config文件,内容如下:

             
$ cat /usr/local/apache2/htdocs/hgweb/hgweb.config

               
[paths]
                repo = /usr/local/generic_libraries/repo                         
# 源码库位置

                   others
= /usr/local/generic_libraries/others_repo

       

  
三、Apache配置

        Apache安装本文不作介绍,请查阅相关文档。

        
ScriptAliasMatch ^/hg/(.*)  /usr/local/apache2/htdocs/hgweb/hgweb.cgi/$1

         <Directory /usr/local/apache2/htdocs/hgweb/>
              Options ExecCGI FollowSymLinks
              AllowOverride None
          </Directory>

        本文将cgi脚本放入apache安装目录,是为了httpd.conf的设置方便,配置过程中,存在的主要问题是hgweb.cgi和源码库的访问权限问题,这个需要自行设置。


         
启动/重启Apache,访问主页http://localhost/hg/,应该可以看到源码库了,通过hg
clone http://localhost/hg/repo也能够访问。

    

  
本文只是简单的配置过程,适合新手练习,开始考虑加入权限控制,后来发现apache没有包含相应的模块,而且也是apache的基本配置,作为练习,此处最后也没有加入。

抱歉!评论已关闭.