如何使用P4 .net API使用“P4 where”的功能

时间:2013-01-08 01:27:08

标签: .net api perforce p4api.net

perforce命令P4 wherePerforce Command Reference PDF)将为我提供指定文件的分支路径,工作空间路径和完整本地路径。

我想知道如何使用perforce提供的官方.net API访问此功能(特别是文件的完整本地路径)。

2 个答案:

答案 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()函数。

API definition here

但是我发现在查询大量文件(100k +)时函数有点慢。我强烈建议您批量查询而不是迭代和查询。否则效果很好。