github GitoxideLabs/gitoxide gix-config-v0.61.0
gix-config v0.61.0

7 hours ago

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.

  • track semantic emptiness across continuations
    A bunch of refactoring, and more white-space and continuation related conformance with Git.

    Quote delimiters do not append bytes to Git's parsed value, so a raw non-empty
    continuation chunk may still leave the value empty. Track logical bytes and open
    quote state when deciding whether continuation indentation is significant.

  • don't indent a value that starts on a continuation line
    git discards whitespace for as long as the value it has accumulated is
    still empty, so the indentation of the line a value starts on is
    insignificant — whether that is the line with the = on it, or a later
    line reached through a \ continuation. parse::from_bytes::value() only
    applied this to the first line: after a continuation it set value_start
    to the first byte of the next line, so the indentation became part of the
    value.

    Given this .git/config:

    [alias]
    	lg = \
    		log --oneline --graph

    git config --get alias.lg reports log --oneline --graph, while
    File::raw_value("alias.lg") reported \t\tlog --oneline --graph. The
    leading tabs are silently carried into whatever runs the alias, and the
    same happens to any continued value written in this shape, such as a
    core.pager set over two lines.

    value() now emits that indentation as Event::Whitespace for as long as
    every chunk seen so far has been empty — the very sequence that
    Event::ValueNotDone already documents ("A Newline event usually
    follows, followed by either ValueDone, Whitespace, or another
    ValueNotDone"). Because the events keep the bytes, to_bstring() still
    round-trips the file unchanged, and every consumer already ignores
    Whitespace when concatenating value chunks.

    Indentation that follows actual content is untouched, matching git:
    k = abc\ + \n\tdef stays abc\tdef, and multi-line aliases that begin
    on the = line keep their interior whitespace.

Changed (BREAKING)

  • migrate errors to gix-error

    rubberstamp

  • 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

  • 20 commits contributed to the release over the course of 33 calendar days.
  • 34 days passed between releases.
  • 5 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Merge pull request #2847 from GitoxideLabs/gix-error-completion (6356013)
    • Use borrowed error inspection throughout the workspace (daf73b5)
    • Migrate errors to gix-error (7670cef)
    • Merge pull request #2993 from youdie006/fix-blank-space-character-classes (65c5dfe)
    • Review (0695cd5)
    • Merge pull request #2990 from GitoxideLabs/various-improvements (c609062)
    • Keep rust workspace tests inside disposable repositories and isolated environments (4e0f8ff)
    • Merge pull request #2984 from justonemorenight/fix/config-path-tilde-parity (92b6508)
    • Auto-review (2742f05)
    • Review (181297c)
    • Merge pull request #2964 from GitoxideLabs/error-conversion-review (36b6310)
    • 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 #2950 from jaideeppyne/fix/config-continuation-indentation (2f154e2)
    • Refactor config parsing to advance input slices (26e8c68)
    • Track semantic emptiness across continuations (01e9d06)
    • Don't indent a value that starts on a continuation line (a441bb2)
    • Merge pull request #2933 from GitoxideLabs/report-august (b8914ff)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.