Skip to content

gix-commitgraph v0.40.0

Choose a tag to compare

@Byron Byron released this 25 Sep 08:30
· 13 commits to main since this release
37860b3

Bug Fixes

  • Keep rust workspace tests inside disposable repositories and isolated environments

    Direct Git launches inherited repository selectors and user configuration even
    when tests supplied a fixture working directory. Tests of default-environment
    APIs and local Git transports also shared the runner's environment. A few
    journey tests wrote beneath source directories or used the source checkout as
    the repository under test.

    Use the shared gix-testtools Git command builder for subprocess setup, isolated
    repository options for fixtures, and isolated child processes where the real
    environment-reading API must be exercised. Scope CWD changes, copy the fixture
    used by an object-write test, and run shell journeys through jtt run. Keep
    journey worktrees and example output within their disposable sandboxes and
    replace the attributes checkout test with a representative fixture repository.
    Prompt examples also run in isolated children and must build successfully; the
    old tests could ignore build failures and execute stale cached binaries.

    The affected Rust crate suites, internal test-tool build, and max-pure journey
    suite pass from a source copy without Git metadata. Signing and Git-daemon
    checks use only disposable keys, repositories, and local sockets.

  • preserve I/O errors for missing graph paths

    An absent .git/objects/info directory made Graph::at() return an
    error without its filesystem cause. The optional-cache fallback in
    Repository::commit_graph_if_enabled() could not recognize NotFound,
    so operations such as merge_base(HEAD, HEAD) failed despite having all
    required commit objects.

    Inspect the path with one fallible metadata read and preserve its I/O
    error in the chain. Missing paths now reach the existing fallback, while
    other metadata failures remain distinguishable. Cover the error source
    and merge-base behavior with an empty and then absent objects/info.
    Both regression tests failed before the fix.

    Git reference: commit-graph.c at 1630431f326e15fcde608827b5ff38422528eb59
    uses open_commit_graph(), load_commit_graph_one(), and
    prepare_commit_graph() to fall back when no graph can be opened.
    With Git 2.50.1 (Apple Git-155), git -c core.commitGraph=true merge-base
    returns the expected commits for HEAD HEAD and HEAD HEAD^ with either
    an empty or an absent objects/info directory.

Changed (BREAKING)

  • raise MSRV to Rust 1.88

    The newly published dua-core 3.3 release used by linked-worktree removal
    requires Rust 1.88, so raise every workspace crate and the advertised badge
    together.

    Keep the MSRV checks buildable by selecting the latest sysinfo and rusqlite
    release lines that support Rust 1.88.

Commit Statistics

  • 11 commits contributed to the release over the course of 33 calendar days.
  • 34 days passed between releases.
  • 3 commits were understood as conventional.
  • 1 unique issue was worked on: #2978

Commit Details

view details
  • #2978
    • Preserve I/O errors for missing graph paths (72f3e8f)
  • Uncategorized
    • Merge pull request #2847 from GitoxideLabs/gix-error-completion (6356013)
    • Use borrowed error inspection throughout the workspace (daf73b5)
    • Merge pull request #2990 from GitoxideLabs/various-improvements (c609062)
    • Keep rust workspace tests inside disposable repositories and isolated environments (4e0f8ff)
    • Merge pull request #2979 from GitoxideLabs/absent-objects-info-dir-fix (dfc8e8c)
    • Merge pull request #2949 from GitoxideLabs/error-conversion-review (a095334)
    • Raise MSRV to Rust 1.88 (4b42e0c)
    • Merge pull request #2955 from GitoxideLabs/transport-url-encoding (7e35849)
    • Release gix-path v0.12.6, gix-error v0.3.2, gix-command v0.10.1, gix-transport v0.59.2 (888677a)
    • Merge pull request #2933 from GitoxideLabs/report-august (b8914ff)