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

如何在BitBucket Pipelines中获取上次推送后分支的所有变更文件列表

Bitbucket普通推送场景获取两次推送间所有变更文件解决方案

前置配置

Bitbucket Pipelines默认采用浅克隆,需要调整为完整克隆才能获取完整提交历史,在bitbucket-pipelines.yml中添加如下配置:

clone:
  depth: full

核心实现逻辑

Bitbucket针对推送触发的流水线,内置了BITBUCKET_PREVIOUS_COMMIT变量,存储推送前当前分支的远端HEAD哈希值,结合当前推送的最新commit哈希BITBUCKET_COMMIT,即可获取两次推送之间所有提交涉及的变更文件。

参考执行脚本

# 兼容分支首次推送的场景(首次推送时BITBUCKET_PREVIOUS_COMMIT为全0哈希)
if [[ $BITBUCKET_PREVIOUS_COMMIT == 0000000000000000000000000000000000000000 ]]; then
  # 首次推送获取全量文件列表
  CHANGED_FILES=$(git ls-files | sort -u)
else
  # 对比两次提交获取变更文件,自动去重,添加--diff-filter=d可排除已删除的文件
  CHANGED_FILES=$(git diff --name-only --diff-filter=d $BITBUCKET_PREVIOUS_COMMIT $BITBUCKET_COMMIT | sort -u)
fi

# 传入测试脚本
echo "$CHANGED_FILES" | ./你的测试脚本路径.sh

补充说明

  • 该方案仅适用于推送触发的流水线,手动触发的流水线不存在BITBUCKET_PREVIOUS_COMMIT变量,需额外添加变量存在性校验逻辑
  • 如果你的仓库提交量极大,完整克隆耗时过高,可将克隆深度调整为大于单次推送的最大提交数,不需要拉取全量历史

内容的提问来源于stack exchange,提问作者Tyler V.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:04