请注意,这个问题可能更适合发布在serverfault.com上,但由于它是关于托管程序员源代码库的,我不太确定。我先在这里发布,相信如果需要的话,它会被迁移。
我正在尝试在自己的服务器上托管我的Mercurial代码库的克隆版本(我把主要的代码库放在其他地方),并尝试在IIS下设置Mercurial。
我按照这里的指南进行操作,但是我收到了一个错误信息。
已解决:有关详情,请参见本问题底部。
错误消息如下:
mercurial.error.RepoError: 未找到存储库/path/to/repo/or/config
以下是我的操作步骤:
- 我安装了Mercurial 1.5.2
- 我创建了 c:\inetpub\hg
- 我按照网页的说明下载了hg源文件,并将hgweb.cgi文件复制到c:\inetpub\hg目录中。(注意,该网页上显示应该使用
hgwebdir.cgi
文件,但是这个特定的文件不存在,hgweb.cgi
文件存在,这可能是问题的原因吗?) 我添加了一个hgweb.config文件,内容如下:
[paths] repo1 = C:/hg/** [web] style = monoblue
我创建了 c:\hg 目录,创建了一个名为 test 的子目录,并在其中创建了一个仓库。
- 我安装了 Python 2.6.5,这是从网站上获取的最新 2.6 版本(网页上提到需要安装正确的版本,否则会收到特定的错误消息,但由于我没有收到任何类似的错误消息,所以我认为 2.6.5 不是问题)。
- 我添加了一个新的虚拟主机 hg.vkarlsen.no,并将其指向 c:\inetpub\hg。
- 对于此主机,我在处理程序映射部分添加了一个脚本映射,将 *.cgi 映射到
c:\python26\python.exe -u %s %s
,按照网站上的说明进行设置。
然后我通过导航到 http://hg.vkarlsen.no/hgweb.cgi 进行了测试,但是我收到了一个错误消息。
为了更容易地进行测试,我打开了命令提示符,导航到了 c:\inetpub\hg,并执行了以下命令(错误消息是下面文本的一部分):
C:\inetpub\hg>c:\python26\python.exe -u hgweb.cgi
Traceback (most recent call last):
File "hgweb.cgi", line 16, in <module>
application = hgweb(config)
File "mercurial\hgweb\__init__.pyc", line 12, in hgweb
File "mercurial\hgweb\hgweb_mod.pyc", line 30, in __init__
File "mercurial\hg.pyc", line 82, in repository
File "mercurial\localrepo.pyc", line 2221, in instance
File "mercurial\localrepo.pyc", line 62, in __init__
mercurial.error.RepoError: repository /path/to/repo/or/config not found
有人知道我需要查看什么来修复这个问题吗?
编辑:好的,我想我已经接近解决方案了,但我仍然被卡住了。
我意识到.cgi文件是一个Python脚本文件,不是编译文件,所以我打开它进行编辑,发现其中有以下内容:
# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/path/to/repo/or/config"
这是我找到的关于特定错误消息的来源。
如果我将这行改为:
config = "c:\\hg\\test"
那么我可以通过Mercurial Web界面导航到空仓库。
然而,我想要托管多个仓库,既然该行说我也可以链接到一个hgweb配置文件,我尝试了这个方法:
config = "c:\\inetpub\\hg\\hgweb.config"
但是我会得到以下错误信息:
mercurial.error.Abort: c:\inetpub\hg\hgweb.config: not a Mercurial bundle file
Exception ImportError: 'No module named shutil' in <bound method bundlerepository.__del__
of <mercurial.bundlerepo.bundlerepository object at 0x0260A110>> ignored
我尝试过的所有配置变量似乎都无法起作用:
config = "hgweb.config"
config = "c:\\hg\\hgweb.config"
- 我记不起来其他各种变体了。
所以,我还是茫然无措,有人能指点一下吗?
希望这个问题能为其他像我一样困惑的人提供一些信息。