我有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中的路径。
答案 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 的两个子存储库:
在此文件中配置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
使用hg serve
属性执行--web-conf
以使用为路径创建的Web配置文件。这是一个例子:
hg serve --web-conf .hgwebconf <other configurations you use ...>
就是这样。现在您可以访问您的服务器víahttp,克隆您的repo或任何subrepo并使用它。