0

perforce コマンドP4 where( Perforce Command Reference PDF ) を使用すると、指定したファイルのブランチ パス、ワークスペース パス、および完全なローカル パスが表示されます。

perforce が提供する公式の .net API を使用して、この機能 (具体的にはファイルの完全なローカル パス) にアクセスする方法を知りたいです。

4

2 に答える 2

1

.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
于 2013-01-08T19:17:06.273 に答える
0

より簡単な方法は、クライアント オブジェクトから関数 GetClientFileMappings() を使用することです。

API定義はこちら

ただし、非常に多数のファイル (100k 以上) をクエリする場合、関数がやや遅くなることがわかりました。それでも、反復してクエリを実行するのではなく、クエリをバッチ処理することを強くお勧めします。そうでなければうまくいきます。

于 2015-01-28T22:19:28.193 に答える