2011-09-30 3 views
5

MercurialリポジトリAを複製しようとしています。ここでは、移動したホストであるサブリポジトリBを参照しています。 Aの.hgsubをBの新しい場所を指し示すように更新したいのですが、最初にAをクローンすることができなければ、それは鶏と卵の問題です。水銀リポジトリの複製.hgsubは死んだ外部サブペクトを指します

これを回避する方法を知っている人はいますか?

答えて

5

クローンは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

4
$ 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でそれを行うことができます。

+0

私はどちらかこれを行う方法を知らなかったので、答えは、私はそれを見つけた正確にどのように示しています。 'hg help'と' man'は素晴らしいユーティリティです。 –

関連する問題