Compare commits
1 Commits
fix/912
...
fix/cleanu
| Author | SHA1 | Date | |
|---|---|---|---|
| dc210580e2 |
@@ -168,3 +168,62 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
log "Script complete"
|
log "Script complete"
|
||||||
|
|
||||||
|
# ─── Stale Branch Cleanup ─────────────────────────────────
|
||||||
|
# Clean up branches from closed (unmerged) PRs and merged PRs
|
||||||
|
log "Checking for stale branches from closed/merged PRs..."
|
||||||
|
|
||||||
|
# Get all open PRs to avoid deleting active branches
|
||||||
|
OPEN_BRANCHES=$(curl -s -H "$AUTH" "$API/repos/$REPO/pulls?state=open&limit=100" | jq -r '.[] | .head.ref' | sort -u)
|
||||||
|
|
||||||
|
# Get all closed PRs (last 100)
|
||||||
|
CLOSED_PRS=$(curl -s -H "$AUTH" "$API/repos/$REPO/pulls?state=closed&limit=100")
|
||||||
|
|
||||||
|
if [ -n "$CLOSED_PRS" ] && [ "$CLOSED_PRS" != "null" ]; then
|
||||||
|
STALE_BRANCHES=$(echo "$CLOSED_PRS" | jq -r '.[] | select(.merged == false) | .head.ref' | sort -u)
|
||||||
|
MERGED_BRANCHES=$(echo "$CLOSED_PRS" | jq -r '.[] | select(.merged == true) | .head.ref' | sort -u)
|
||||||
|
|
||||||
|
STALE_COUNT=0
|
||||||
|
for branch in $STALE_BRANCHES; do
|
||||||
|
# Skip main/master/develop
|
||||||
|
case "$branch" in main|master|develop|HEAD) continue ;; esac
|
||||||
|
|
||||||
|
# SAFETY CHECK: Skip if branch is still used by an open PR
|
||||||
|
if echo "$OPEN_BRANCHES" | grep -q "^$branch$"; then
|
||||||
|
log "Skipping branch '$branch' - still has an open PR"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DRY_RUN" = "true" ]; then
|
||||||
|
log "DRY RUN: Would delete stale branch '$branch' (from closed unmerged PR)"
|
||||||
|
else
|
||||||
|
curl -s -X DELETE -H "$AUTH" "$API/repos/$REPO/branches/$branch" > /dev/null 2>&1 || true
|
||||||
|
log "Deleted stale branch: $branch"
|
||||||
|
fi
|
||||||
|
STALE_COUNT=$((STALE_COUNT + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
MERGED_COUNT=0
|
||||||
|
for branch in $MERGED_BRANCHES; do
|
||||||
|
case "$branch" in main|master|develop|HEAD) continue ;; esac
|
||||||
|
|
||||||
|
if echo "$OPEN_BRANCHES" | grep -q "^$branch$"; then
|
||||||
|
log "Skipping branch '$branch' - still has an open PR"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DRY_RUN" = "true" ]; then
|
||||||
|
log "DRY RUN: Would delete merged branch '$branch'"
|
||||||
|
else
|
||||||
|
curl -s -X DELETE -H "$AUTH" "$API/repos/$REPO/branches/$branch" > /dev/null 2>&1 || true
|
||||||
|
log "Deleted merged branch: $branch"
|
||||||
|
fi
|
||||||
|
MERGED_COUNT=$((MERGED_COUNT + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
log "Stale branch cleanup:"
|
||||||
|
log " Closed (unmerged) branches: $STALE_COUNT"
|
||||||
|
log " Merged branches: $MERGED_COUNT"
|
||||||
|
else
|
||||||
|
log "Could not fetch closed PRs for branch cleanup"
|
||||||
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user