Perforce clientspec は、Perforce リポジトリのどの部分が Perforce クライアントに表示されるか (および同期されるか) を決定します。clientspec は、Perforce リポジトリ パスからローカル パスへのマッピングも提供します。
Perforce リポジトリの一部を選択的に含めることで、Perforce クライアントをプルーニングできます。例えば
//depot/main/path1/... //your-perforce-client/main/path1/...
//depot/main/path2/... //your-perforce-client/main/path2/...
//depot/main/path1/
and //depot/main/path2/
and notのみが含まれます//depot/main/path3/
。ご指摘のとおり、パスを明示的に除外することもできます。例えば
//depot/main/path1/... //your-perforce-client/main/path1/...
-//depot/main/path1/foo/... //your-perforce-client/main/path1/foo/...
サブディレクトリの下のファイル//depot/main/path1/
以外のすべてが含まれますfoo
。
Perforce リポジトリがどのように構造化されているか、および何を含める (または除外する) かによってgit-p4
、Perforce ツリーのどの部分をインポートするかを直接指定できる可能性があります。
git p4 clone --destination=/path/to/new/git/tree //depot/path1 //depot/path2
除外を使用する場合、または Perforce デポ パスをローカル パスにマップする方法を調整する場合は、オプションを追加する必要があり--use-client-spec
ます。.p4config
Git ツリーの親ディレクトリに以下を含むファイルを作成することで、どの Perforce クライアントを使用するかを構成できます。
P4CLIENT=YOUR_PERFORCE_CLIENT_NAME
次に、環境変数を設定します。
P4CONFIG=.p4config
これを行うと、現在のディレクトリで Perforce 構成データp4
のファイルが検索され.p4config
ます (そして、親ディレクトリが徐々に検索されます)。
インポートされるファイルは、Perforce clientspec に含まれるパスと、コマンドラインで明示的に指定されたパスの交差点になります。git p4 clone
(あなたが述べたように、git-p4 clone
パスにプレフィックスを付けることでパスを除外できます-
。ただし、これを行うことはお勧めしません。これは、これらのパスが最初のインポートでのみ除外されることを意味するためです。将来、そのパス内のファイルが Perforce で変更された場合、git p4 rebase
/を実行git p4 sync
すると、変更されたファイルが取得されます (コマンドラインで再度明示的に除外することを忘れない限り)。--use-client-spec
ただし、 を使用して最初にインポートすると、フラグが設定され、将来/.git/config
を使用するときに自動的に適用されるようになります。)git p4 rebase
git p4 sync
1 つの注意点は、いつか Perforce リポジトリの他の部分を含めたい場合に、選択的クローンを実行すると、さらに複雑になることです。それが必要な場合は、「初期クローン後の clientspec の拡張」に対する私の回答をgit-p4
参照してください。