如何获取指定用户指定日期范围的Perforce变更列表详情(CSV格式)
收集指定用户指定日期范围的Perforce变更列表并导出为CSV
需求说明
需要收集指定用户在指定日期范围(例如:2022年6月1日至2022年12月25日)内的Perforce变更列表详情,并导出为CSV格式。导出的CSV每条记录需包含以下字段:
- 序号(S.No)
- Perforce用户名
- 变更列表编号
- 提交日期
- 工作空间
- 描述
示例数据
- Perforce用户名:dary.spitzer,变更列表编号:123456,提交日期:02-08-2022,工作空间:Daryl_Spitzer_Workspace,描述:修复告警问题
- Perforce用户名:shadkam.san,变更列表编号:78910,提交日期:24-12-2022,工作空间:Shadkam_san_Workspace,描述:新增PostgreSQL支持
实现方法
方法一:命令行+脚本批量生成(适用于类Unix系统)
- 确保已配置Perforce客户端环境(
p4命令可用,已完成服务器地址配置与登录) - 修改并执行以下bash脚本,生成目标CSV:
#!/bin/bash # 配置参数,根据实际需求修改 TARGET_USER="dary.spitzer" START_DATE="2022/06/01" END_DATE="2022/12/25" OUTPUT_CSV="pcl_changes.csv" # 写入CSV表头 echo "S.No,Perforce用户名,变更列表编号,提交日期,工作空间,描述" > $OUTPUT_CSV # 遍历符合条件的变更列表,提取详情并写入CSV p4 changes -u $TARGET_USER -s submitted @$START_DATE,@$END_DATE | awk '{print $2}' | while read -r CL; do DESC=$(p4 describe -s $CL) USER=$(echo "$DESC" | grep "^User:" | awk '{print $2}') # 转换提交日期为DD-MM-YYYY格式 SUBMIT_DATE=$(echo "$DESC" | grep "^Date:" | awk '{print $3,$2,$4}' | xargs -I {} date -d {} +"%d-%m-%Y") WORKSPACE=$(echo "$DESC" | grep "^Client:" | awk '{print $2}') # 处理描述字段的换行与逗号,避免CSV格式错乱 DESCRIPTION=$(echo "$DESC" | sed -n '/^Description:/,$p' | sed '1d' | tr '\n' ' ' | sed 's/,/ /g') SNO=$(($(wc -l < $OUTPUT_CSV))) echo "$SNO,$USER,$CL,$SUBMIT_DATE,$WORKSPACE,$DESCRIPTION" >> $OUTPUT_CSV done echo "CSV文件已生成:$OUTPUT_CSV"
方法二:P4V图形化客户端导出(适用于全平台)
- 打开P4V客户端,进入「变更」视图
- 设置筛选条件:指定目标用户、提交日期范围,筛选出符合要求的变更列表
- 选中所有目标变更列表,右键选择「导出」,选择CSV格式
- 在导出设置界面勾选需要的字段(序号、用户名、变更列表编号、提交日期、工作空间、描述),确认导出即可
内容的提问来源于stack exchange,提问作者user4948798
相关产品推荐
相关产品推荐

