将 mercurial repo 链接到 Web 服务器

将 mercurial repo 链接到 Web 服务器

我有以下情况:

在同一台机器上,我有一个 mercurial 服务器和一个 web 服务器。项目存储库位于 /var/hg/repos/myproyect,web 服务器的公共文件位于 /usr/share/nginx/www

有什么方法可以将 repo 目录链接 (ln) 到公共路径服务器吗?当我这样做时

ln /var/hg/repos/myproject/.hg/store/data/ /ush/share/nginx/www/myproject

我在浏览器中输入http://iptoserver.com/myproject什么也没有显示

我注意到将数据存储在以 .i 扩展名结尾的 .hg 中

答案1

您几乎肯定应该设置 hgweb 来提供存储库而不是转储原始文件。

发布存储库HGWeb 逐步指南维基百科文章对此进行了深入介绍,但重点如下:

  1. 创建一个 hgweb.conf 文件(通常在/usr/local/etc/多租户环境中或依赖于虚拟主机的某些内容)。

    [paths]
    myproject = /var/hg/repos/myproject
    
    [web]
    allow_archive = gz
    contact = Some Name <[email protected]>
    
  2. 将 hgweb.cgi 文件从安装目录复制到 cgi-bin 目录。很有可能:(cp /usr/share/mercurial/www/hgweb.cgi /var/www/cgi-bin/无论如何您都明白我的意思)。

  3. 编辑hgweb.cgi文件,从#1设置配置文件位置。
  4. 为 fcgi 配置 nginx:

    location /hg/ {
        fastcgi_pass    127.0.0.1:9000;
        include         fastcgi_hg;
        fastcgi_intercept_errors    off;
    
        limit_except GET HEAD {
            auth_basic  'Example';
            auth_basic_user_file /srv/hg.htpasswd;
        }
    }
    
  5. 为 hg配置 fcgi include( fastcgi_hg):

    include fastcgi_params;
    fastcgi_split_path_info ^(/hg)(.*)$;
    fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
    fastcgi_param  PATH_INFO          $fastcgi_path_info;
    fastcgi_param  AUTH_USER          $remote_user;
    fastcgi_param  REMOTE_USER        $remote_user;
    
  6. 重新启动 nginx,一切就绪了!

相关内容