Kilnは現在、サーバー上でネストされたURLを使用するサブリポジトリをサポートしていません。これは、次の両方のURLを機能させることができないことを意味します。
http://server/kiln/somepath/project1
http://server/kiln/somepath/project1/thirdparty
したがって、サーバー上に4つのリポジトリがあるようにKilnを設定する必要があります。
http://server/kiln/somepath/project1
http://server/kiln/somepath/project2
http://server/kiln/somepath/thirdparty
http://server/kiln/somepath/common
それは簡単です—たった4つの通常のリポジトリです。次に、「プロジェクト」のクローンを作成し、次の.hgsub
コマンドでファイルを作成します。
thirdparty = http://server/kiln/somepath/thirdparty
common = http://server/kiln/somepath/common
これをKilnにプッシュバックすると、サブリポジトリへのリンクが表示されます。ただし、サブリポジトリはサーバー上にネストされることはありません。project1/thirdparty
したがって、サーバー上にパスはありません。
また、あなたがそれを望んでいることも明らかではありません。共同でいくつかの共通のコードベースを使用する複数のプロジェクトがある場合、「project1」と「project2」がこの共通のコードベースに対する互いの変更を取得する必要があります。common
したがって、両方のプロジェクトのサブリポジトリがからプッシュおよびプルすることは非常に便利ですhttp://server/kiln/somepath/common
。
Mercurialでは、通常common = common
、ファイル内のフォームのパスを使用することをお勧めし.hgsub
ます。これは、サーバーがネストされたリポジトリをサポートする必要があることを意味します。Kilnがネストされたリポジトリをサポートしていない場合は、代わりにフルパスを使用できます。
サブリポジトリを最初に設定するときは、手動で更新する必要があることに注意してください。したがって、上記のURLを使用して、次のコマンドを実行して「project1」を設定します。
$ hg clone http://server/kiln/somepath/project1
$ echo "common = http://server/kiln/somepath/common" > .hgsub
$ echo "thirdparty = http://server/kiln/somepath/thirdparty" > .hgsub
$ hg commit -m "Created subrepos"
これにより、最初の空のサブリポジトリが作成されます。Mercurialにどのチェンジセットが必要かを伝えていないため、これらは空です。これは、次の場所で追跡され.hgsubstate
ます。
0000000000000000000000000000000000000000 common
0000000000000000000000000000000000000000 thirdparty
サブリポジトリにデータを入力するには
$ cd common
$ hg pull --update
$ cd ../thirdparty
$ hg pull --update
$ cd ..
$ hg commit -m "Updated subrepos"
これにより、2つのサブリポジトリの現在のチップチェンジセットIDで000...
行が更新されます。.hgsubstate
「project1」の将来のクローンは.hgsubstate
ファイルに気づき、サブリポジトリをそこに記載されているリビジョンに更新するようにします。