克隆时获取404错误,拉出mercurial存储库

时间:2011-02-11 14:01:40

标签: mercurial clone apache-config hgrc

我在这里有一个存储库http://repos.joomlaguruteam.com/

我使用的是hgweb.cgi 这是我的hgweb.config文件

[web]
baseurl = 
#allowpull = true
allow_push = *
push_ssl = false
allow_archive = bz2 gz zip

[paths]
/ = /home/repos/*

我可以浏览它,但我无法克隆它。每次我克隆它都有这个错误

hg clone http://repos.joomlaguruteam.com/hello
destination directory: hello
requesting all changes
abort: HTTP Error 404: Not Found

并且访问日志具有

115.5.95.59 - - [10/Feb/2011:04:20:33 -0600] "GET /hello?pairs=0000000000000000000000000000000000000000-0000000000000000000000000000000000000000&cmd=between HTTP/1.1" 200 1 "-" "mercurial/proto-1.0"
115.5.95.59 - - [10/Feb/2011:04:20:34 -0600] "GET /hello?cmd=heads HTTP/1.1" 200 41 "-" "mercurial/proto-1.0"
115.5.95.59 - - [10/Feb/2011:04:20:34 -0600] "GET /hello?cmd=changegroup&roots=0000000000000000000000000000000000000000 HTTP/1.1" 404 597 "-" "mercurial/proto-1.0"

但是我可以使用未压缩的传输来克隆它

hg clone --uncompressed http://repos.joomlaguruteam.com/hello

但是现在我不知道如何从存储库中提取,因为当我从中拉出来时。 它有像克隆一样的问题。也是为了传入。

这是我的.htaccess文件

Options +ExecCGI
RewriteEngine On
#write base depending on where the base url lives
#RewriteBase /hg
RewriteRule ^$ hgweb.cgi  [L]
# Send requests for files that exist to those files.
RewriteCond %{REQUEST_FILENAME} !-f
# Send requests for directories that exist to those directories.
RewriteCond %{REQUEST_FILENAME} !-d
# Send requests to hgweb.cgi, appending the rest of url.
RewriteRule (.*) hgweb.cgi/$1  [QSA,L]

我可以将revison推送到存储库但不能从中获取。

无论如何都要配置这个或其他什么来使它工作。

非常感谢你帮助我。

谢谢, 元

5 个答案:

答案 0 :(得分:4)

好的,我发现了问题。

在/home/my_username/.hgrc

中注释掉以下内容
#verbose = True

更多细节here

答案 1 :(得分:1)

这可能听起来很明显,但您是否尝试取消注释#allowpull = true文件中的hgweb.config行?

答案 2 :(得分:0)

问题:您是否正在运行hgweb.cgi并通过Web服务器对其进行别名处理?

如果是这样http://url/hello实际上可能指向http://url/hgweb.cgi/hello,那可能是它寻找的路径。通常,您有一个服务于mercurial Web界面的cgi脚本。

答案 3 :(得分:0)

当您在IIS中托管hgweb并且pull请求超过服务器上的最大查询字符串长度时,也会发生这种情况。通过配置system.webServer/security/requestFilters/requestLimits配置部分,可以增加默认值2048字节。

答案 4 :(得分:0)

  1. 将mercurial升级到最新版本

  2. 尝试将[路径]部分替换为

    [collections]
    / = /home/repos
    
    [web]
    baseurl =
    
  3. 更新所有回购的hgrc

    [web]
    allow_read = YOUR_USER1, YOUR_USER2
    allow_push = YOUR_USER1
    push_ssl = false