2011-06-27 6 views
5

ファイルやディレクトリをperforceで複数のローカルコピーにマップできるかどうかを知りたいです。PERFORCEでファイルやディレクトリを複数回マップできますか?

私はP4Vがそれを可能にすることを知っていますが、私はクライアントから非常に奇妙な動作に遭遇しましたが、これは動作しないと思われます。

私はこれらのファイルを変更するつもりはないので、自分のソースツリーを構築するのに必要なディレクトリ構造を再作成するためにこれを必要とします(変更する必要がある場合は巨大なブランチを作成したくありませんほんのわずかなファイルだけでなく、追加のワークスペースを作成したくないということもあります。

+0

クライアント仕様の抜粋を追加し、あなたが見た「奇妙な動作」について説明できますか? – jhwist

答えて

5

悪いことにつながるため、許可されていません。デポ・ファイルは1つのローカル・ロケーションにマッピングすることができ、その逆も可能です。 2つの異なるデポ・フォルダを同じローカル・フォルダにマップできますが、ローカル・フォルダ内のファイルが1つのデポ・ロケーションのみに移動するようにする必要があります(まあ、競合する初期のマッピングは無視されます)。

実際に修正するまで、Perforceはシャドウコピーを作成するため、ブランチを「大きく」することはできません。一般的には、ツリー全体を分岐する必要があります。次に、ブランチごとにワークスペース(望ましい)を設定するか、すべてをマップするワークスペース(まだ実行可能)を作成できます。

+0

おそらく、PERFORCEのチームは、500.000を超えるファイルと30GBを超える巨大なリポジトリを真剣に考えなかったでしょう。 – sorin

+2

彼らはそれを考慮しました。そして、あなたが遭遇する複数の問題があります。デポ・ファイルが2つの異なるローカル・ロケーションにあり、そのうちの1つを同期すると、PERFORCEはそれらが両方とも同期していると考えます。ファイルを追加し、クライアントマッピングが2つの可能なデポの場所を示している場合、PERFORCEはどこにファイルを置くべきですか? – JasonMArcher

+0

PERFORCEの人々はシンボリックリンクやハードリンクの概念に慣れていないようです。 – sorin

4

(ごめんなさい - 作業スペースを切り替える必要はないと思ったのですが...なぜ時間がかかりすぎると思うか分かりますか?p4vでは、接続メニューの「お気に入り接続」を設定できますホットキーでより速くできると思います。また、複数のp4vインスタンスを開くこともできます)。

マッピングを行うための新しいワークスペースを作成するだけですか?ファイルを変更するつもりがない場合は、最も簡単な方法です。新しいワークスペースを作成し、ワークスペースマッピング内で必要な変更を適用するだけです。例:

//depot/src/... //my-test-workspace/src_from_depot/... 
//depot/doc/... //my-test-workspace/doc_from_depot/... 

私たちのワークスペースのルートにsrc_from_depotdoc_from_depotフォルダにsrcとドキュメントフォルダを配置します。私はちょうどあなたが通常働いているものとは異なる場所にワークスペースのルートを置いています。そして、あなたのニーズに合うように変更されたディレクトリ構造で通常作業する場所から隔離されたコピーがあります。

2

実際の問題のように聞こえるのは、ワークスペースを切り替えるのにかかる時間かもしれません。それが速ければ、ブランチごとに別々のワークスペースを維持できます。

次のリリースでは、インプレースブランチスイッチングを行う方が簡単です。つまり、1つのワークスペースを維持し、作業中にブランチからブランチに切り替えることができます。 p4 syncコマンドは、実際に異なるワークスペース内のファイルのみを更新するための新しいオプションを追加します。したがって、ブランチが大規模(> 500kファイル、> 30GBデータ)であっても、2つのブランチ間で10ファイルだけが異なる場合は、ワークスペースをあるブランチから別のブランチに移動すると、それらの10ファイルが更新されます。それは大きな時間節約になるはずです。

これが役立つかどうかわかりませんが、言及する価値はあると思いました。

1

この問題も発生しました。私は、複数のブランチに共通のファイル/ディレクトリを持っています。共通ファイル/ディレクトリは、コンパイルのために各ブランチの特定の構造体に存在する必要があります。

私のために働いた解決策は、共通ファイル/ディレクトリをブランチの別の場所に配置することでした。これにより、PERFORCEの1:1マッピング要件が維持されます。

次に、コンパイルの目的で共通のファイル/ディレクトリを各ブランチに象徴的にリンクします。

関連する問題