我在这里有一个存储库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推送到存储库但不能从中获取。
无论如何都要配置这个或其他什么来使它工作。
非常感谢你帮助我。
谢谢, 元
答案 0 :(得分:4)
答案 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)
将mercurial升级到最新版本
尝试将[路径]部分替换为
[collections]
/ = /home/repos
[web]
baseurl =
更新所有回购的hgrc
[web]
allow_read = YOUR_USER1, YOUR_USER2
allow_push = YOUR_USER1
push_ssl = false