Skip to content

GitPulse v0.0.4

Choose a tag to compare

@github-actions github-actions released this 04 Sep 01:16

Fixed

  • Storage report accuracy & hardening:

    • Premature truncation resolved: Raised per-directory entry limits inside build artifact directories from 4,000 to 100,000, preventing Cargo dependency directories (target/debug/deps) with > 4,000 files from prematurely tripping scan truncation.
    • Unix hard link deduplication: Scoped (st_dev, st_ino) tracking on Unix for files with nlink > 1, ensuring Cargo hard links (deps/libfoo-hash.a to libfoo.a) are counted exactly once, eliminating gigabytes of phantom disk usage.
    • Monolithic container roll-up: Container build directories (target, node_modules, .venv) roll nested build outputs (debug/build, .../out) up into the parent scope rather than fragmenting into dozens of child rows.
    • Source-tree false positive protection: Paths inside src/ no longer match generic build or cache directory names (e.g. src/lib/coverage remains recognized as source code rather than an unignored cache).
    • Single-pass worktree traversal: Merged large-file collection directly into the worktree walker using WorktreeWalkContext, eliminating the redundant second walk and halving disk I/O.
    • Developer and agent caches classified: Recognized .devcouncil, .gitnexus, .claude, .cursor, .agents, .gemini, and .antigravity under cache artifacts.
  • Windows: cloning a repository failed. The clone destination was resolved with canonicalize, which on Windows always answers with a verbatim \\?\C:\... path. git refuses that as a working tree (could not create work tree dir ...: Invalid argument), and the prefix leaked into the refusal text users saw. Resolution now produces a spelling external tools accept.

  • Windows: cloning into an existing directory resolved onto the source repository. The clone's directory name was derived by splitting the URL on / alone, so a local Windows path (C:\src\repo) survived whole and the drive-colon split returned a rooted \src\repo — and joining a rooted path discards the destination. Both path separators are now split on, and the derived name is guaranteed to be a single component.

  • Windows: external tools resolved to the wrong file. Tool lookup tried the bare program name before any executable suffix, so npm matched Node's extension-less shell script instead of npm.cmd and failed with "%1 is not a valid Win32 application". Suffixed spellings are now tried first, in the order Windows itself uses.

Changed

  • CI runs the Rust suite with --no-fail-fast. It previously stopped at the first failing test binary, so a failure in the library suite silently skipped every integration suite — 43 binaries that had never run on Windows at all — while reporting a single failure. A check that could not run must not read the same as one that passed.