Skip to content

Commit 7ad433f

Browse files
committed
fix: prefer main/master over origin/HEAD for squash detection
When a bare repo is cloned from a feature branch, origin/HEAD points to that feature branch. This caused the squash-merge detection to compare against the wrong branch. Now we prefer origin/main or origin/master over origin/HEAD since those are almost always the actual default branches for squash merges.
1 parent 0ef5f48 commit 7ad433f

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/node/runtime/SSHRuntime.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,14 +1087,15 @@ export class SSHRuntime implements Runtime {
10871087
# Get current branch for better error messaging
10881088
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
10891089
1090-
# Get default branch (try origin/HEAD, fallback to main, then master)
1091-
DEFAULT=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
1092-
if [ -z "$DEFAULT" ]; then
1093-
if git rev-parse --verify origin/main >/dev/null 2>&1; then
1094-
DEFAULT="main"
1095-
elif git rev-parse --verify origin/master >/dev/null 2>&1; then
1096-
DEFAULT="master"
1097-
fi
1090+
# Get default branch (prefer main/master over origin/HEAD since origin/HEAD
1091+
# might point to a feature branch in some setups)
1092+
if git rev-parse --verify origin/main >/dev/null 2>&1; then
1093+
DEFAULT="main"
1094+
elif git rev-parse --verify origin/master >/dev/null 2>&1; then
1095+
DEFAULT="master"
1096+
else
1097+
# Fallback to origin/HEAD if main/master don't exist
1098+
DEFAULT=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
10981099
fi
10991100
11001101
# Check for squash-merge: if all changed files match origin/$DEFAULT, content is merged

0 commit comments

Comments
 (0)