perforce 命令P4 where
(Perforce 命令参考 PDF)将为我提供指定文件的分支路径、工作区路径和完整的本地路径。
我想知道如何使用 perforce 提供的官方 .net API 访问此功能(特别是文件的完整本地路径)。
perforce 命令P4 where
(Perforce 命令参考 PDF)将为我提供指定文件的分支路径、工作区路径和完整的本地路径。
我想知道如何使用 perforce 提供的官方 .net API 访问此功能(特别是文件的完整本地路径)。
假设您已经在 .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
一种更简单的方法是使用客户端对象中的函数 GetClientFileMappings()。
但是,当查询大量文件(100k+)时,我发现该函数有点慢。我仍然强烈建议您批量查询而不是迭代和查询。否则效果很好。