我希望在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);
}
}
}
答案 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;
}