MercurialリポジトリAを複製しようとしています。ここでは、移動したホストであるサブリポジトリBを参照しています。 Aの.hgsubをBの新しい場所を指し示すように更新したいのですが、最初にAをクローンすることができなければ、それは鶏と卵の問題です。水銀リポジトリの複製.hgsubは死んだ外部サブペクトを指します
これを回避する方法を知っている人はいますか?
MercurialリポジトリAを複製しようとしています。ここでは、移動したホストであるサブリポジトリBを参照しています。 Aの.hgsubをBの新しい場所を指し示すように更新したいのですが、最初にAをクローンすることができなければ、それは鶏と卵の問題です。水銀リポジトリの複製.hgsubは死んだ外部サブペクトを指します
これを回避する方法を知っている人はいますか?
クローンはinit + pull + updateであり、サブステップクローニングは更新ステップの一部であることに注意してください。ではなく、プルステップ。これは、更新ステップをスキップすることにより、単に失敗クローンを避けることができることを意味します
$ hg clone -U <url>
は今問題が還元され、「どのように私は問題.hgsub/.hgsubstateファイルとリビジョンに更新していますか?」二つの可能性がここにあります:[サブパス]機能を使用して
リマップsubreposは
手動更新(HGヘルプsubrepoとHGのヘルプの設定を参照)、
A「マニュアルを修復しますアップデート "は次のように行うことができます:
$ hg revert -a -r default -X problematic-file
[adding a bunch of files]
$ hg debugrebuildstate -r default
サブレポ.hgsubとコミット。それを押す前に、クローンで修正をテストしてください。
また、トピックのこのメーリングリストのスレッドを参照してください。http://markmail.org/thread/ktxd2rsm7avkexzr
$ hg help subrepos
...
Remapping Subrepositories Sources
---------------------------------
A subrepository source location may change during a project life,
invalidating references stored in the parent repository history. To fix
this, rewriting rules can be defined in parent repository "hgrc" file or
in Mercurial configuration. See the "[subpaths]" section in hgrc(5) for
more details.
$ man hgrc
...
subpaths
Defines subrepositories source locations rewriting rules of the form:
<pattern> = <replacement>
Where pattern is a regular expression matching the source and replacement is the replacement string used to
rewrite it. Groups can be matched in pattern and referenced in replacements. For instance:
http://server/(.*)-hg/ = http://hg.server/\1/
rewrites http://server/foo-hg/ into http://hg.server/foo/.
All patterns are applied in definition order.
...
だから、あなたは[subpaths]
セクションで.hgrc
でそれを行うことができます。
私はどちらかこれを行う方法を知らなかったので、答えは、私はそれを見つけた正確にどのように示しています。 'hg help'と' man'は素晴らしいユーティリティです。 –