キルはcurrently not support subrepos that use nested URLs on the serverです。これは、あなたが働いて両方の次のURLを持つことができないことを意味します
http://server/kiln/somepath/project1
http://server/kiln/somepath/project1/thirdparty
だからべきセットアップ窯ので、サーバー上リポジトリを持っていること:
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
を、それがsubrepositoriesのリンクに気づくと表示されます。ただし、サブレポジトリは、がサーバーにネストされています。したがって、サーバー上には何もproject1/thirdparty
パスがありません。
あなたがそれを望むことははっきりしていません。コラボレーションしていくつかの共通コードベースを使用するいくつかのプロジェクトがある場合、 "project1"と "project2"がこの共通コードベースの互いの変更を取得するようにします。したがって、両方のプロジェクトのサブプロジェクトcommon
がhttp://server/kiln/somepath/common
からプッシュアンドプルすることは非常に便利です。
Mercurialでは、normally recommendのファイルで、.hgsub
ファイルにcommon = common
という形式のパスを使用しています。つまり、サーバーはネストされたリポジトリをサポートする必要があります。 Kilnがネストされたreposをサポートしていない場合は、代わりにフルパスを使用できます。
サブリポジトリを最初に設定したときは、それらを手動で更新する必要があることに注意してください。したがって、上記の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
あなたはこれが2 subreposのための現在の先端チェンジIDに.hgsubstate
で000...
行を更新
$ cd common
$ hg pull --update
$ cd ../thirdparty
$ hg pull --update
$ cd ..
$ hg commit -m "Updated subrepos"
を行うsubrepositoriesを移入するには。 "project1"の将来のクローンは.hgsubstate
ファイルに気づき、ここに記載されているリビジョンにサブレポジトリを更新してください。
@Martin Geisler - 編集していただきありがとうございます。 – unsynchronized
問題はありません、私はちょっときちんと整えてよかった! :) –