Environment
- graphifyy 0.8.16 (pip)
- git 2.x with husky 9 (
core.hooksPath = .husky/_)
- macOS Darwin 25.3.0, Python 3.11
Symptom
With graphify's post-commit/post-checkout hooks correctly installed (markers present in .husky/post-commit and .husky/post-checkout, hooks fire on commit/checkout, rebuild log confirms execution), graphify hook status reports:
post-commit: not installed (hook exists but graphify not found)
post-checkout: not installed (hook exists but graphify not found)
Root cause
Husky 9 sets core.hooksPath = .husky/_. _hooks_dir(root) in graphify/hooks.py correctly returns .husky/_ per the fix from #401. But husky's layout puts the wrapper there:
.husky/_/post-commit → #!/usr/bin/env sh\n. "$(dirname "$0")/h"
.husky/post-commit → actual user hook with `# graphify-hook-start` marker
_check() in hooks.py:296 opens hooks_dir / name = .husky/_/post-commit, which is the two-line husky shim. The marker isn't there, so status reports "not installed" even though the chain .husky/_/post-commit → .husky/_/h → .husky/post-commit is wired up and active.
Reproduction
git init demo && cd demo
pnpm dlx husky init # or any husky 9 install
graphify hook install
graphify hook status # reports "not installed" despite working hooks
Suggested fix
In _check(), when hooks_dir.name == "_" and hooks_dir.parent.name == ".husky", also check hooks_dir.parent / name for the marker before reporting "not installed".
Related: #401 (partial husky support added in 0.4.19).
Environment
core.hooksPath = .husky/_)Symptom
With graphify's post-commit/post-checkout hooks correctly installed (markers present in
.husky/post-commitand.husky/post-checkout, hooks fire on commit/checkout, rebuild log confirms execution),graphify hook statusreports:Root cause
Husky 9 sets
core.hooksPath = .husky/_._hooks_dir(root)ingraphify/hooks.pycorrectly returns.husky/_per the fix from #401. But husky's layout puts the wrapper there:_check()inhooks.py:296openshooks_dir / name=.husky/_/post-commit, which is the two-line husky shim. The marker isn't there, so status reports "not installed" even though the chain.husky/_/post-commit → .husky/_/h → .husky/post-commitis wired up and active.Reproduction
Suggested fix
In
_check(), whenhooks_dir.name == "_"andhooks_dir.parent.name == ".husky", also checkhooks_dir.parent / namefor the marker before reporting "not installed".Related: #401 (partial husky support added in 0.4.19).