33 lines
1.2 KiB
Bash
33 lines
1.2 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
OUT_FILE="${1:-changed_files.txt}"
|
|
touch "$OUT_FILE"
|
|
|
|
# Fetch quietly; repo might be shallow in CI
|
|
git fetch --all --quiet || true
|
|
|
|
if [[ -n "${CHANGE_TARGET:-}" ]]; then
|
|
# Multibranch PR build: compare against target branch
|
|
git fetch origin "${CHANGE_TARGET}" --quiet || true
|
|
BASE="origin/${CHANGE_TARGET}"
|
|
echo "[INFO] PR build detected, diffing against ${BASE}..."
|
|
git diff --name-only --diff-filter=ACMRT "${BASE}...HEAD" > "$OUT_FILE" || true
|
|
else
|
|
# Branch build: diff from previous successful commit (best effort), else last commit
|
|
if [[ -n "${GIT_PREVIOUS_SUCCESSFUL_COMMIT:-}" ]]; then
|
|
BASE="${GIT_PREVIOUS_SUCCESSFUL_COMMIT}"
|
|
echo "[INFO] Diffing against previous successful commit ${BASE}..."
|
|
git diff --name-only --diff-filter=ACMRT "${BASE}" "HEAD" > "$OUT_FILE" || true
|
|
else
|
|
echo "[INFO] No previous successful commit found; using last commit diff (HEAD~1..HEAD)..."
|
|
git diff --name-only --diff-filter=ACMRT "HEAD~1" "HEAD" > "$OUT_FILE" || true
|
|
fi
|
|
fi
|
|
|
|
# Clean blank lines, ensure file exists
|
|
sed -i '/^\s*$/d' "$OUT_FILE" || true
|
|
touch "$OUT_FILE"
|
|
|
|
COUNT=$(wc -l < "$OUT_FILE" | tr -d ' ')
|
|
echo "[INFO] Changed files: ${COUNT}" |