2

我希望检测到文件不同版本的行更改,我的问题是,当我尝试获取文件的不同版本时,我总是得到最后一个版本,我该如何继续获取不同的版本

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);
                }





            }


        }
4

2 回答 2

1

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

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

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

将“p4 filelog”(找出哪些版本对应于哪些更改)和“p4 diff2”(计算两个版本之间的差异)放在一起将为您提供很多有用的信息。

或者做我做的事情:不要做任何这些事情,安装 P4V,并使用“延时视图”。这是一个漂亮的可视化工具,可以让探索文件的历史变得简单。

于 2013-03-19T01:44:02.440 回答
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;
}
于 2013-03-19T09:01:56.750 回答