fix(agents-tools): never block commits on missing bumper; robust .version parse
This commit is contained in:
@@ -1,3 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# agents-tools-version: 1
|
# agents-tools-version: 1
|
||||||
exec "$(git rev-parse --show-toplevel)/.agents-tools/version-bump" precommit
|
# Delegates to the repo's committed .agents-tools/version-bump. Guarded so a
|
||||||
|
# missing script or failed rev-parse never blocks the commit (always exit 0).
|
||||||
|
root="$(git rev-parse --show-toplevel 2>/dev/null)" || exit 0
|
||||||
|
[ -x "$root/.agents-tools/version-bump" ] && "$root/.agents-tools/version-bump" precommit
|
||||||
|
exit 0
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# agents-tools-version: 1
|
# agents-tools-version: 1
|
||||||
exec "$(git rev-parse --show-toplevel)/.agents-tools/version-bump" prepmsg "$1"
|
# Delegates to the repo's committed .agents-tools/version-bump. Guarded so a
|
||||||
|
# missing script or failed rev-parse never blocks the commit (always exit 0).
|
||||||
|
root="$(git rev-parse --show-toplevel 2>/dev/null)" || exit 0
|
||||||
|
[ -x "$root/.agents-tools/version-bump" ] && "$root/.agents-tools/version-bump" prepmsg "$1"
|
||||||
|
exit 0
|
||||||
|
|||||||
@@ -87,6 +87,34 @@ git log -1 --pretty=%s | grep -qF 'add specs (v1.1.0)' || fail "e2e structure me
|
|||||||
echo z > specs/z.md
|
echo z > specs/z.md
|
||||||
git add -A; git commit -q -m "edit spec"
|
git add -A; git commit -q -m "edit spec"
|
||||||
[ "$(cat .version)" = 1.1.1 ] || fail "e2e content: want 1.1.1 got $(cat .version)"
|
[ "$(cat .version)" = 1.1.1 ] || fail "e2e content: want 1.1.1 got $(cat .version)"
|
||||||
|
git log -1 --pretty=%s | grep -qF 'edit spec (v1.1.1)' || fail "e2e content message: $(git log -1 --pretty=%s)"
|
||||||
|
|
||||||
cd /; rm -rf "$r"
|
cd /; rm -rf "$r"
|
||||||
echo "e2e OK"
|
echo "e2e OK"
|
||||||
|
|
||||||
|
# ── corrupt .version recovers to a clean baseline ────────────────────────────
|
||||||
|
r="$(new_repo)"; cd "$r"
|
||||||
|
mkdir -p plans; : > plans/.gitkeep
|
||||||
|
echo 1.0.0 > .version
|
||||||
|
git add -A; "$SCRIPT" precommit; git commit -q -m init
|
||||||
|
printf '1.\n' > .version # partial/corrupt
|
||||||
|
echo hi > plans/a.md
|
||||||
|
git add -A; "$SCRIPT" precommit
|
||||||
|
[ "$(cat .version)" = 1.0.1 ] || fail "corrupt recovery: want 1.0.1 got $(cat .version)"
|
||||||
|
cd /; rm -rf "$r"
|
||||||
|
echo "corrupt-recovery OK"
|
||||||
|
|
||||||
|
# ── hook never blocks a commit when version-bump is missing ──────────────────
|
||||||
|
r="$(new_repo)"; cd "$r"
|
||||||
|
mkdir -p .agents-tools/hooks
|
||||||
|
cp "$HERE/hooks/pre-commit" .agents-tools/hooks/pre-commit
|
||||||
|
cp "$HERE/hooks/prepare-commit-msg" .agents-tools/hooks/prepare-commit-msg
|
||||||
|
chmod +x .agents-tools/hooks/pre-commit .agents-tools/hooks/prepare-commit-msg
|
||||||
|
# note: .agents-tools/version-bump intentionally NOT copied
|
||||||
|
git config core.hooksPath .agents-tools/hooks
|
||||||
|
echo hi > file.txt
|
||||||
|
git add -A
|
||||||
|
git commit -q -m "no bumper present" || fail "missing version-bump blocked the commit"
|
||||||
|
git rev-parse -q --verify HEAD >/dev/null || fail "commit did not happen"
|
||||||
|
cd /; rm -rf "$r"
|
||||||
|
echo "hook-resilience OK"
|
||||||
|
|||||||
@@ -38,11 +38,14 @@ bump_precommit() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local major minor patch
|
local ver major minor patch
|
||||||
IFS=. read -r major minor patch < "$vfile"
|
ver="$(head -n1 "$vfile")"
|
||||||
case "$major$minor$patch" in
|
if printf '%s' "$ver" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+$'; then
|
||||||
*[!0-9]*|"") major=1; minor=0; patch=0 ;;
|
IFS=. read -r major minor patch <<< "$ver"
|
||||||
esac
|
else
|
||||||
|
# Corrupt/partial .version (e.g. "1." or "abc") → reset to a clean baseline.
|
||||||
|
major=1; minor=0; patch=0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$(read_dirset HEAD)" != "$(read_dirset INDEX)" ]; then
|
if [ "$(read_dirset HEAD)" != "$(read_dirset INDEX)" ]; then
|
||||||
minor=$((minor + 1)); patch=0
|
minor=$((minor + 1)); patch=0
|
||||||
|
|||||||
Reference in New Issue
Block a user