perforce命令P4 where
(Perforce Command Reference PDF)将为我提供指定文件的分支路径,工作空间路径和完整本地路径。
我想知道如何使用perforce提供的官方.net API访问此功能(特别是文件的完整本地路径)。
答案 0 :(得分:1)
假设您已经在.NET API中建立了连接对象,请尝试以下方法:
string[] files = new string[1]; files[0] = "//depot/Jam/MAIN/src/glob.c"; P4Command cmd = new P4Command(pRep, "where", true, files); Options opts = new Options(); //run command and get results P4CommandResult results = cmd.Run(opts); TaggedObjectList list = (results.TaggedOutput); foreach (TaggedObject obj in list) { foreach (String s in obj.Keys) { String value = "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 path = C:\P4DemoWorkspaces\bruno_ws\Jam\MAIN\src\glob.c
答案 1 :(得分:0)
更简单的方法是使用客户端对象中的GetClientFileMappings()函数。
但是我发现在查询大量文件(100k +)时函数有点慢。我强烈建议您批量查询而不是迭代和查询。否则效果很好。