図書館BとCは、私は ライブラリBを使用していますが、それ以外のすべてのプロジェクトAと提携 ではないことをプロジェクトDを開始したい場合、私は何をし んプロジェクトAの サブディレクトリである必要がありますか?
任意のプロジェクトは、同時に他のプロジェクトのsubrepositoryとして独立と両方が存在することができます。ワークフローを提案して説明します。
まず第一に、あなたのプロジェクトの各(A、B、C)のどこかに公開されて祝福されたリポジトリが必要です。
をあなた自身のサーバー上でhgwebdirを実行し、または使用することができBitbucketまたはKilnのようなMercurialホスティングサービスのこの方法で開発者は、変更をプル/プッシュするための中心的な権限を持ち、バックアップを作成することができます。
今、あなたは、2つの異なる方法で作業するこれらのリポジトリのクローンを作ることができます。
直接プロジェクトをクローンします。たとえば:
hg clone http://bitbucket.org/LachlanG/LibraryB C:\Lib\LibraryB
および/またはを以下の内容でProjectA
のルートに.hgsub
ファイルを置くことによってsubrepository定義を作成します。
libraries/libraryB = http://bitbucket.org/LachlanG/LibraryB
libraries/libraryC = http://bitbucket.org/LachlanG/LibraryC
これらsubrepository定義はMercurialのを伝えることプロジェクトAがクローンされるときはいつでも、ライブラリBとライブラリCのクローンをlibraries
フォルダに入れなければなりません。
プロジェクトAで作業してコミットしている場合は、libraries/LibraryB
とlibraries/LibraryC
の変更もコミットされます。 Mercurialは、.hgsubstate
ファイルのProject Aで使用されているライブラリのバージョンを記録します。その結果、先週の出来事を確認するプロジェクトの旧バージョンへのhg update
には、対応するライブラリのバージョンも表示されます。タグをつける必要はありません:-)
hg push
プロジェクトAが祝福されたリポジトリに変更された場合、Mercurialはサブリポジトリの変更を最初に自分の起源にプッシュするようにします。そうすれば、未発表のライブラリの変更に依存するプロジェクトの変更を誤って公開することはありません。
すべてをローカルに保つ場合は、サブリポジトリ定義のURLの代わりに相対パスを使用しても、このワークフローを使用できます。
ここでは、「これらのサブリポジトリ定義では、projectAがクローンされるたびに、LibraryBとLibraryCのクローンをlibrariesフォルダに配置する必要があります。 – LachlanG
それだけのフォルダ、:libraries/libraryB = http://bitbucket.org/LachlanG/LibraryBの左側の部分は、右側のクローンが –
@ LachlanGになる場所です:ProjectAのルートに表示されます例えば、 'C:\ Dev \ ProjectA \ libraries \'のようなクローンです。 –