You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取无任何changelist的Perforce depots列表及创建日期

查询无关联changelist的Perforce depot清单方案

有可行方案,直接用Perforce自带的原生命令就能实现,不需要安装第三方工具,最终输出可以直接拿到depot名称、对应创建日期两个要求的字段,具体逻辑和操作如下:

  • 核心判断逻辑:Perforce中如果一个depot下没有任何已提交(submitted)的changelist,对该depot根路径执行changelist查询会返回空结果;depot的创建日期直接存储在depot元数据中,可以直接拉取。
  • 前置校验:先确认当前登录的P4账号拥有所有depot的列表读取权限、以及对应depot路径的changelist查询权限,避免结果漏统。

具体操作命令

单depot快速校验

如果只需要排查个别depot,直接执行两条命令即可:

  1. 拉取depot元数据获取创建时间:执行p4 -ztag depot <目标depot名称>,返回结果里的Date字段就是depot创建时的Unix时间戳,转换为可读时间格式即可。
  2. 校验是否存在提交记录:执行p4 changes -s submitted //<目标depot名称>/...,如果返回结果为空,就说明这个depot从创建至今没有产生过任何已提交的changelist。

批量查询全量符合条件的depot

如果要一次性拉取所有符合要求的depot清单,Linux/macOS环境下直接在终端执行下面的shell脚本即可,输出结果会直接打印格式化后的depot名称和创建日期:

p4 -ztag depots | awk '/^Depot:/ {depot_name=$2} /^Date:/ {print depot_name","$2}' | while IFS=',' read -r dname ctimestamp; do
  submitted_count=$(p4 -F "%change%" changes -s submitted "//${dname}/..." | wc -l | tr -d '[:space:]')
  if [ "$submitted_count" -eq 0 ]; then
    format_date=$(date -d "@${ctimestamp}" "+%Y-%m-%d %H:%M:%S")
    echo "- Depot名称:${dname},创建日期:${format_date}"
  fi
done

补充说明:如果需要把待提交(pending)状态的changelist也纳入校验范围,只需要把脚本里的changes -s submitted参数改成changes即可,此时输出的是既没有已提交changelist、也没有任何待提交changelist关联的depot清单。
Windows PowerShell环境的实现逻辑完全一致,遍历p4 depots返回的depot列表,逐个统计changelist数量、拉取创建时间字段格式化输出即可,不需要额外安装插件。

内容的提问来源于stack exchange,提问作者Manu Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:27:20