Skip to content

Commit 3f3cfdb

Browse files
Merge pull request #26 from YASoftwareDev/release/v1.5.2
Release v1.5.2
2 parents 6027d79 + 34863a6 commit 3f3cfdb

5 files changed

Lines changed: 37 additions & 14 deletions

File tree

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ updates (`update.sh`), post-install test suite (`test.sh`), and CI matrix coveri
1313

1414
| File | Role |
1515
|------|------|
16+
| `get.sh` | curl-pipe bootstrap; auto-stashes local modifications on existing clones before pulling |
1617
| `install.sh` | Entry point — profile selection, module orchestration |
1718
| `update.sh` | Tool updates with `--check` mode and PATH shadow detection |
1819
| `test.sh` | Post-install validation (run after every install and update) |

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [1.5.2] - 2026-05-06
11+
12+
### Fixed
13+
- `get.sh`: on existing installs with local modifications, the installer now
14+
automatically stashes changes, pulls the latest, and restores the stash instead
15+
of aborting with a manual-steps error. Only aborts if the stash pop itself has
16+
merge conflicts (content disagreement requiring human judgment). Resolves #25.
17+
1018
## [1.5.1] - 2026-05-06
1119

1220
### Fixed

CLAUDE.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ install.sh entry point — profile selection, module orchestration
1515
update.sh managed tool updates with --check mode + PATH shadow check
1616
test.sh post-install validation suite (profile-aware)
1717
ci-local.sh local Docker matrix runner — mirrors GitHub CI matrix
18-
get.sh curl-pipe bootstrap (clones repo → runs install.sh)
18+
get.sh curl-pipe bootstrap (clones repo → runs install.sh);
19+
on existing clones auto-stashes local modifications, pulls,
20+
then restores the stash — only aborts on stash-pop conflicts
1921
Dockerfile bakes docker profile into an image at build time
2022
Dockerfile.nosudo parameterized no-sudo test image (two variants: forced/auto)
2123
lib/utils.sh shared logging, sudo detection, GitHub helpers, binary utils

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.5.1
1+
1.5.2

get.sh

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -175,20 +175,32 @@ if [ -d "$DEST/.git" ]; then
175175
_die "Repo at $DEST is in an unfinished merge/rebase state.\n Resolve it first: git -C '$DEST' status\n Then: bash '$DEST/install.sh' ${PROFILE:-workstation}"
176176
fi
177177

178-
# Local modifications would be overwritten by pull
178+
# Local modifications would be overwritten by pull — auto-stash, pull, restore
179179
if ! git -C "$DEST" diff --quiet HEAD 2>/dev/null; then
180-
_warn "Local modifications detected — cannot pull cleanly:"
180+
_warn "Local modifications detected — auto-stashing before pull:"
181181
git -C "$DEST" diff --name-only HEAD 2>/dev/null | while IFS= read -r f; do _warn " $f"; done
182-
_warn "Resolve manually, then run install.sh directly (get.sh is gone after curl-pipe):"
183-
_warn " git -C '$DEST' stash"
184-
_warn " git -C '$DEST' pull"
185-
_warn " git -C '$DEST' stash pop"
186-
_warn " # WARNING: if stash pop has conflicts, ~/.zshrc may break."
187-
_warn " # If that happens: exec bash (use bash until resolved)"
188-
_warn " # Accept upstream: git -C '$DEST' checkout -- <file>"
189-
_warn " # Then: git -C '$DEST' stash drop"
190-
_warn " bash '$DEST/install.sh' ${PROFILE:-workstation}"
191-
_die "Aborting — resolve local changes first."
182+
183+
if ! git -C "$DEST" stash 2>&1; then
184+
_die "git stash failed — resolve manually, then:\n bash '$DEST/install.sh' ${PROFILE:-workstation}"
185+
fi
186+
_ok "Local changes stashed"
187+
188+
if ! git -C "$DEST" pull --ff-only 2>&1; then
189+
git -C "$DEST" stash pop 2>/dev/null || true
190+
_die "Pull failed (stash restored) — resolve manually:\n git -C '$DEST' pull\n bash '$DEST/install.sh' ${PROFILE:-workstation}"
191+
fi
192+
_ok "Pulled latest"
193+
194+
if ! git -C "$DEST" stash pop 2>&1; then
195+
_warn "Stash pop has conflicts — your local changes conflict with what was pulled."
196+
_warn " See conflicts: git -C '$DEST' status"
197+
_warn " Accept upstream: git -C '$DEST' checkout -- <file>"
198+
_warn " Drop the stash: git -C '$DEST' stash drop"
199+
_warn " Then install: bash '$DEST/install.sh' ${PROFILE:-workstation}"
200+
_warn " If shell is broken: exec bash"
201+
_die "Resolve stash pop conflicts manually."
202+
fi
203+
_ok "Local changes restored after pull"
192204
fi
193205

194206
# Local commits ahead of upstream (clean tree but diverged)

0 commit comments

Comments
 (0)