Skip to content

gitoxide

v0.56.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

Published 3d Version Control
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

blazingly-fast built-with-rust cli git version-control

Summary

AI summary

Broad release touches Commit Details, New Features, Commit Statistics, and Bug Fixes.

Full changelog

New Features

  • add configurable terminal screen modes.

  • hide revision ancestry in tix

  • add tix to the gix CLI

  • add explicit gix config show subcommand.

  • add gix config list for showing the git-configuration files.

  • add the gix config fmt subcommand
    Expose the gix-config whitespace formatter as
    gix config fmt [--in-place] [in-file] [out-file]: with no in-file it
    formats the repository-local configuration, and with no out-file it writes
    to stdout. The repository is only opened when the repository-local
    configuration is needed, so formatting an explicit file works outside a
    repository too.

  • add gix status --untracked flag
    This allows to control how untracked files are folded, but also
    can completely turn dirwalking off.

  • add gix free remote refs to list and write remote refs.
    Add gix free remote refs to perform an upload-pack handshake, discover
    the remote reference advertisement, and print the refs without negotiating
    or receiving a pack.

    The command can also write the advertised refs into a standalone ref store:

    gix free remote refs --refs-directory out-refs <url>
    

Bug Fixes

  • preserve multiple remote URLs
    Configured remotes can have multiple remote..url or remote..pushUrl
    values, but gix::Remote kept only one value because lookup used the singular
    config accessor. That meant the most recent config value won, while Git exposes
    every effective URL and uses the first one for the singular get-url form.

    Add ordered URL storage to gix::Remote and expose Remote::urls(Direction) for
    all effective URLs. Keep Remote::url(Direction) as the singular compatibility
    API, now returning the first effective URL. Fetch URLs used as push fallbacks
    try pushInsteadOf first and then insteadOf, matching Git behavior.

    The regression fixture records Git 2.50.1 behavior with git remote get-url:
    without --all it prints the first configured URL, and with --all it prints all
    configured URLs in order for both fetch and push.

Bug Fixes (BREAKING)

  • make exclude queries index-aware

    gix exclude query reported ignore matches for tracked files and directories
    containing tracked entries, unlike git check-ignore. Positional arguments were
    also interpreted as pathspecs while stdin supplied paths.

    Treat positional and stdin input uniformly as paths, normalize them relative
    to the repository, and suppress ignore matches for indexed files or directories
    containing indexed entries. This changes positional arguments from pathspecs
    to paths.

    Add journey coverage for tracked and untracked paths below ignored directories,
    stdin from a nested working directory, ignore-pattern display, and positional
    output order.

Commit Statistics

  • 22 commits contributed to the release.
  • 31 days passed between releases.
  • 10 commits were understood as conventional.
  • 2 unique issues were worked on: #2562, #2696

Commit Details

view details
  • #2562
    • Make exclude queries index-aware (b185147)
  • #2696
    • Preserve multiple remote URLs (5f244b3)
  • Uncategorized
    • Add configurable terminal screen modes. (2140142)
    • Merge pull request #2809 from GitoxideLabs/gix-tix-mvp (443b401)
    • Hide revision ancestry in tix (fed0051)
    • Add tix to the gix CLI (31a94aa)
    • Merge pull request #2735 from GitoxideLabs/better-exclude-handling (02cb162)
    • Merge pull request #2636 from ameyypawar/gix-config-formatter (cfd3899)
    • Add explicit gix config show subcommand. (06a927c)
    • Add gix config list for showing the git-configuration files. (bd595de)
    • Add the gix config fmt subcommand (87a5e89)
    • Merge pull request #2721 from GitoxideLabs/remove-kstring (e70732a)
    • Adapt to changes in gix-attributes (e11d7a2)
    • Merge pull request #2722 from GitoxideLabs/reasons (c16b5a1)
    • Replace lint allowances with expectations (43ff87a)
    • Merge pull request #2667 from GitoxideLabs/lifetime-free-config-parser (55b5158)
    • Adapt to changes in gix-config (376e946)
    • Merge pull request #2698 from GitoxideLabs/multi-remote-url (7056d62)
    • Merge pull request #2547 from special-bread/windows-status-performance (3e43c42)
    • Add gix status --untracked flag (9316ff8)
    • Merge pull request #2659 from willstott101/fix-ref-transaction-toctou (43dd683)
    • Add gix free remote refs to list and write remote refs. (6767b30)

Breaking Changes

  • Make exclude queries index‑aware: positional arguments now treated as paths and ignore matches for tracked files/directories are suppressed.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track gitoxide

Get notified when new releases ship.

Sign up free

About gitoxide

An idiomatic, lean, fast & safe pure Rust implementation of Git

All releases →

Related context

Related tools

Earlier breaking changes

  • vgix-v0.84.0 Allow checkouts of empty repositories; `destination_must_be_empty` becomes `Option<bool>`
  • vgix-worktree-stream-v0.33.0 Changes API of `Stream::add_entry_from_path` to require `hash_kind` argument.
  • vgix-object-v0.61.0 Renames `Data::hash_kind` to `Data::object_hash` for consistency.

Beta — feedback welcome: [email protected]