私は最近、ソース管理のためにSubversionからMercurialに切り替えました。そうすることで、1つのリポジトリを複数に分割しました。サブリポジトリを使用して、リポジトリ間の依存関係を管理しました。問題は、プルがsuprepoに対応していないため、リポジトリを更新するために、各サブリポジトリに移動して変更をプルする必要があることです。これを行うためのより良い方法はありますか?
1 に答える
プルはsuprepoに対応していません
hg pull-u
は、 (--update
)オプションとともに使用される場合、サブリポジトリに対応している必要があります。
サブリポジトリに関しては、次のことを考慮に入れる必要がありますhg update
。
新しいMercurialバージョンが
.hgsubstate
作業ディレクトリを更新するときにこのファイルに遭遇すると、指定されたサブリポジトリをプルして適切な状態に更新しようとします。サブリポジトリには独自のサブリポジトリが含まれている場合があり、Mercurialは必要に応じて再帰します。
OPCoreyDは以下を追加します。
それは私にはうまくいきませんでした。
2つのリポジトリを作成/repo
し/sub
、subをrepo(/repo/sub
)に複製します。
次に、このような行で.hgsub
ファイルを作成し、コミットします。 に変更を加えてから更新を行っても、変更はありません。 私は何か間違ったことをしていますか?/repo
sub = ../sub
/sub
/repo /repo/sub
それはほぼ正しいように見えます:
SubReposまたはサブモジュール(Gitの場合)はすべて、正確な構成を参照することです(このSOの質問で説明されているように、hgの場合はchangeset ref、Gitの場合はcommit ref )
以外のものを変更する場合、正確な構成(チェンジセット参照)を記録する範囲内でファイルを/repo
変更することはありません。
したがって、まったく変化はありません。.hgsubstate
/repo
/sub
で直接変更を行い/repo/sub
、コミットしてからコミットすることもできます/repo
。
次に、のクローンは/repo
新しい構成になります。