如何通过Perforce Perl API获取指定变更列表的文件列表?
获取Perforce指定变更列表的纯文件列表
命令行验证方法
如果需要先在命令行快速确认目标变更列表的文件,直接用以下命令,输出结果仅包含文件路径,无冗余信息:
p4 files @=123456
Perl API实现代码
使用Perl的P4模块(需提前安装),可以精准获取指定变更列表的文件并存入哈希:
use P4; # 初始化并连接Perforce my $p4 = P4->new(); $p4->connect() or die "连接Perforce失败: " . $p4->errors(); # 指定目标变更列表ID my $changelist = 123456; # 获取该变更列表的所有文件 my @file_results = $p4->files( "@=$changelist" ); # 将文件路径存入哈希(键为仓库文件路径,值可按需定义) my %cl_files; foreach my $file_entry (@file_results) { $cl_files{$file_entry->{'depotFile'}} = 1; } # 示例:遍历哈希输出文件 foreach my $depot_path (keys %cl_files) { print "$depot_path\n"; } $p4->disconnect();
关键说明
@=变更号是Perforce的专用语法,用于定位某变更列表包含的全部文件- P4模块返回的每个文件对象中,
depotFile字段对应仓库内的完整文件路径,直接提取即可满足哈希存储需求 - 这种方式完全规避了
p4 describe -s的冗余输出,只获取核心的文件列表数据
内容的提问来源于stack exchange,提问作者daveg
相关产品推荐
相关产品推荐

