我希望能够输出任何给定的挂起更改列表的文件。p4 api 中唯一看起来很接近的属性是 Changelist.Files,但这会返回 FileMetaData 列表,而不是文件本身。
另一个可能相关或不相关的有趣事情是,在运行时......
Console.WriteLine(changelist);
...我得到了更改列表的描述,例如客户端、用户、状态等,但在“文件”字段中,从未列出任何文件。不确定这是否是因为文件尚未添加到软件仓库,但感谢您的帮助!
我希望能够输出任何给定的挂起更改列表的文件。p4 api 中唯一看起来很接近的属性是 Changelist.Files,但这会返回 FileMetaData 列表,而不是文件本身。
另一个可能相关或不相关的有趣事情是,在运行时......
Console.WriteLine(changelist);
...我得到了更改列表的描述,例如客户端、用户、状态等,但在“文件”字段中,从未列出任何文件。不确定这是否是因为文件尚未添加到软件仓库,但感谢您的帮助!
这是最终为我工作的代码:
var changes = rep.GetChangelists(new Options(ChangesCmdFlags.FullDescription, null, -1, ChangeListStatus.Pending, con.UserName));
foreach (var change in changes)
{
Console.WriteLine(change.Id);
GetOpenedFilesOptions getOpenedFiles = new GetOpenedFilesOptions(GetOpenedFilesCmdFlags.None, change.Id.ToString(), con.Client.Name, con.UserName, -1);
IList<Perforce.P4.File> fileList = rep.GetOpenedFiles(null, getOpenedFiles);
foreach (var f in fileList)
{
Console.WriteLine(f);
}
}
这将遍历待处理的更改列表并输出它们的 ID# 和文件名。GetOpenedFilesOptions 的参数允许您将搜索限制为特定的客户端、用户或两者。此外,知道您可以通过在 rep.GetChangelists 中包含 FileSpec 参数来进一步限制您的搜索,这可能会有所帮助。