From e6ace5942b25dbc5dc62c905c2bc7287ffa02e27 Mon Sep 17 00:00:00 2001 From: Roland Date: Sun, 5 Jul 2026 13:02:58 -0600 Subject: [PATCH] Disambiguate 'git checkout release' in upgrade.sh. Same fix install.sh received in bf88ac9f: on a box with no local release branch (installed before that patch), the tracked release/ directory makes a bare `git checkout -f release` fail with "could be both a local file and a tracking branch", aborting upgrades. `checkout -f -B origin/` is unambiguous and already resets the branch to origin, replacing the separate reset --hard. Co-Authored-By: Claude Fable 5 --- upgrade.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/upgrade.sh b/upgrade.sh index ee88e9bd..77a120ad 100755 --- a/upgrade.sh +++ b/upgrade.sh @@ -119,9 +119,10 @@ fi # Signature verified, safe to apply. # Force the checkout so local working-tree changes (e.g. app/package-lock.json -# rewritten by npm install during a prior upgrade) cannot abort the switch; the -# following reset --hard discards them anyway. -(cd /opt/wrolpi && git checkout -f "${BRANCH}" && git reset --hard origin/"${BRANCH}") || exit 4 +# rewritten by npm install during a prior upgrade) cannot abort the switch. +# Use `checkout -B origin/` so the ref can never be mistaken for a path. A tracked `release/` +# directory otherwise collides with the `release` branch name, making a bare `git checkout release` ambiguous. +(cd /opt/wrolpi && git checkout -f -B "${BRANCH}" "origin/${BRANCH}") || exit 4 # Verify HEAD again after checkout in case the branch was swapped between fetch and checkout. if ! git -C /opt/wrolpi verify-commit HEAD 2>&1; then