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 以上) をクエリする場合、関数がやや遅くなることがわかりました。それでも、反復してクエリを実行するのではなく、クエリをバッチ処理することを強くお勧めします。そうでなければうまくいきます。