Skip to content

fix: fail when no commits found in range#11

Draft
agherzan wants to merge 3 commits into
canonical:mainfrom
agherzan:ag/no-range-error
Draft

fix: fail when no commits found in range#11
agherzan wants to merge 3 commits into
canonical:mainfrom
agherzan:ag/no-range-error

Conversation

@agherzan

Copy link
Copy Markdown
Collaborator

Change from exit 0 to exit 1 when the specified range contains no commits. This helps catch configuration errors in CI where an empty range likely indicates incorrect base/head references.

Also change output from notice to error annotation for visibility.

@agherzan agherzan self-assigned this Jul 22, 2026
Copilot AI review requested due to automatic review settings July 22, 2026 22:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates gitlance to treat an empty commit range as an error (exit code 1) and increases CI visibility by emitting an error-level GitHub Actions annotation instead of a notice.

Changes:

  • Exit with status 1 when the resolved commit range contains no commits (previously exited 0).
  • Switch the empty-range annotation from ::notice:: to ::error::.
  • Update the integration test to expect failure for an empty range.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
src/main.rs Changes empty-range handling to emit an error annotation and exit non-zero.
tests/integration_tests.rs Updates the empty-range integration test to expect failure.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/main.rs Outdated
Comment thread tests/integration_tests.rs
agherzan added 3 commits July 23, 2026 01:03
Enables validation of commit messages before the git object exists,
allowing gitlance to work as a commit-msg hook. Comment lines are
ignored, matching how a commit message is interpreted.

The new mode/argument is mutually exclusive with the ref-based options
(--base, --head, --repo, --skip-merge-commits), which are only
meaningful when validating existing commits.

Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
When pushing a new branch, the pre-push hook derived its base from a
single remote's HEAD. If that remote was behind (e.g. a fork whose main
is a stale copy of upstream), it re-validated commits already reviewed
and merged elsewhere, and could reject a push over commits the author
never touched.

Base validation on every remote-tracking ref instead: a commit already
present on any remote has been published and does not need rechecking.

Excluding a set of refs rather than a single base also lets the root
commit be validated, which a single exclusive base can never reach.

Closes: canonical#10

Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>
Change from exit 0 to exit 1 when the specified range contains no
commits. This helps catch configuration errors in CI where an empty
range likely indicates incorrect base/head references.

Also change output from notice to error annotation for visibility.

Signed-off-by: Andrei Gherzan <andrei.gherzan@canonical.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Comment thread src/git.rs
Comment thread src/main.rs
@agherzan
agherzan marked this pull request as draft July 23, 2026 00:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants