3

我有一个带有 subrepos 的 repo,并且想做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 serve 无法为 subrepos 提供服务吗?或者 - 我做错了什么?

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

4

3 回答 3

2

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

要使用 TortoiseHG 托管,请转到 TortoiseHG Workbench 中的 Repository -> Web Server...。

于 2013-01-31T17:47:29.590 回答
1

hg serve与子回购一起使用。问题是它hg serve不会自动识别您的回购包含子回购。

假设有以下文件夹结构

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

其中repo是主存储库,subrepo1subrepo2repo的两个子存储库:

  1. 在repo中创建一个 Web 配置文件。不要将其添加到版本控制中。我将其命名为 .hgwebconf,您可以根据需要更改名称。
  2. 在此文件中配置子存储库的所有路径。添加以下内容:

    [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 serveusing --web-confproperty 以使用为路径创建的 Web 配置文件。这是一个例子:

    hg serve --web-conf .hgwebconf <other configurations you use ...>
    

就是这样。现在您可以通过 http 访问您的服务器,克隆您的存储库或任何子存储库并使用它。

于 2016-03-10T22:06:11.913 回答
0

HgService用来托管存储库,这是我发现工作的解决方案。

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

如果[paths]web.config这样设置的:

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

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

[paths]
remote_repo = "path/to/remote_repo/**"
于 2014-10-12T23:32:25.817 回答