fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) - #1075
Conversation
…ag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reached
Next review available in: 51 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe ChangesGit identity bootstrap for release tagging
Estimated code review effort: 1 (Trivial) | ~5 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request integrates a shared git-identity helper into the release script and invokes it before creating annotated tags, preventing failures on bare GitHub-hosted runners that lack a configured git identity. A corresponding test has also been added to verify the integration. The feedback suggests making the script's path resolution more robust by using "cd -P --" and "pwd -P", and declaring the path variable as "readonly".
There was a problem hiding this comment.
Pull request overview
Fixes cut-release.sh failing on GitHub-hosted runners when cutting this-repo (local) annotated tags due to missing user.name/user.email, by wiring in the shared git identity helper right before git tag -a.
Changes:
- Source
scripts/lib/git-identity.shfromscripts/cut-release.shand invokesetup_git_identityimmediately before creating the local annotated release tag. - Add a Bats regression test asserting
setup_git_identityis available after sourcingcut-release.sh.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| scripts/cut-release.sh | Sources the shared git identity helper and sets a tagger identity before local annotated tag creation to prevent “empty ident name” failures on runners. |
| tests/test_cut_release.bats | Adds a regression guard ensuring the git identity helper is wired when cut-release.sh is sourced. |
Dev-Lead — waiting on PR blockers (intent: review-changes)PR: #1075 |
|
Note @don-petry I reviewed this PR and no code changes were needed, but it still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews), so I cannot mark it done yet. I'll re-check automatically. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@tests/test_cut_release.bats`:
- Around line 17-24: The current test only verifies that setup_git_identity
exists after sourcing cut-release.sh, so it does not protect the this-repo
annotated-tag flow from regressions. Update the test in test_cut_release.bats to
exercise the actual this-repo path in scripts/cut-release.sh by either invoking
main with stubs for git/gh and asserting setup_git_identity runs before git tag
-a configures user.name/user.email, or by asserting the source order around the
this-repo tag branch. Reference setup_git_identity, main, and the this-repo tag
path so the guard fails if the helper call is removed.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 421eb963-fba8-4728-933b-b847dd7c2425
📒 Files selected for processing (2)
scripts/cut-release.shtests/test_cut_release.bats
Dev-Lead — fix-reviews (applied)Changes committed and pushed. |
|
Dev-Lead — waiting on PR blockers (intent: review-changes)PR: #1075 |
|
Note @don-petry I reviewed this PR and no code changes were needed, but it still has blocking checks or reviews (failing or cancelled checks, or changes-requested reviews), so I cannot mark it done yet. I'll re-check automatically. |
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>
…ag cut (#1069) (#1075) * fix(cut-release): set a git identity before the this-repo annotated-tag cut (#1069) The armed autocut cut auto-rebase v2.1.1 and dependency-audit v2.1.1 fine (cross-repo, via gh api) but dev-lead's cut failed: fatal: empty ident name (for <runner@...>) not allowed dev-lead is the one THIS_REPO agent, so its cut goes through local git (`git tag -a`, an annotated tag), which needs a tagger identity — and a GitHub-hosted runner has none. Cross-repo cuts use gh api (App identity) and are unaffected. Fix: source the shared scripts/lib/git-identity.sh and call setup_git_identity right before `git tag -a` in the this-repo path. +regression guard that the helper is wired. 50/50 cut-release tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(reviews): address review comments [skip ci-relay] --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: donpetry-bot <281750570+donpetry-bot@users.noreply.github.com>



Bug (caught by the armed autocut)
The first armed
autocutrun cutauto-rebase v2.1.1+dependency-audit v2.1.1successfully (cross-repo, viagh api), but dev-lead's cut failed:dev-leadis the one THIS_REPO agent, so its cut goes through local git (cut-release.sh→git tag -a, an annotated tag), which needs a taggeruser.name/user.email. A GitHub-hosted runner has none. Cross-repo agents cut viagh api(App identity), so they're unaffected — which is exactly why only dev-lead failed. Armed, the timer would retry + fail every 4h.Fix
cut-release.shnow sources the sharedscripts/lib/git-identity.shand callssetup_git_identityimmediately before the localgit tag -a. Verified locally: resolves todonpetry-bot/281750570+donpetry-bot@users.noreply.github.com. Sourcing is side-effect-free, so the test source-guard contract holds. +1 regression guard (helper is wired). 42/42 cut-release tests pass.Validation
Acceptance = re-dispatch
autocutafter merge and confirmdev-lead v1.5.1cuts (the same run that already succeeded for the two cross-repo agents). Will confirm on merge.Refs: #1069 (autocut) · #959/#992 (cut-release cross-repo/promote).
🤖 Generated with Claude Code
Summary by CodeRabbit
Bug Fixes
Tests