代码之家  ›  专栏  ›  技术社区  ›  Travis Gockel

mercurial远程子报告

  •  4
  • Travis Gockel  · 技术社区  · 14 年前

    我正在尝试设置我的Mercurial存储库系统来处理多个子报表。我基本上是跟着 these instructions 要使用Mercurial客户机v1.5设置客户机回购,我正在使用 HgWebDir 主持我的多个项目。

    我有一个具有以下结构的hgwebdir:

    http://myserver/hg
    |-- fooproj
    |-- mylib
    

    哪里 mylib 是否要使用一些公共模板库集合 fooproj . 的结构 福普罗吉 如下所示:

     fooproj
     |-- doc/
     |   `-- readme
     |-- src/
     |   `-- main.cpp
     |-- .hgignore
     |-- .hgsub
     `-- .hgsubstate
    

    .hgsub 看起来像:

    src/mylib = http://myserver/hg/mylib
    

    根据我对文件的解释,这应该是可行的:

    第一个“嵌套”是 工作目录,第二个是URL 或从中拉出的路径。

    此外,还有 迈利布 项目目录结构如下:

    mylib
    |-- .hg
    |   |-- 00changelog.i
    |   |-- dirstate
    |   |-- requires
    |   |-- store
    |   |   |-- 00changelog.i
    |   |   |-- 00manifest.i
    |   |   |   |-- data
    |   |   |   |   ` magic.h.i
    |   |   |-- fncache
    |   |   `-- undo
    |   |-- undo.branch
    |   `-- undo.dirstate
    `-- magic.h
    

    所以,假设我拉下来 福普罗吉 到我的主文件夹:

    ~$ hg clone http://myserver/hg/fooproj foo
    

    它正确地下拉目录结构并添加文件夹 ~/foo/src/mylib 这是一个本地的mercurial存储库。这就是问题开始的地方: 迈利布 除中的项目外,文件夹为空 .hg . 来自Mercurial的消息是:

    requesting all changes
    adding changesets
    adding manifests
    adding file changes
    added 1 changesets with 5 changes to 5 files
    updating working directory
    5 files updated, 0 files merged, 0 files removed, 0 files unresolved
    

    经过2秒钟的调查,我们可以看到 src/mylib/.hg/hgrc 是:

    [paths]
    default = http://myserver/hg/fooproj/src/mylib
    

    完全错误(尝试 pull 回购协议将给出404,因为,好吧,这个URL没有任何意义)。

    foo
    |-- .hg
    |   |-- 00changelog.i
    |   |-- branch
    |   |-- branchheads.cache
    |   |-- dirstate
    |   |-- hgrc
    |   |-- requires
    |   |-- store
    |   |   |-- 00changelog.i
    |   |   |-- 00manifest.i
    |   |   |-- data
    |   |   |   |-- .hgignore.i
    |   |   |   |-- .hgsub.i
    |   |   |   |-- .hgsubstate.i
    |   |   |   |-- doc
    |   |   |   |   `-- readme.i
    |   |   |   `-- src
    |   |   |       `-- main.cpp.i
    |   |   |-- fncache
    |   |   `-- undo
    |   |-- tags.cache
    |   |-- undo.branch
    |   `-- undo.dirstate
    |-- .hgignore
    |-- .hgsub
    |-- .hgsubstate
    |-- doc
    |   `-- readme
    `-- src
        |-- main.cpp
        `-- mylib
            `-- .hg
                |-- 00changelog.i
                |-- branch
                |-- dirstate
                |-- hgrc
                |-- requires
                `-- store
    

    从逻辑上讲,默认值应该是我在 HGSUB 或者以某种方式从存储库中获取文件。当然,改变 src/mylib/.hg/hgrc型 到:

    [paths]
    default = http://myserver/hg/mylib
    

    和跑步 hg pull && hg update 工作得很好。当然,这基本上与一开始不使用子报告是一样的。

    没有任何mercurial命令返回错误代码(除了 从内部 src/mylib ,所以它清楚地相信它的行为是正确的(并且可能是),尽管这看起来根本不符合逻辑。

    我做错什么了?

    最终的问题可能是 .hgsubstate 总是看起来像:

    0000000000000000000000000000000000000000 src/mylib
    

    但我不知道如何解决这个问题…

    1 回复  |  直到 14 年前
        1
  •  3
  •   Ry4an Brase    14 年前

    你左手边的小路 .hgsub 文件相对于其在树中的位置。它已经在下面了 src 如此 SRC 不需要走在路上。我想如果你 HGSUB 文件外观:

    mylib = http://myserver/hg/mylib
    

    把它放在原地,你就能得到你想要的。或者,您可以移动 HGSUB 上一个目录(在 SRC ,在您的 )然后它会像现在一样正确。

    我刚刚用这样的设置确认了这个解释:

    .
    |-- .hg
    |   |-- 00changelog.i
    |   |-- branch
    |   |-- branchheads.cache
    |   |-- dirstate
    |   |-- last-message.txt
    |   |-- requires
    |   |-- store
    |   |   |-- 00changelog.i
    |   |   |-- 00manifest.i
    |   |   |-- data
    |   |   |   |-- .hgsub.i
    |   |   |   `-- .hgsubstate.i
    |   |   |-- fncache
    |   |   `-- undo
    |   |-- undo.branch
    |   `-- undo.dirstate
    |-- .hgsub
    |-- .hgsubstate
    `-- src
        `-- mylib
            |-- .hg
            |   |-- 00changelog.i
            |   |-- branch
            |   |-- branchheads.cache
            |   |-- dirstate
            |   |-- hgrc
            |   |-- last-message.txt
            |   |-- requires
            |   |-- store
            |   |   |-- 00changelog.i
            |   |   |-- 00manifest.i
            |   |   |-- data
            |   |   |   |-- .hgignore.i
            |   |   |   |-- _p_k_g-_i_n_f_o.i
            |   |   |   |-- _r_e_a_d_m_e.i
            |   |   |   |-- hgext
            |   |   |   |   `-- chart.py.i
            |   |   |   `-- setup.py.i
            |   |   |-- fncache
            |   |   `-- undo
            |   |-- tags.cache
            |   |-- undo.branch
            |   `-- undo.dirstate
            |-- .hgignore
            |-- PKG-INFO
            |-- README
            |-- hgext
            |   `-- chart.py
            `-- setup.py
    

    最高层在哪里 HGSUB 文件包含:

    $ cat .hgsub
    src/mylib = https://Ry4an@bitbucket.org/Ry4an/hg-chart-extension/
    

    父对象的圆锥体也显示它正在克隆子对象:

    $ hg clone parent parent-clone
    updating to branch default
    pulling subrepo src/mylib
    requesting all changes
    adding changesets
    adding manifests
    adding file changes
    added 8 changesets with 14 changes to 5 files