質問

私は答えの指示に従おうとしています この質問, 、kiを使用します。

次のように物事を手配できるようにしたい:

  • /somepath/thirdparty KILNリポジトリ「ThirdParty」にマップし、各種コードが含まれています
  • /somepath/common KILNリポジトリ「共通」へのマップと、私が書いた共有コードが含まれています

  • /somepath/project1 KILNリポジトリ「Project1」へのマップ
  • /somepath/project1/thirdparty 上記のサードパーティのブランチへのマップ
  • /somepath/project1/common 上記のCommonのブランチへのマップ

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

私が作成したときにそれを見つけました .hgsub 指示されて追加/kiに追加/プッシュしたファイルは、Kiln WebファイルビューアーのKILNファイルを表示できなくなりました。KILNの「過熱」に関するあいまいなメッセージが表示されました。正しい場所、彼らはファイルを入力していませんでした(おそらくプルが失敗したため)。

誰かがkiを使って以前にこのようなことを試しましたか?

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

役に立ちましたか?

解決

キルンはそうします 現在、サーバーでネストされたURLを使用するサブレポスをサポートしていません. 。これは、次の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

それをキルンに押し戻すと、サブレポジトリーのリンクが表示され、表示されます。ただし、サブレポジトリー wont サーバーにネストされます。だから何もありません project1/thirdparty サーバー上のパス。

また、あなたがそれを望むことは明らかではありません。いくつかのプロジェクトを協力して共通のコードベースを使用する場合、「project1」と「project2」がこの共通コードベースに互いの変更を取得する必要があります。だから、それは非常に便利です common 両方のプロジェクトでSubrepoプッシュとプルから http://server/kiln/somepath/common.

水銀で、私たち 通常はお勧めします フォームのパスを使用すること 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"

これは、を更新します 000... ラインイン .hgsubstate 2つのサブレポスの現在のチップ変更セットIDを使用します。 「Project1」の将来のクローンは気づきます .hgsubstate ファイルし、そこに記載されている改訂にサブレポスを更新してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top