好吧,我让Mercurial和子回购陷入僵局......以下是发生的事情: 我有一个很大的mercurial repo,我通过apache和hgweb.cgi服务器。 由于仓库的大小,我决定转移到子仓库并与hgwebdir.cgi分享。
使用带有filemap选项的转换工具,我创建了几个子存储库:
/main/foo
/main/bar
很好地为.hgsub:
中的子存储库创建了一个条目foo = foo
bar = bar
并设置hgwebdir.cgi以显示$ / **作为根文件夹。
现在当我去我的网站(foo.com/hg)时,我看到我的子存储库中有一个空的存储库(没有名称,没有内容),但我无法下载它(存档位置未知): empty_repo http://img707.imageshack.us/img707/8237/emptysubrepo.png
在我添加新的子存储库之前,这一切都很好。 我无法将新的.hgsub文件推送到foo.com/hg,因为该页面由hgwebdir提供。
我目前唯一可以使用的方法是从hgwebdir切换到hgweb,提交.hgsubste并切换回hgwebdir。
有人为这样的混乱设置好吗?
答案 0 :(得分:0)
从我在https://www.mercurial-scm.org/wiki/PublishingRepositories#multiple
上读到的内容我猜测的是,在你的hgweb(dir)配置中,你为一个集合指定了相同的值,可能是键,所以在减法期间,它最终会出现一个空白名称,无法找到它
当我使用[collections]将/ a / full / path = / a / full / path直接设置为repo时,它也会空白,因为它正在将该文件夹作为repo读取,因为它是一个repo在我从集合条目的根目录中删除.hg文件夹和.hgsubs以及所有子目录后,所有子文件夹都开始正常显示,而不是每个子目录都是一个单独的存储库。
我最初用于[paths],/ path / to / my / project = / path / to / my / project,因为这是一个引用的存储库,它会从键中减去该值,让你离开再一次使用'',而不是使用project = / path / to / my / project,它就是'project'。
希望这些网址或这些说明能让你摆脱困境!
答案 1 :(得分:0)
在网络服务器上,你的主要及其子版本应该显示为兄弟姐妹 - 而不是主要内部的子版本。
.hgsub
中的网址应如下所示:
ASCII = ../ASCII
AlignDistribute = ../AlignDsitribute
然后你就可以推/拉到http://foo.com/hg/Main
,当你克隆它时,克隆/更新将自动附加并克隆单独的子目录。