perforce コマンドP4 where( Perforce Command Reference PDF ) を使用すると、指定したファイルのブランチ パス、ワークスペース パス、および完全なローカル パスが表示されます。
perforce が提供する公式の .net API を使用して、この機能 (具体的にはファイルの完全なローカル パス) にアクセスする方法を知りたいです。
perforce コマンドP4 where( Perforce Command Reference PDF ) を使用すると、指定したファイルのブランチ パス、ワークスペース パス、および完全なローカル パスが表示されます。
perforce が提供する公式の .net API を使用して、この機能 (具体的にはファイルの完全なローカル パス) にアクセスする方法を知りたいです。
.NET API で確立された接続オブジェクトが既にあると仮定して、これを試してください。
文字列[] ファイル = 新しい文字列[1];
files[0] = "//depot/Jam/MAIN/src/glob.c";
P4Command cmd = new P4Command(pRep, "where", true, files);
オプション opts = 新しいオプション();
// コマンドを実行して結果を取得する
P4CommandResult 結果 = cmd.Run(opts);
TaggedObjectList list = (results.TaggedOutput);
foreach (リスト内の TaggedObject obj)
{
foreach (obj.Keys の文字列)
{
文字列値 = "n/a";
obj.TryGetValue(s, out value);
Console.Out.WriteLine(s + " = " + 値);
}
}
これにより、次のような出力が得られます。
depotFile = //depot/Jam/MAIN/src/glob.c clientFile = //bruno_ws/Jam/MAIN/src/glob.c パス = C:\P4DemoWorkspaces\bruno_ws\Jam\MAIN\src\glob.c
より簡単な方法は、クライアント オブジェクトから関数 GetClientFileMappings() を使用することです。
ただし、非常に多数のファイル (100k 以上) をクエリする場合、関数がやや遅くなることがわかりました。それでも、反復してクエリを実行するのではなく、クエリをバッチ処理することを強くお勧めします。そうでなければうまくいきます。