OSXにMercurial/Kilnサブレポスをセットアップします
-
28-10-2019 - |
質問
私は答えの指示に従おうとしています この質問, 、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
ファイルし、そこに記載されている改訂にサブレポスを更新してください。