0

perforce 命令P4 wherePerforce 命令参考 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 = new Options();

            //运行命令并获取结果
            P4CommandResult 结果 = cmd.Run(opts);
            TaggedObjectList 列表 = (results.TaggedOutput);
            foreach(列表中的 TaggedObject obj)
            {
                foreach(obj.Keys 中的字符串 s)
                {
                    字符串值 = "n/a";
                    obj.TryGetValue(s, out value);
                    Console.Out.WriteLine(s + " = " + value);
                }
            }

这会给你这样的输出:

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 回答