feat(git-release-beta): ✨ add gitutils scripts migrated from devcontainer-features - #3
Merged
Merged
Conversation
…er-features Move the ~32 git-* scripts formerly under devcontainer-features' src/gitutils/bin/ into individual workspace packages here, mirroring the migration common-utils already went through. One source of truth for the script implementations now; gitutils keeps only the config/alias wiring and git-flow install/configure lifecycle. Also switches this repo's own release-main.yml to the thin-wrapper pattern calling tomgrv/actions' new release-promote.yml reusable workflow, dogfooding the same release path every consumer repo now uses. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dau8uW2rrctkyAxngdR1ix
6 tasks
Merged
5 tasks
tomgrv/actions restructured release-promote from a workflow_call reusable workflow into a composite action (release-promote/action.yml). Update this repo's release-main.yml to match: checkout, then `uses: tomgrv/actions/release-promote@ref` as a normal step, instead of delegating the whole job via workflow_call. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dau8uW2rrctkyAxngdR1ix
8 tasks
git-release-beta/git-release-prod call `gv -showvariable MajorMinorPatch`, which hardcodes `-config ".gitversion"` -- this repo never had the file (no devcontainer here to deploy it via the gitversion feature's configure step). Without it, the first live release has no defined bump-message rules. Content matches tomgrv/actions/.gitversion, the same rules used across the rest of the family. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dau8uW2rrctkyAxngdR1ix
tomgrv
marked this pull request as ready for review
September 3, 2026 15:45
tomgrv
added a commit
to tomgrv/devcontainer-features
that referenced
this pull request
Sep 3, 2026
…rv/scripts, remove pecl (#143) ## Summary Part of a coordinated consistency pass across this repo, `tomgrv/actions` (#77, merged, released as v2.22.0), `tomgrv/scripts` (#3, merged, released as v0.3.0), and `perspikapps/vps` (#10). - **gitutils migration**: `src/gitutils/bin/`'s ~32 `git-*` scripts now live in `tomgrv/scripts` as individual packages (tomgrv/scripts#3) — one source of truth, mirroring the exact move `common-utils` already made. `install.sh` now bootstraps `zz_use` and pulls them in; `gitutils` keeps only the config/alias wiring and git-flow install/configure lifecycle. - **Shared release workflow**: `src/gitutils/stubs/.github/workflows/release-main.yml` (the actual template every consumer repo's copy is stub-deployed from) now checks out the repo and calls `tomgrv/actions`' new `release-promote` composite action (tomgrv/actions#77), pinned to `v2.22.0`, pulling `git-release-beta`/`git-release-prod` from `tomgrv/scripts@v0.3.0`. This repo's own root `.github/workflows/release-main.yml` is redeployed from that same stub, since this repo dogfoods its own features. - **Removes `pecl` entirely** (rather than bringing it to v8 parity) — it was already flagged in `docs/reviews/2026-08-repo-review.md` §2.5 as the one feature diverging from the standard `install-feature` pattern. `CLAUDE.md`'s "minimal reference" pointer moves to `src/scripting/`. All other references cleaned up; the historical audit doc's findings are left as-is with a dated addendum note rather than rewritten. - **Stale internal `dependsOn` pins**: 7 features' own `dependsOn` blocks still pinned `common-utils:7`/`gitutils:7`/`gitversion:7` even though those targets have been on major 8 for a while — bumped all to `:8`. - **Stale README self-install snippets**: every feature's own README Quick Start snippet (plus the two in root `README.md`) still showed its pre-v8 self-install version — bumped to `:8` (left `scripting:1` alone, since that one's genuinely major v1). - **VS Code tasks**: the stub's "🎈 Beta"/"🚀 Prod" local-CLI tasks are dropped now that release is fully automated via GitHub's "Run workflow" button. ## Fixed during review - `validate-pr-title` failed on the original PR title (`feat(scope)!: ...`) — `devmoji`'s autocorrection inserts two emoji back-to-back for that breaking-change position, and commitlint's parser chokes on the result. Dropped the `!` from the title; the breaking-change signal is still carried by the commit's `BREAKING CHANGE:` footer. - `release-promote` was originally a `workflow_call` reusable workflow; restructured into a composite action per explicit direction, so it composes as a normal step instead of taking over the whole job. It went through several more live-verified fixes upstream (sibling-action resolution, a missing GitVersion toolchain, a missing git-flow install) before `tomgrv/scripts`' and `tomgrv/actions`' own real releases succeeded — see tomgrv/actions#77 for the full history. ## Cross-repo dependency `install.sh`'s `zz_use` calls and the release-main stub's `scripts-ref`/`uses:` refs are now pinned to the released tags (`tomgrv/scripts@v0.3.0`, `tomgrv/actions/release-promote@v2.22.0`) — both sibling PRs have merged and tagged. ## Test plan - [x] `bats src/gateway/tests src/common-utils/tests` — all 24 pass (unaffected by this change, run as a regression check) - [x] Every touched `devcontainer-feature.json` validated as parseable JSON - [x] `install.sh` syntax-checked (`sh -n`) - [x] Workflow YAML and `tasks.json` files parse cleanly - [x] `npx prettier --check` clean on all changed files - [x] `scripts-ref`/`uses:` pinned to released tags 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01Dau8uW2rrctkyAxngdR1ix --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: bot <bot@example.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Part of a coordinated consistency pass across
tomgrv/devcontainer-features,tomgrv/actions,tomgrv/scripts, andperspikapps/vps. Companion PRs: tomgrv/actions#77, tomgrv/devcontainer-features#143, perspikapps/vps#10.git-*scripts formerly underdevcontainer-features/src/gitutils/bin/into individual workspace packages here (/{run.sh,package.json,README.md,test.bats}), mirroring the exact migrationcommon-utilsalready went through. One source of truth for the script implementations now, fetched viazz_useinstead of duplicated per consumer.release-main.ymlto calltomgrv/actions' newrelease-promotecomposite action as a step, dogfooding the same release path every consumer repo now uses..gitversionconfig file at repo root.git-release-beta/git-release-prodcallgv -showvariable MajorMinorPatch, which hardcodes-config ".gitversion"— this repo never had that file (no devcontainer here to deploy it via thegitversionfeature's configure step). Content matchestomgrv/actions/.gitversion, the same bump-message rules used across the rest of the family.Cross-repo dependency
tomgrv/actions'release-promoteaction (this PR's release-main.yml step depends on it, including its newsetup-gitversionsub-step — see tomgrv/actions#77) anddevcontainer-features'gitutilsfeature (now depends on the packages added here) are being updated in sibling PRs on the same branch name. Until those merge and tag, the workflow points attomgrv/actions@claude/multi-repo-consistency-release-7se0jy— marked with aTODOto pin to a released tag afterward. This repo's ownrelease-main.ymlhas a chicken-and-egg problem releasing itself (it needs its owngit-release-beta/git-release-prodbefore any tag of this repo exists) — the operational plan for the actual release run pinsscripts-refto the merge commit SHA for that one bootstrap run, then updates it to the real tag afterward.Test plan
npx bats --recursive .— all 68 tests pass (32 new + 36 existing)run.shverifiedsh -nclean via itstest.batsnpx prettier --checkclean on all new/changed filesuses:ref to a released tag once this merges and tags🤖 Generated with Claude Code
https://claude.ai/code/session_01Dau8uW2rrctkyAxngdR1ix