hg服务于subrepos

时间:2012-10-06 00:34:57

标签: mercurial webserver subrepos

我有subrepos的回购邮件,并希望hg serve

在其他电脑上,我试过

hg clone http://address:8000/ new_repo

场景1:当我的原始仓库在.hgsub中有以下形式的行:

sub_repo_1 = sub_repo_1
sub_repo_2 = sub_repo_2

我上了其他电脑:

Requesting all changes
adding changesets
adding manifests
...
updating to branch default
abort: HTTP Error 404: Not Found

(服务计算机在此之后等待)

(只有new_repo里面的sub_repo_1。我试过更新,拉错了......)

我试图实际单独克隆sub_repo_2,并继续获得错误404(发送和接收计算机上的僵尸程序)。

场景2:当我用

替换.hgsub中的行时,发生了同样的事情
sub_repo_1 = http://address/sub_repo_1
sub_repo_2 = http://address/sub_repo_2

hg服务无法服务subrepos?或者 - 我做错了什么?

注意:我每次都更新子目录中的hgrc文件以匹配.hgsub中的路径。

3 个答案:

答案 0 :(得分:1)

您可以使用TortoiseHG为具有子存储库的存储库托管mercurial服务器。 TortoiseHG实际上使用它创建的不同web.config文件调用hg serve。

要使用TortoiseHG主持,请转到存储库 - > Web服务器......在TortoiseHG Workbench中。

答案 1 :(得分:0)

我使用HgService来托管存储库,这是我找到的解决方案。

如果您使用HgService,则需要编辑web.config文件并重新启动该服务。

如果[paths]中的web.config设置如下:

[paths]
remote_repo = "path/to/remote_repo"

将双星(**)添加到路径中,如下所示:

[paths]
remote_repo = "path/to/remote_repo/**"

答案 2 :(得分:0)

hg serve适用于subrepos。问题是hg serve不会自动识别您的仓库包含子目录。

假设有以下文件夹结构

- repo
  - subrepo1
    + file1.txt
  - subrepo2
    + file2.txt
    + file3.txt

repo 是主存储库, subrepo1 subrepo2 repo 的两个子存储库:

  1. repo 中创建一个Web配置文件。 不要在版本控制中添加。我把它称为.hgwebconf,你可以根据需要更改名称。
  2. 在此文件中配置subrepos的所有路径。添加以下内容:

    [paths]
    /repo = ./* #all repos will be known by the url /repo
    /repo/subrepo1 = subrepo1 #adding subrepo1 to be available in hg serve
    /repo/subrepo2 = subrepo2 #similar to above
    
  3. 使用hg serve属性执行--web-conf以使用为路径创建的Web配置文件。这是一个例子:

    hg serve --web-conf .hgwebconf <other configurations you use ...>
    
  4. 就是这样。现在您可以访问您的服务器víahttp,克隆您的repo或任何subrepo并使用它。

相关问题