From 67d4196bb3c98b0f6c00e8e514d9060b1cf7be2f Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 8 Jul 2026 11:45:00 +0200 Subject: fix: complete version-aware reconcile against real URL shapes; release v1.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 --- CLAUDE.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'CLAUDE.md') diff --git a/CLAUDE.md b/CLAUDE.md index 77af699..16876c3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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 -- cgit v1.2.3