New Features
-
add explicit gix config show subcommand.
-
add
gix config listfor showing the git-configuration files. -
add the
gix config fmtsubcommand
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 --untrackedflag
This allows to control how untracked files are folded, but also
can completely turn dirwalking off. -
add
gix free remote refsto list and write remote refs.
Addgix free remote refsto 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
-
escape unsafe paths in gix index entries
--- agentHuman-readable index entry output wrote repository-controlled path bytes
directly to stdout. Control characters could therefore alter terminal state,
rewrite visible output, or split one path across multiple lines.Add a crate-private writer that reuses a scratch buffer and emits BStr's
quoted debug representation only when its interior differs from the original
bytes. This keeps ordinary UTF-8 output unchanged while escaping terminal
controls, ambiguous syntax bytes, and invalid UTF-8 losslessly, without allocation.
Apply it to both simple and rich index output,
including complete submodule-prefixed paths.Git baseline: builtin/ls-files.c routes line-oriented names through
write_name_quoted_relative(), which delegates to quote.c's C-style path
quoting. This change follows the same behavioral rule that ordinary paths stay
readable while terminal-active bytes are not emitted literally. -
preserve multiple remote URLs
Configured remotes can have multiple remote..url or remote..pushUrl
values, butgix::Remotekept 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::Remoteand exposeRemote::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. -
pass through the allocation limit
This is particularly important in untrusted repositories, which
get a reduced allocation limit.
Changed (BREAKING)
-
replace
maybe-asyncwithbisync.
Replace the globally feature-selected maybe-async dependency with bisync 0.3 and
re-export the locally selected macro mode from gix-protocol.Also use it to deduplicate portions which previously couldn't be handled.
Bug Fixes (BREAKING)
-
make exclude queries index-aware
gix exclude queryreported ignore matches for tracked files and directories
containing tracked entries, unlikegit 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
- 47 commits contributed to the release.
- 31 days passed between releases.
- 10 commits were understood as conventional.
- 3 unique issues were worked on: #1534, #2562, #2696
Thanks Clippy
Clippy helped 1 time to make code idiomatic.
Commit Details
view details
- #1534
- Escape unsafe paths in gix index entries (caabb38)
- #2562
- Make exclude queries index-aware (b185147)
- #2696
- Preserve multiple remote URLs (5f244b3)
- Uncategorized
- Update changelogs prior to release (cb6ec7d)
- Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates (f0ec710)
- Merge pull request #2737 from GitoxideLabs/encoding-fallback-pony (2315ede)
- Adapt to changes in
gix-filter(552402f) - Merge pull request #2735 from GitoxideLabs/better-exclude-handling (02cb162)
- Use
gix::Repository::normalize_path()everywhere. (6dcf76a) - Merge pull request #2734 from GitoxideLabs/url-parse-convenience (e7af50e)
- Adapt to changes in gix-url (271454b)
- Merge pull request #2731 from GitoxideLabs/control-chars-escape (da88f6f)
- Merge pull request #2729 from GitoxideLabs/improvements (9949e9f)
- Adapt to changes in
gix(1dbf871) - Merge pull request #2728 from GitoxideLabs/try-bisync (adf4b7a)
- Merge pull request #2636 from ameyypawar/gix-config-formatter (cfd3899)
- Add explicit gix config show subcommand. (06a927c)
- Add
gix config listfor showing the git-configuration files. (bd595de) - Review (1825e85)
- Replace
maybe-asyncwithbisync. (c3f2244) - Add the
gix config fmtsubcommand (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 #2715 from GitoxideLabs/fixup-credentials (299d16b)
- Adapt the credential command to explicit context options in
gix-credentials(f88cf10) - Merge pull request #2714 from GitoxideLabs/fix-credentials-parsing (cf3053a)
- Release gix-path v0.12.2, gix-error v0.2.5, gix-utils v0.3.4, gix-date v0.15.6, gix-url v0.36.2, gix-credentials v0.38.2 (27aec47)
- Merge pull request #2698 from GitoxideLabs/multi-remote-url (7056d62)
- Add missing SHA256 archive (432e2b1)
- Merge pull request #2695 from ameyypawar/fix/2024-compression-level (6e1c4a2)
- Review (f1ac335)
- Adapt to configurable zlib compression levels (846c7c1)
- Merge pull request #2702 from ameyypawar/fix/2694-exn-source-chain (e9c973d)
- Thanks clippy (d533f0c)
- Merge pull request #2691 from GitoxideLabs/gix-pack-missing-cap (0052e42)
- Pass through the allocation limit (0a5c62a)
- Merge pull request #2547 from special-bread/windows-status-performance (3e43c42)
- Add
gix status --untrackedflag (9316ff8) - Merge pull request #2684 from GitoxideLabs/dependabot/cargo/cargo-f4a9952650 (677795b)
- Bump the cargo group with 8 updates (b4b9844)
- Merge pull request #2659 from willstott101/fix-ref-transaction-toctou (43dd683)
- Add
gix free remote refsto list and write remote refs. (6767b30) - Merge pull request #2646 from GitoxideLabs/report (1b1541e)