寻找文件的变化

时间:2013-03-18 16:13:43

标签: c# perforce p4api.net

我希望在perforce中检测文件的不同版本的行已更改我的问题是,当我试图获取文件的不同版本时,我总是得到最后一个版本我如何才能继续获取不同的版本

String password = "*****";
String ws_client = "****";

        Repository rep;
        P4Server ps = new P4Server(conStr, user, password, ws_client);
        Server server = new Server(new ServerAddress(conStr));
        rep = new Repository(server);
        rep.Connection.UserName = user;
        Options options = new Options();

        Console.WriteLine(options.ToString());
        Client c = new Client();

        options["Password"] = password;
        rep.Connection.Client = new Client();
        rep.Connection.Connect(options);
        rep.Connection.Login(password, options);
        Console.WriteLine(rep.ToString());

      string text1="";
        string text2="";
        P4Command cmd = new P4Command(ps);
        string[]cmdargs= new string[1];
        cmdargs[0] = "";
        Console.WriteLine(cmd.ToString());
        Console.WriteLine(ps.ToString());
        Console.WriteLine(server.ToString());

        // *********************************************************************

        #region mrigla2 using filehistory class

        FileSpec filespecs = new FileSpec(FileSpec.DepotSpec("//obms/Dot-NET/Main/FixDepthSource/SLC_FDS/clsFixEventsSource.vb").DepotPath, Revision.Head);
        Options opt = new Options();
       opt.Add("-m", "");


        IList<FileHistory> filehistories = new List<FileHistory>();
        filehistories = rep.GetFileHistory(new Options(), filespecs);
        if (filehistories != null)
        {
            foreach (FileHistory fh in filehistories)
            {

                string p = fh.DepotPath.Path;

                string dpath = "//obms/Dot-NET/Main/FixDepthSource/SLC_FDS/clsFixEventsSource.vb";
                if (p==dpath)
                {
                    Console.WriteLine("Client name:" + fh.ClientName);
                    Console.WriteLine("Description:" + fh.Description);
                    Console.WriteLine("username:" + fh.UserName);
                    Console.WriteLine("Date:" + fh.Date);

                    Console.WriteLine("changelist:" + fh.ChangelistId);
                    directoriesfile.Filedirectory fsd = Program.getpaths(p, ps); 
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.WriteLine("******************revision:" + fh.Revision+"**********************");
                    if (fh.Revision == 6)
                    {  text1 = System.IO.File.ReadAllText(fsd.localPath); }

                    if (fh.Revision == 5)
                    {text2 = System.IO.File.ReadAllText(fsd.localPath); }

                    Console.BackgroundColor = ConsoleColor.Black;
                    affichcontentFile(fsd.depotPath, ps, fsd.localPath);
                    Console.WriteLine("Action:" + fh.Action);
                }





            }


        }

2 个答案:

答案 0 :(得分:1)

要获取文件内容的历史记录,请使用“p4 annotate”。

要获取文件的历史记录(而不是其内容),请使用“p4 filelog”。

要获得文件的两个指定版本之间的差异,请使用“p4 diff2”。

将'p4 filelog'(以确定哪些版本对应哪些更改)和'p4 diff2'(计算两个版本之间的差异)放在一起将为您提供更多有用的信息。

或做我做的事:不做任何这些事情,安装P4V,并使用'Time Lapse View'。它是一个漂亮的可视化工具,可以简单地探索文件的历史。

答案 1 :(得分:1)

   FileSpec fso = new FileSpec(FileSpec.DepotSpec(fsd.depotPath).DepotPath, Revision.Head);
                        IList<FileSpec> fsos = new List<FileSpec>();
                        fsos.Add(fso);
                        Options opts = new Options(); opts.Add("-a", "");
                        IList<FileAnnotation> fas = rep.GetFileAnnotations(fsos, opts);
                        foreach (FileAnnotation fa in fas)
                        {
                            Console.BackgroundColor = ConsoleColor.Yellow;
                            lines5+= fa.Line;
                            Console.BackgroundColor = ConsoleColor.Black;

                        }