0

キルンを使用して、この質問への回答の指示に従おうとしています。

次のように整理できるようにしたいと思います。

  • /somepath/thirdpartyキルンリポジトリ「サードパーティ」にマップされ、さまざまなコードが含まれています
  • /somepath/common キルンリポジトリ「共通」にマップされ、私が書いた共有コードが含まれています

  • /somepath/project1Kiln リポジトリ「project1」にマップ
  • /somepath/project1/thirdparty上記のサードパーティのブランチにマップ
  • /somepath/project1/common上記の共通のブランチにマップします

  • /somepath/project2Kiln リポジトリ「project1」にマップ
  • /somepath/project2/thirdparty上記のサードパーティの別のブランチにマップします
  • /somepath/project2/common上記の共通の別のブランチにマップします

指示に従ってファイルを作成し、.hgsubKiln に追加/プッシュすると、Kiln Web ファイル ビューアで Kiln ファイルを表示できなくなりました。Kiln の「過熱」に関するあいまいなメッセージが表示されました :-) さらに、正しい場所にサブフォルダーが自動的に作成されましたが、ファイルが取り込まれませんでした (プルが失敗した可能性があります)。

Kiln を使用して、以前にこのようなことを試みた人はいますか?

共通のコードを使用して多くのアプリを開発する (そして最終的にはライブラリをオープン ソースとしてリリースする可能性がある) ため、個別のリポジトリで管理したいと考えています。ただし、一部のプロジェクトはエンド クライアント向けであるため、上記の内容を含む単一のリポジトリをクライアントに提供できるようにする必要があります。

4

1 に答える 1

2

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ファイルに気づき、サブリポジトリをそこに記載されているリビジョンに更新するようにします。

于 2012-01-14T08:51:12.687 に答える