diff options
| author | Danilo M. <danix@danix.xyz> | 2026-07-08 11:45:00 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-07-08 11:45:00 +0200 |
| commit | 67d4196bb3c98b0f6c00e8e514d9060b1cf7be2f (patch) | |
| tree | 7fa81814653a6e613590262f2683b913acccf983 /CLAUDE.md | |
| parent | efeeeb045ee8f7d92bc718c40661df0f5fb070c7 (diff) | |
| download | mkhintfile-67d4196bb3c98b0f6c00e8e514d9060b1cf7be2f.tar.gz mkhintfile-67d4196bb3c98b0f6c00e8e514d9060b1cf7be2f.zip | |
fix: complete version-aware reconcile against real URL shapes; release v1.2.2v1.2.2
1.2.1 made the bundled-dep reconcile version-aware but _url_version
mis-parsed several real-world URL shapes, so 1.2.1 was never correct in
the field (found by running mkhint -C --force neovim against the live
0.12.4 hint).
_url_version now derives the version by stripping the URL's own github
repo name from the basename:
- dep names containing digits/dashes (lua-compat-5.3) parse correctly
instead of splitting the name as a version
- a bare-tag basename with no name prefix is taken as the whole version,
fixing package-rev suffixes (luv 1.52.1-0 was truncated to 0)
- non-github and the shared neovim/deps blob host fall back to the
trailing-version/sha heuristic
_url_repo is lowercased so JuliaStrings/utf8proc matches
juliastrings/utf8proc (github repos are case-insensitive); utf8proc had
reported no-match and appeared in the manifest-only FYI.
Verified against all 13 live neovim 0.12.4 bundled deps: all match and
report current, no false change, a real bump still detected. Adds
T-BM22 (one case per URL-shape class) and T-BM23 (case-insensitive
repo match); T-BM17 unchanged. 182 passed.
Bump MKHINT_VERSION and man title to 1.2.2, rebuild mkhint.1.gz.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -155,12 +155,18 @@ When adding new features, add a corresponding test case to `tests/mkhint_test.sh the upstream deps manifest (`NAME_URL`/`NAME_SHA256` pairs, e.g. neovim's `cmake.deps/deps.txt`), matches each extra `DOWNLOAD` line via `match_dep_url` (repo-path first, exact basename-stem fallback for blob - hosts). A matched line is rewritten only when its upstream *version* differs - (`_url_version` parses the version from each URL basename and normalizes it), - not when only the URL path shape differs, so a manifest's bare-tag - `archive/v0.26.7.tar.gz` and the hint's SBo-fetched + hosts; `_url_repo` is lowercased so a `JuliaStrings/utf8proc` hint matches a + `juliastrings/utf8proc` manifest — github repos are case-insensitive). A + matched line is rewritten only when its upstream *version* differs + (`_url_version`), not when only the URL path shape differs, so a manifest's + bare-tag `archive/v0.26.7.tar.gz` and the hint's SBo-fetched `archive/v0.26.7/tree-sitter-0.26.7.tar.gz` at the same version are treated as - current. Changed lines get their md5 recomputed; the report shows + current. `_url_version` derives the version by stripping the URL's own github + repo name from the basename (so digit/dash-containing dep names like + `lua-compat-5.3` parse), treats a bare-tag basename as the whole version + (package-rev suffixes like `1.52.1-0`), and falls back to a + trailing-version/sha heuristic for non-github and the shared `neovim/deps` + blob host. Changed lines get their md5 recomputed; the report shows `name old-ver -> new-ver`. Runs automatically when the primary changed this run, otherwise only with `--force` (check-only flag). `--new` on a listed package prints the reconcile report without changing the hint. Manifest deps |
