Apache 在mercurial中使用hgwebdir困难的次级回购

Apache 在mercurial中使用hgwebdir困难的次级回购,apache,mercurial,Apache,Mercurial,好吧,我和Mercurial和次级回购陷入了僵局。。。下面是结果: 我有一个大型mercurial repo,我通过apache和hgweb.cgi提供服务器。 由于回购的规模,我决定转移到子存储库,并与hgwebdir.cgi共享这些子存储库 使用带有filemap选项的转换工具,我创建了几个子存储库: /main/foo /main/bar 很好地为.hgsub中的子存储库创建了一个条目: foo = foo bar = bar 并将hgwebdir.cgi设置为将$/**显示为根文件夹

好吧,我和Mercurial和次级回购陷入了僵局。。。下面是结果: 我有一个大型mercurial repo,我通过apache和hgweb.cgi提供服务器。 由于回购的规模,我决定转移到子存储库,并与hgwebdir.cgi共享这些子存储库

使用带有filemap选项的转换工具,我创建了几个子存储库:

/main/foo
/main/bar
很好地为.hgsub中的子存储库创建了一个条目:

foo = foo
bar = bar
并将hgwebdir.cgi设置为将$/**显示为根文件夹

现在,当我访问我的站点(foo.com/hg)时,我看到我的子存储库中有一个空的reposory(没有名称,没有内容),但我无法下载它(存档位置未知):

在我添加新的子存储库之前,这一切都是正确的。 我无法将新的.hgsub文件推送到foo.com/hg,因为该页面由hgwebdir提供服务

目前我唯一可以使用的方法是从hgwebdir切换到hgweb,提交.hgsubse并切换回hgwebdir

有人对这样的混乱有很好的准备吗?

从我读到的

  • 键(左边)和值(右边)都是文件系统路径
  • 键应该是值的前缀,并从值中“减去”,以便生成每个存储库的URL路径
我猜发生的是,在hgweb(dir)配置中,您为集合指定的值可能与键相同,因此在减法过程中,它的名称为空,无法访问

当我使用[collections]将/a/full/path=/a/full/path直接设置为repo时,它也会变成空的,因为它将该文件夹作为repo读取,因为它是一个repo,而不是每个子目录都是一个单独的repo,在我从集合条目的根目录中删除.hg文件夹和.hgsubs以及所有内容之后,所有子文件夹开始正确显示

我最初在[paths]、/path/to/my/project=/path/to/my/project中使用,由于这是一个引用的存储库,它将从键中减去值,让您再次使用“”,而我使用的是project=/path/to/my/project,结果显示为“project”


希望URL或这些描述能让你摆脱困境

在Web服务器上,main及其子repo应显示为同级,而不是在main中显示子repo

  • 主要
  • ASCII码
  • 排列分布
.hgsub
中的URL应该如下所示:

ASCII = ../ASCII
AlignDistribute = ../AlignDsitribute
然后您将能够推/拉至
http://foo.com/hg/Main
当您克隆它时,克隆/更新将自动附加和克隆单独的子repo