これが Mercurial で可能かどうか興味があります。手動で指定された変更セット、またはさらに良いことに、タグに常に固定されているプロジェクトにサブリポジトリが必要です。
基本的に私が達成しようとしているのは、メイン リポジトリにコア システムを配置し、次にサブリポジトリにすべてのモジュールとコンポーネントを配置することですが、それらのサブリポジトリがチップを指すのではなく、それらのコンポーネント/モジュールのメジャー リリースのみを指すようにしたくありません。 (したがって、タグ)。
これが Mercurial で可能かどうか興味があります。手動で指定された変更セット、またはさらに良いことに、タグに常に固定されているプロジェクトにサブリポジトリが必要です。
基本的に私が達成しようとしているのは、メイン リポジトリにコア システムを配置し、次にサブリポジトリにすべてのモジュールとコンポーネントを配置することですが、それらのサブリポジトリがチップを指すのではなく、それらのコンポーネント/モジュールのメジャー リリースのみを指すようにしたくありません。 (したがって、タグ)。
サブリポジトリは思い通りに機能します。
Mercurial がサブレポをヒントに自動的に更新することはありません。選択した変更セットに常にとどまります。ドキュメントから:
サブリポジトリは、ソースの最新の変更セットを自動的に追跡しません。代わりに、最上位の変更セットでチェックアウトされた変更セットに対応する変更セットに更新されます。これは、開発者が更新時に互換性のあるコードとライブラリの一貫したセットを常に取得できるようにするためです。
目的を達成するには、次の手順に従います。
echo subrepo = https://example.com/subrepo/repo/path > .hgsub
hg add .hgsub
hg clone https://example.com/subrepo/repo/path subrepo
hg -R subrepo update mytag
hg commit
これにより、指定されたリポジトリのコンテンツを含む subrepo ディレクトリが作成されます。これは、手動でmytag
他のものに更新しない限り、タグに残ります!
あなたのレポジトリを複製する人は誰でも、あなたと同じ変更セットにサブレポを持っています (つまりmytag
)。
参考までに、サブリポジトリが更新される変更セットは.hgsubstate
、メイン リポジトリのルートにあるファイルに格納されます。