複数のサブリポジトリで動作するように Mercurial リポジトリ システムをセットアップしようとしています。基本的にこれらの手順に従って、Mercurial クライアント v1.5 でクライアント リポジトリをセットアップし、HgWebDirを使用して複数のプロジェクトをホストしています。
次の構造の HgWebDir があります。
http://myserver/hg
|-- fooproj
|-- mylib
mylib
によって消費される一般的なテンプレート ライブラリのコレクションですfooproj
。の構造はfooproj
次のようになります。
fooproj
|-- doc/
| `-- readme
|-- src/
| `-- main.cpp
|-- .hgignore
|-- .hgsub
`-- .hgsubstate
次.hgsub
のようになります。
src/mylib = http://myserver/hg/mylib
ドキュメントの私の解釈によれば、これはうまくいくはずです:
最初の「ネストされた」は作業ディレクトリのパスで、2 番目はプル元の URL またはパスです。
また、mylib
プロジェクトのディレクトリ構造は次のようになります。
mylib
|-- .hg
| |-- 00changelog.i
| |-- dirstate
| |-- requires
| |-- store
| | |-- 00changelog.i
| | |-- 00manifest.i
| | | |-- data
| | | | ` magic.h.i
| | |-- fncache
| | `-- undo
| |-- undo.branch
| `-- undo.dirstate
`-- magic.h
fooproj
したがって、次のようにホームフォルダーにプルダウンするとします。
~$ hg clone http://myserver/hg/fooproj foo
これにより、ディレクトリ構造が適切にプルダウンされ~/foo/src/mylib
、ローカルの Mercurial リポジトリであるフォルダーが追加されます。ここから問題が始まります。mylib
フォルダは のアイテムを除いて空.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
ます (その URL は意味をなさないため、そのレポにアクセスしようとすると 404 が返されます)。
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
は完璧に機能します。もちろん、これはそもそもサブレポを使わないことと基本的に同じことです。
pull
どの Mercurial コマンドも ( from withinを除いてsrc/mylib
) エラー コードを返さないため、適切に動作していると明確に信じています (また、そうである可能性もあります)。
私は何を間違っていますか?
究極の問題は、.hgsubstate
常に次のようになることです。
0000000000000000000000000000000000000000 src/mylib
しかし、私はそれを修正する方法がわかりません...