我正在尝试设置我的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
但我不知道如何解决这个问题…