4

Subversion から Mercurial に一連のプロジェクトを移行しています。プロジェクトは現在、svn:externals を使用して、あるコードから別のコードにプルします。外部を特定のリビジョン番号に向け、必要に応じて手動で更新するという推奨事項に従っています (メイン プロジェクトの過去のリビジョンに更新すると、外部の過去のバージョンも取得できるようになります)。

Mercurial で外部を行う方法はサブリポジトリを使用しているようですが、それらを特定のリビジョンにペグする方法がわかりません。メイン リポジトリを更新するたびに、Hg は常にサブリポジトリを最新のリビジョンに更新するようです。あれは正しいですか?それを回避する方法はありますか?

4

3 に答える 3

3

.hgsubファイル内でhttp://[user[:pass]@]host[:port]/[path][#revision](またはlocal/filesystem/path[#revision]) 構文 (hg help urlsその他の例については を参照) を使用して、サブレポを特定のリビジョンに固定できます。そのリビジョン文字列については、#branchnameor#tagnameを使用して、特定のブランチ (ex stable) または移動可能なタグ (ex: release) のヒントを追跡し、リモート サブレポのブランチまたはタグが更新されたときにのみ新しいバージョンを取得することもできます。

于 2010-07-07T02:51:10.140 に答える
1

(上記の私のコメントからコピー)

私が間違っていたことが判明しました。最新のリビジョンに更新されるのではなく、バージョン管理され、コミットごとに自動的に更新される .hgsubstate ファイルで指定されたリビジョンに更新されます。したがって、リビジョンを手動で再ペグする必要がないため、これは SVN 外部よりも実際には簡単です。メインリポジトリの各リビジョンは、サブリポジトリの対応するリビジョンに自動的に関連付けられます。

于 2013-07-21T02:33:40.700 に答える
0

Mercurial サブリポジトリは常にリモート リポジトリの最新のヒントに更新されているようです。

リモート リポジトリの特定のバージョンを使用していて、そのバージョンをあまり頻繁に更新しない場合は、そのリビジョンをメイン リポジトリに折りたたんだ方がよいと思います。これは、チェックアウトのために外部ソースに依存しなくなったことを意味します。

于 2010-07-06T21:33:47.150 に答える