サブリポジトリと、サブリポジトリをチームのワークフローで機能させる方法を理解していると考え続けていますが、基本的なワークフローを実装しようとするたびに、何かが正しく機能しないため、明らかにわかりません。
私はサブレポについてオンラインで読むことができるものはほとんどすべて読んでおり、人々が投稿するすべての些細な例に従いますが、もっと複雑なことをしようとすると. あるいは、私はそれを完全によく理解しているのかもしれませんが、私がやろうとしていることはうまく機能するものではありません.
邪魔にならない基本を取得しましょう。リモートの「祝福された」リポジトリのコレクションがあるとしましょう。
http://acme.com/BlessedRepos/ProjA
/LibA
/LibB
そこで、/ProjA
toC:\ProjA
と clone /LibA
toC:\ProjA\LibA
と/LibB
toのクローンを作成し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/LibB
http://acme.com/Dev/ProjA
.hgsub
これで、ファイルを としてセットアップできましLibA = ../LibA
た。これは最初は機能しますがProjA
、祝福されたレポから のクローンを作成する場合、LibA
またはを取得できません。これLibB
は、ローカルのレポが見つかることを期待してLibA
おり、クローンLibB
しているレポの兄弟であるためProjA
だと思います。私が意味するのは、にクローンを作成している場合http://acme.com/BlessedRepos/ProjA
、C:\Test\ProjA
既存のリポジトリが にあると予想されるため、失敗するということC:\Test\LibA
です。
hgsub を としてセットアップすることもできますLibA = LibA
。LibA
ただし、祝福されたスペースにネストされていないため、祝福されたリポジトリにプッシュしようとすると、これを行うと失敗しますProjA
。私はそれらを作成することができましたが、私は に戻ることは決してありませhttp://acme.com/BlessedRepos/LibA
んhttp://acme.com/BlessedRepos/ProjA/LibA
。
.hgsub
ファイル内のすべての値を「祝福された」リモートの場所から「dev」および「QA」の場所に変更するスクリプトを実行する場合、最初の方法が機能することは間違いありません。しかし、これは理想的とは言えません。
そう。このことを本当に理解している人がいる場合は、私がどこで間違ったのか、またはサブレポを使用して元のワークフローをどのように達成できるかを説明してもらえますか、それともそうではないものを求めていることを確認してくださいサブレポに最適です。状況を理解するのに役立つ場合、おそらく 15 ~ 20 の「製品/ソリューション」と 50 の「共有」プロジェクトのようなものがあります。15 ~ 20 個の製品のいずれでも、ソリューション内の 50 個の共有プロジェクトのうち N 個を利用できます。