0

サブリポジトリと、サブリポジトリをチームのワークフローで機能させる方法を理解していると考え続けていますが、基本的なワークフローを実装しようとするたびに、何かが正しく機能しないため、明らかにわかりません。

私はサブレポについてオンラインで読むことができるものはほとんどすべて読んでおり、人々が投稿するすべての些細な例に従いますが、もっと複雑なことをしようとすると. あるいは、私はそれを完全によく理解しているのかもしれませんが、私がやろうとしていることはうまく機能するものではありません.

邪魔にならない基本を取得しましょう。リモートの「祝福された」リポジトリのコレクションがあるとしましょう。

http://acme.com/BlessedRepos/ProjA
                            /LibA
                            /LibB

そこで、/ProjAtoC:\ProjAと clone /LibAtoC:\ProjA\LibA/LibBtoのクローンを作成しC:\ProjA\LibBます。.hgsubファイルを作成します

LibA = http://acme.com/BlessedRepos/LibA
LibB = http://acme.com/BlessedRepos/LibB

私はすべてをコミットします。その後、押すことができProjA、すべてが順調です。

だから今、私のチームの誰かがクローン/PrjoAに行くことができ、サブレポとしてもC:\dev\ProjAダウンLibAします。LibBこの人は、私と同じように「祝福されたレポ」から簡単にプッシュ/プルできます。これまでのところとても良い。

今、私は言います: OK、ProjA チーム、祝福されたレポへのプッシュをやめてください。今から、次の場所にある ProjA dev および ProjA QA リモート リポジトリに変更をプッシュしてください。

http://acme.com/Dev/ProjA
http://acme.com/QA/ProjA

ここで停止します。にプッシュしようとしても、 をプッシュするだけhttp://acme.com/Dev/ProjAで、 の目的の場所ではなく、祝福されたリポジトリの元の場所にプッシュされます。/ProjA/ProjA/LibA/ProjA/LibBhttp://acme.com/Dev/ProjA

.hgsubこれで、ファイルを としてセットアップできましLibA = ../LibAた。これは最初は機能しますがProjA、祝福されたレポから のクローンを作成する場合、LibAまたはを取得できません。これLibBは、ローカルのレポが見つかることを期待してLibAおり、クローンLibBしているレポの兄弟であるためProjAだと思います。私が意味するのは、にクローンを作成している場合http://acme.com/BlessedRepos/ProjAC:\Test\ProjA既存のリポジトリが にあると予想されるため、失敗するということC:\Test\LibAです。

hgsub を としてセットアップすることもできますLibA = LibALibAただし、祝福されたスペースにネストされていないため、祝福されたリポジトリにプッシュしようとすると、これを行うと失敗しますProjA。私はそれらを作成することができましたが、私は に戻ることは決してありませhttp://acme.com/BlessedRepos/LibAhttp://acme.com/BlessedRepos/ProjA/LibA

.hgsubファイル内のすべての値を「祝福された」リモートの場所から「dev」および「QA」の場所に変更するスクリプトを実行する場合、最初の方法が機能することは間違いありません。しかし、これは理想的とは言えません。

そう。このことを本当に理解している人がいる場合は、私がどこで間違ったのか、またはサブレポを使用して元のワークフローをどのように達成できるかを説明してもらえますか、それともそうではないものを求めていることを確認してくださいサブレポに最適です。状況を理解するのに役立つ場合、おそらく 15 ~ 20 の「製品/ソリューション」と 50 の「共有」プロジェクトのようなものがあります。15 ~ 20 個の製品のいずれでも、ソリューション内の 50 個の共有プロジェクトのうち N 個を利用できます。

4

1 に答える 1

1

欠けている重要な部分は、サーバー上に複数のコピーを持たなくても、サーバー上でLibAおよびリポジトリを複数回公開できることです。詳細については、サブレポに関する別の質問に対する私の回答を参照LibBしてください。

また、そのような問題が発生した場合は、#mercurial までご連絡ください。StackOverflowに長い記事を書くよりもはるかに優れています。StackOverflow は Mercurial コミュニティの場所ではないからです。私たちが持っているメーリングリストを使用することもできます。

于 2011-09-23T13:55:27.870 に答える