2012-02-24 3 views
5

私は頻繁に私の上流のクローンのローカルストアを維持することにより、Mercurialのと連携して、ちょうど私の実際の作業環境のためにローカルに再びクローニング:私は、多くの場合、新しいクローンを作りたいのでサブレポールをもう一度引っ張らずにローカルクローンを作るには?

$ cd /clones 
$ hg clone ssh://external-repo.example.com/some/repo/path/foo 
$ cd ~/Development 
$ hg clone /clones/foo 

これは私のために特に有用です私がインターネットにアクセスできない場所では、ただし、元のクローンにサブレポジトリが含まれている場合、これは機能しません。.hgsubstateファイルが存在すると、はローカルクローンリビジョンを取得するのではなく常にインターネットに出ます(同じであっても)。ローカルのクローンがインターネットに出ることなくファイルをコピーするようにする方法はありますか?

This question

は、おそらくうまくいく答えを持っていますが、長期的な経営( /clones/にクローンで .hgsubstateファイルを削除して、そこからローカルのクローンを作成する)ための非常に不幸なようです。

答えて

5

あなたは、このようなあなたの.hgsubファイルに「つまらない」subrepositoryパスを使用することができます。これはrecommended setupある

foo = foo 
bar = bar 

。レイアウトをセットアップする利点は、クローンの複製先がの同じ構造であることです。したがって、飛行機に乗っているときにクローンをクローンすることができます。

また、[subpaths]設定を使用して、URLをローカルパスに再マップすることもできます。これは、あなたの~/.hgrcファイルに

[subpaths] 
http://server/(.*) = /clones/libs/\1 

を追加し、あなたはクローンを作成するときのパスが/clones/libsに再マッピングされていることがわかりますすることができます。

+0

ありがとう、これは私が欲しいものです - 私たちの既存のリポジトリをすべて「些細なもの」に変更するのは難しいかもしれませんが、新しいものにはそれを使用します。ありがたいことに、サブパスは既存の問題を解決します。 –

1

これは、サブリポジトリを自分で複製することで実現できます。

$ cd ~/Development 
$ hg clone -U /clones/foo 
$ hg clone -U /clones/foo/bar foo/bar 
$ hg update -R foo 

は更新がsubrepositoryが存在し、マスターの更新のために必要なチェンジセットが含まれているため、インターネットにアクセスする必要がありません:そのFOOを想定することは、単一のsubrepoと呼ばれるバーを併設しています。

関連する問題