5

私は、アップストリームクローンのローカルストアを保持し、実際の作業環境用にローカルで再度クローンを作成することで、Mercurialを使用することがよくあります。

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

インターネットにアクセスできない飛行機などで新しいクローンを作りたいことが多いので、これは特に便利です。ただし、元のクローンにサブリポジトリが含まれている場合、これは機能しません。.hgsubstateファイルが存在するということhgは、ローカルのクローンリビジョンを取得するのではなく、常にインターネットに送信されることを意味します(同じでも)。インターネットに接続せずにローカルクローンにファイルをコピーさせる方法はありますか?

この質問にはおそらくうまくいく答えがありますが、長期的な管理(.hgsubstateのクローン内のファイルを削除し/clones/、そこからローカルクローンを作成する)には非常に不幸なようです。

4

2 に答える 2

5

.hgsub次のように、ファイルで「簡単な」サブリポジトリパスを使用できます。

foo = foo
bar = bar

これが推奨される設定です。レイアウトを設定する利点は、クローンがクローン元のリポジトリと同じ構造を持つことです。したがって、飛行機に乗っているときにクローンを複製できます。

または、この設定を使用して[subpaths]、URLをローカルパスに再マップすることもできます。これにより、追加できます

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

ファイルに追加すると、クローン作成時に~/.hgrcパスが再マップされることがわかります。/clones/libs

于 2012-02-24T11:15:32.420 に答える
1

これは、サブリポジトリを自分で複製することで実現できます。fooにbarという単一のサブリポジトリがあるとします。

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

サブリポジトリが存在し、マスターでの更新に必要な変更セットが含まれているため、更新はインターネットにアクセスする必要はありません。

于 2012-02-24T11:16:57.603 に答える