【问题标题】:When doing a mercurial clone over http, I get a 500 error通过 http 进行 mercurial 克隆时,出现 500 错误
【发布时间】:2011-01-22 20:56:34
【问题描述】:

我在另一台计算机上设置了一个存储库,我想开始通过 http 进行克隆。我使用如下所述的指令设置了 apache,并且在目录中我有 mercurial 提供的 index.cgi 文件。如果它是空的,我可以很好地克隆一个存储库,但如果它包含文件,我会收到 500 错误。查看错误日志,我看到以下内容:

来自脚本的格式错误的标头。 Bad header=1 发现变更集:index.cgi

对我来说,这听起来像是一个权限问题,但所有内容都是 775(我们位于多个防火墙之后),并且可以通过浏览器从 index.cgi 访问所有内容。

我别无选择,我还缺少什么吗?

Apache 配置:

Alias /hg /base/src/hg_cgi
<Directory "/base/src/hg_cgi">
    DirectoryIndex index.cgi
    AddHandler cgi-script .cgi
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

【问题讨论】:

    标签: mercurial clone


    【解决方案1】:

    我正在使用 ScriptAlias,将 hgweb.cgi 重命名为 index.cgi,没有打开详细但仍然看到 500 Internal server error。

    hg clone http://ip.address.here:8880/hg/Lavanya2/test/ .
    

    我进入 Apache

    [Wed Jul 28 11:52:27 2010] [error] [client ip.address.here] malformed header from script. Bad header=8 changesets found: index.cgi
    

    【讨论】:

    • 我得到了这个工作(终于!)。我必须从我试图克隆的存储库的 hgrc 文件中删除 debug=true 设置。
    【解决方案2】:

    我有同样的错误。

    原来注释掉 ~/.hgrc 中的以下行

    #verbose = True
    

    固定的东西。

    来源:https://www.mercurial-scm.org/bts/issue1250

    【讨论】:

    • +1,同样的问题。我希望我在一小时前读过这篇文章:(
    【解决方案3】:

    尝试将“别名”更改为“脚本别名”

    另外,请检查您的 apache 错误日志。会有更多更好的输出。

    【讨论】:

    • 我做了 Alias -> ScriptAlias,没有变化。 Apache 日志指示“脚本中的标头格式错误。发现标头错误=1 变更集:index.cgi”
    • 尝试为 CGI 设置一个脚本别名。它也更安全: ScriptAlias /base/src/hg_cgi/hgwebdir.cgi apache 错误日志中还有什么?这就是钱的所在。
    • Apache 错误日志显示“来自脚本的标头格式错误。发现标头错误=1 变更集:index.cgi”就是这样
    • 你将什么重命名为 index.cgi?是 hgweb.cgi 还是 hgwebdir.cgi?在这种情况下,您使用什么 URL 来推/拉?克隆的时候试试--debug看看有没有什么有趣的地方?
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 2011-06-29
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2011-05-24
    相关资源
    最近更新 更多