【问题标题】:Using sub-repo with hgwebdir difficulties in mercurial在 mercurial 中使用带有 hgwebdir 困难的子存储库
【发布时间】:2010-05-27 21:02:30
【问题描述】:

好吧,我让自己在 Mercurial 和 sub-repos 上陷入了僵局......这是发生的事情: 我有一个大型的 mercurial 存储库,我通过 apache 和 hgweb.cgi 提供服务。 由于 repo 的大小,我决定转移到子存储库并与 hgwebdir.cgi 共享这些。

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

/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。

有人对这样的混乱有一个好的设置吗?

【问题讨论】:

    标签: apache mercurial


    【解决方案1】:

    在网络服务器上,你的 main 和它的 subrepos 应该显示为兄弟 - 而不是 main 中的 subrepos。

    • 主要
    • ASCII
    • 对齐分布

    .hgsub 中的 URL 应如下所示:

    ASCII = ../ASCII
    AlignDistribute = ../AlignDsitribute
    

    然后你就可以推/拉到http://foo.com/hg/Main,当你克隆它时,克隆/更新将自动附加并克隆到单独的子存储库。

    【讨论】:

      【解决方案2】:

      根据我在 https://www.mercurial-scm.org/wiki/PublishingRepositories#multiple 上读到的内容

      • 键(左侧)和值(右侧)都是文件系统路径
      • 键应该是值的前缀,并从值中“减去”,以便生成每个存储库的 URL 路径

      我猜发生的事情是,在您的 hgweb(dir) 配置中,您为集合指定了相同的值,可能作为键,因此在减法过程中,它会以一个空白名称结束,并且无法访问它.

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

      我最初在 [paths] 中使用,/path/to/my/project = /path/to/my/project,由于这是一个单一引用的存储库,它会从 key 中减去 value,留下你再次使用 '',而不是我使用 project = /path/to/my/project 并且它作为 'project' 出现。

      希望该 URL 或这些描述能让您摆脱困境!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        相关资源
        最近更新 更多