Skip to content

feat: add mix githooks.install to activate the repo's git hooks - #51

Merged
bougyman merged 1 commit into
mainfrom
issue-50
Aug 10, 2026
Merged

feat: add mix githooks.install to activate the repo's git hooks#51
bougyman merged 1 commit into
mainfrom
issue-50

Conversation

@bougyman

Copy link
Copy Markdown
Member

Summary

Closes #50.

githooks/commit-msg exists and correctly calls ci/validate_conventional_commit.sh, but core.hooksPath was never actually configured on any local clone - the hook never fired, which is how fix!(docs)/docs!(licence) (wrong ! position) got committed without ever being caught before push.

Adds mix githooks.install (git config core.hooksPath githooks) and mentions it in the Readme's Development section so it's actually discoverable.

Related: main now also requires the Test and Validate Commit Subjects checks to pass before merge, with no admin override - so even if the local hook is skipped, CI backstops it.

Test plan

  • mix test - 182 passed
  • mix format --check-formatted - clean
  • Ran mix githooks.install for real, then fed a malformed subject (fix!(docs): ...) through the now-active githooks/commit-msg hook directly - correctly rejected
  • asciidoctor -o /dev/null Readme.adoc renders clean

🤖 Generated with Claude Code

githooks/commit-msg exists and correctly calls
ci/validate_conventional_commit.sh, but core.hooksPath was never
actually configured on any local clone - the hook never fired, which
is how fix!(docs)/docs!(licence) (wrong ! position) got committed
without ever being caught before push. Adds `mix githooks.install`
(git config core.hooksPath githooks) and mentions it in the Readme's
Development section.

Closes #50.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 10, 2026 02:28

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

Adds a discoverable, repo-local way to activate the existing githooks/commit-msg hook so Conventional Commit subject enforcement runs on contributors’ machines (not only in CI), addressing the gap where core.hooksPath was never set by default.

Changes:

  • Introduces mix githooks.install, which configures git config core.hooksPath githooks at the repository root.
  • Updates the Development section in Readme.adoc to instruct contributors to run the new task.

Reviewed changes

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

File Description
Readme.adoc Documents how to activate the repo’s git hooks via the new Mix task.
app/lib/mix/tasks/githooks.install.ex Adds a Mix task that sets core.hooksPath to githooks for the current clone.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread app/lib/mix/tasks/githooks.install.ex
@bougyman
bougyman merged commit 9b35472 into main Aug 10, 2026
3 checks passed
@bougyman
bougyman deleted the issue-50 branch August 10, 2026 02:35
bougyman pushed a commit that referenced this pull request Aug 10, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.8.2](v0.8.1...v0.8.2)
(2026-08-10)


### Features

* add mix githooks.install to activate the repo's git hooks
([#51](#51))
([9b35472](9b35472))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
This was referenced Aug 11, 2026
bougyman pushed a commit that referenced this pull request Aug 11, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.0.0](v1.0.0...v1.0.0)
(2026-08-11)


### ⚠ BREAKING CHANGES

* graduate to 1.0.0 - disable pre-major version bumping
([#70](#70))
* **cd:** parallelize Burrito target builds and fix Trivy/Podman image
scanning ([#68](#68))
* **ci:** rename release.yaml to main.yaml, workflow name to "main"
([#38](#38))
* add Readme/LICENSE, feat: wire up the issue list --project picker
([#12](#12))

### Features

* add mix githooks.install to activate the repo's git hooks
([#51](#51))
([9b35472](9b35472))
* **api:** add LinearCli.Api GraphQL client (Phase 1)
([723f3f6](723f3f6))
* **ci:** add a full SBOM - app deps, OTP/Elixir runtime, container OS
packages ([#54](#54))
([e296fdd](e296fdd))
* **cli:** add favorite teams/projects, filtering list views by them
([#61](#61))
([6c858d9](6c858d9))
* **cli:** add issue create/develop/pr/take/update write commands (Phase
6)
([1649618](1649618))
* **cli:** add profiles - default team/project stored in local SQLite
([#57](#57))
([554e336](554e336))
* **cli:** add project update - post a status update to a project
([#43](#43))
([30dc6dc](30dc6dc))
* **cli:** make version respect --output json
([#33](#33))
([b160aad](b160aad))
* **cli:** resolve bare issue numbers via active profile, favorited
teams, or a team prompt
([#65](#65))
([8b183da](8b183da))
* **cli:** support Ruby's short subcommand aliases
([#15](#15))
([9fca6b5](9fca6b5))
* initial commit with ash submodule
([c2ceafb](c2ceafb))
* **linear:** add Ash domain resources for
Issue/Project/Team/User/Label/WorkflowState/Comment (Phase 2)
([e2a27f3](e2a27f3))
* **oban:** add scheduled monthly project rollover (Phase 7)
([11afb43](11afb43))
* phase 4 from initial plan -&gt; complete
([012866e](012866e))
* phase 8 - packaging, releasing, and CI
([#1](#1))
([905c238](905c238))
* scaffold Elixir port and enforce conventional commits
([a4d03a0](a4d03a0))


### Bug Fixes

* **ci:** consolidate the release pipeline into one workflow/DAG
([ba821bb](ba821bb))
* **ci:** create releases as drafts so assets survive Immutable Releases
([#19](#19))
([8572623](8572623))
* **ci:** package release binaries with the wrapper scripts
([#24](#24))
([5fb24a4](5fb24a4))
* **ci:** rebuild the release pipeline to stop the version-bump runaway
loop ([#30](#30))
([c311fd4](c311fd4))
* **ci:** relabel the release PR as tagged after we tag it ourselves
([ab1408e](ab1408e))
* **ci:** skip commit-subject validation in the post-merge pipeline
([#41](#41))
([3d00a85](3d00a85))
* **cli:** reject unrecognized flags instead of treating them as issue
ids ([#2](#2))
([#4](#4))
([e697ff6](e697ff6))
* **deps:** update ash to a non-vulnerable version
([#63](#63))
([b838e2a](b838e2a))


### Performance Improvements

* **linear:** fan out find-by-ids and per-team project fetches (Phase 5)
([fb00153](fb00153))


### Documentation

* add Readme/LICENSE, feat: wire up the issue list --project picker
([#12](#12))
([eb42c69](eb42c69))


### Miscellaneous Chores

* **ci:** rename release.yaml to main.yaml, workflow name to "main"
([#38](#38))
([2581a40](2581a40))
* graduate to 1.0.0 - disable pre-major version bumping
([#70](#70))
([87a65ae](87a65ae))


### Continuous Integration

* **cd:** parallelize Burrito target builds and fix Trivy/Podman image
scanning ([#68](#68))
([5cc829a](5cc829a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
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.

Add a mix task to activate githooks (core.hooksPath was never actually set)

2 participants