最初にサブリポジトリをコミットし、そこに名前付きブランチを作成します。
その後、メインコミットは、以前と同じブランチ内のそのサブリポジトリにコミットし続ける必要があります。
まず、2つのリポジトリを別々の完全に別々のものと考える必要があります。つまり、1つのリポジトリで何かを実行し、それをコミットします。次に、他のリポジトリで何かを実行し、それをコミットします。
2つのリポジトリの関係は、メインリポジトリにファイル(.hgsubstateファイル)が格納されていることです。このファイルには、各サブリポジトリの作業フォルダの親のハッシュが含まれています。
言い換えれば、サブリポジトリ自体は、それが全体像の一部であるという知識を持っていません。ただし、メインリポジトリは、そのサブリポジトリで現在チェックアウトされているリビジョンを認識しています。この知識は、通常のコミットの一部としてリポジトリにコミットされます。
これは、サブリポジトリで何かを実行した場合、それをコミットすると、サブリポジトリが新しいリビジョンになったことを意味します。後でメインリポジトリでコミットすると、サブリポジトリ内のその新しいリビジョンのハッシュが.hgsubstateファイルに更新されてから、コミットされます。
もちろん、この背後にある目的は、メインリポジトリ内の古いリビジョンに更新すると、.hgsubstateファイルの古いコピーも作業フォルダーに移動され、サブリポジトリがそのリビジョンに更新されることです。これは、これらのリビジョンが機能しているときにサブリポジトリがどのように表示されたかにクロックを戻す効果があります。
さらに、メインリポジトリのコマンドは、サブリポジトリでも機能する場合があります。メインリポジトリをプッシュすると、サブリポジトリもプッシュされ、メインリポジトリのクローンを作成する他のユーザーも、サブリポジトリの適切なコンテンツのクローンを作成できることに安全に依存できるようになります。
だからコメントであなたの質問に答えるために。
名前付きまたはその他の方法でサブリポジトリにブランチを作成すると、そのブランチに新しいチェンジセットをコミットし続けます。ある時点でマージする必要があり、メインリポジトリだけでなくサブリポジトリでもマージする必要があります。
まず、サブリポジトリにマージします。これはコミットで終了します。つまり、サブリポジトリはマージをコミットしたチェンジセットにあります。次に、メインリポジトリにマージしてコミットします。これにより、現在使用されているサブリポジトリの変更セットである知識が保存されます。
そうです、後で両方をマージする必要があります。