NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1417 most downloaded on crates.io
A crate of the gitoxide project handling internal git command execution
Last release 13 days ago
25 Sep 2026
Release timing varies
gaps range from 9 days to 3 months
Nearly every release is documented
notes for 39 of 39 stable releases
1 version withdrawn
withdrawn after publishing
4 years old
40 releases · first in 2023
One column per quarter.
Adapt to changes in gix-features which change Send + Sync to Send + Clone. This happens to allow non-sync implementations (i.e. thread-local), along w
<csr-id-4d2d433e7e98ac42db858688edac06e68ee4d10d/>
Adapt to changes in gix-features which change Send + Sync to Send + Clone. This happens to allow non-sync implementations (i.e. thread-local), along with Sync ones
which usually are Clone too as they are passed by immutable reference (which is Clone + Copy).
Option<impl Progress> in favor of impl ProgressArc around should_interrupt flagindex::verify::Mode::* variants
The hash is repository defined and not hard-codedgix mailmap verify commandein find --debug to learn why it is slow<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
6e0cd6d)bcde935)89428b2)c4c5678)d2bea27)Option<impl Progress> in favor of impl Progress (bf04644)Arc around should_interrupt flag (d851bed)index::verify::Mode::* variants (c2679a0)d04dc01)1ac2c21)34ea001)9277cf8)239e7b2)8bf585d)3fc1622)a8fa53a)07e9081)8cbe85d)89b628a)6c10e09)21c2dd5)e6a3d43)613483b)73a7393)29fb0c8)0e55fbb)a39d476)5388d80)5494fb3)f23b8d2)e90c123)25da30f)0090961)7cf3545)652a0ac)90c6c5a)ein find --debug to learn why it is slow (70109be)aa51e05)ad3c803)025f157)866530a)d6a72e7)338521b)7d2e20c)b0f7328)
</details>safely split commands and ignore shebang options
safely split commands and ignore shebang options
Command preparation previously rejected every first word containing an equals
sign, so valid environment prefixes required a shell while executable names
such as tool=name could be misinterpreted as assignment-only commands. Its UTF-8
conversion also made the direct-versus-shell decision depend on encoding.
Git for Windows uses only the interpreter path from a shebang. Parsing the
suffix as shell words invented incompatible semantics and could let executable
contents supply additional interpreter options.
This provides two major fixes:
Reuse the parser in gix-diff and cover its full byte-input domain with focused
unit tests and a dedicated fuzz target.
Store the required command in Outcome::command, reserve Outcome::args for
actual arguments, and reject command lines that produce no executable. Command
preparation can now consume the parser result directly without another emptiness
check or first-element extraction.
The command-line parser is consumed primarily by process-launch code, yet it
returned byte strings that every caller had to convert before constructing
std::process::Command.
Return OsString for the required command and its arguments so callers can use
them directly while preserving arbitrary Unix bytes. Reject values that the host
cannot represent instead of risking a conversion panic; environment assignments
remain byte-oriented for parsing.
Manual argument splitting moved leading assignments into the process environment
and spawned the parsed program directly. On Windows, Rust's lookup can fall
outside the assigned PATH and cannot launch extensionless scripts through their
shebang.
Keep assignment-prefixed commands on the shell path on Windows while retaining
manual splitting for other commands and platforms.
invoke existing absolute paths directly
Shell detection treated metacharacters in every command as evidence that a
shell was needed. This caused resolved executable paths, notably Git for Windows
programs under Program Files, to be parsed as command text and split at spaces.
Recognize existing absolute files as already-resolved programs and bypass shell
detection for them.
Requiring an absolute path avoids promoting a relative path that happens to name
a file in the repository to a program and accidentally executing it.
This release pins beta versions of clap to avoid it to automatically fetch the latest one during installation.
This release pins beta versions of clap to avoid it to automatically fetch the latest one
during installation.
This is made possible due to clap itself pinning its dependency
to the clap-derive crate.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
Clippy helped 1 time to make code idiomatic.
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
d2af4ed)ebe9095)7424676)5c8d935)cc3ee80)
</details>use onfigured shell arguments in gix-command <!-- agent -->
<csr-id-85f10fcc96740eeb293b237d1300bf8aab428434/> use onfigured shell arguments in gix-command <!-- agent -->
Construct default shell invocations with gix_path::env::shell_command() instead of rebuilding a Command from shell(). This preserves platform-specific arguments, notably --posix for the Git for Windows bin/sh.exe shim, while leaving caller-provided shells unchanged.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
ab4fcb0)5a88ee7)85f10fc)f7d4f33)
</details>Derive $0 for sh -c from the shell's basename gix-command invokes shells as sh -c [args...], where the command_name operand becomes $0 inside the shel
<csr-id-8323858295164d23c25ebca52f6b9b01eeca885d/> Derive $0 for sh -c from the shell's basename
gix-command invokes shells as sh -c <script> <command_name> [args...],
where the command_name operand becomes $0 inside the shell. Shells
use $0 to prefix their own diagnostic messages (e.g.
sh: line 1: <cmd>: command not found), so the value should identify
the actually-running shell.
Derive the value from the shell program itself, using the basename of
the path passed to Command::new for the shell:
/bin/sh), $0 is sh.sh.exe from Git for Windows),
$0 is sh.exe, matching the launched binary's actual name.shell_program, $0 reflects the chosen shell
(e.g. bash, zsh), so its diagnostics correctly identify it.If the shell path has no extractable basename — Path::file_name()
returns None for degenerate input like an empty string or / — fall
back to _, the conventional placeholder for an unused $0 used in
shell one-liners. This keeps the construction total without claiming a
specific shell name.
Using the basename also avoids an MSYS2-specific surprise on Windows:
Cygwin/MSYS2 shells translate some command-line content received via
lpCommandLine, including full Windows paths, so a full shell path
passed as $0 would come back from the shell as its translated form.
This fixes #1842. (See #1840 and #1842 regarding some of these issues.)
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
10c58bb)faecc23)$0 for sh -c from the shell's basename (8323858)$0 deriving from the actually-running shell (d62e33c)6752a96)4743361)1980190)e3d5a04)ab2fee1)2cb17b2)e10d5f6)3675a8d)adb8328)
</details>A first usable version of gix to make using gitoxide from your applications so much easier. It serves as a one-stop shop for application developers wi
A first usable version of gix to make using gitoxide from your applications so much easier. It serves as a one-stop shop for application developers without sacrificing performance by default while making common use-cases more convenient.
gix as hub crate for application development with focus on usability without sacrificing any knob to tune performance.async for gix-packetline, gix-transport and gix-protocol for fully async git clients, along with the light-async feature toggle to build a gix pack-receive with an async client instead of a blocking one.gix pack-create with the -s/--statistics flag to have data indicating the cost of the operation. Currently it's doing a lot of work that has to be avoided in order to be useable in production and the numbers underline that. Future iterations will cause key metrics to go down.gix-tempfile crategix-lock crategix-ref crate with complete loose-ref, packed-ref and transaction support.git.gix-object parsing is a few percent faster thanks a reworked error handling for objects. By default, error collection is disabled entirely making the error case zero-sized. If needed, verbose and stacked errors can be turned on using a feature toggle for applications who expect repositories with malformed objects and need detailed diagnostics.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
53f880c)4d5ba23)
</details>42 commits contributed to the release over the course of 95 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
Clippy helped 1 time to make code idiomatic.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
f9fbcba)63b8419)e64e3b8)0396152)444a92b)package.include patterns more specific so they don't match ignored files (c2c917f)29c275e)b1102c2)f7277f3)
</details>2 commits contributed to the release over the course of 10 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
ecf90fc)9327b73)
</details>4 commits contributed to the release over the course of 19 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
d66ac10)766ab10)cc3310b)f7d0975)
</details>32 commits contributed to the release over the course of 128 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
Clippy helped 3 times to make code idiomatic.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
562e684)fa302a1)c663b3f)
</details>4 commits contributed to the release over the course of 3 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
7be8f90)d914d95)4edc5dd)9e1ba5e)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
gix-transport release (ae8c9d3)3bc0c47)0b1a7b7)shell_builtin_or_command_in_path* on Windows (81fa44c)with_shell() to force shell builtins (d2d75bb)sh_shell_specific_script_code_with* tests (32dce7c)spawn::with_shell test cases (909f961)d08333c)5af8987)gix-command external commands on Windows (548e658)3313233)
</details>Prepare::with_shell() now assures manual argument splitting isn't done on Windows either. That way with_shell() means what it says, previously it was
Prepare::with_shell() now assures manual argument splitting isn't done on Windows either.
That way with_shell() means what it says, previously it was a trap that was
impossible to get right on Windows.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
89fb308)4da2927)b188a7d)6cc8464)202bc6d)d64f257)8d4d18d)Prepare::with_shell() now assures manual argument splitting isn't done on Windows either. (a5ba202)784c046)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
5a919c4)65037b5)c2eb0c1)bfb1c34)648022b)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
f0ed2cc)31b86ee)c3f06ae)d2b4c44)8d4c4d1)
</details>These are created to account for breaking changes within the dependency graph of gitoxide crates. Due to some blunders in the past the version on crat…
Maintenance release without any new features.
These are created to account for breaking changes within the dependency graph of
gitoxide crates. Due to some blunders in the past the version on crates.io
could not be installed anymore.
This was eventually fixed with new minor releases across the ecosystem.
Finally, yet another breaking change due to the introduction of the gix-hash
crate to break a dependency cycle between gix-object and gix-features caused
yet another maintenance release.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
e104545)5f7f805)631f07a)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
cc5b696)49fa9f3)db0b095)0bf84db)3b1bef7)c3c6504)b5e9059)68e6b2e)420e730)
</details>Maintenance release without any new features.
Maintenance release without any new features.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
9cb09b2)5c7b52d)2571113)aacf0f0)ca5b801)
</details><csr-id-4e7306e9f995586069b388d1fe95d29b219f5610/>
gix_path::env::shell() in gix-command for shPreprae::with_quoted_command()
That way it's possible to execute shell commands with spaces in their paths, for example.<csr-id-667de433f2cd769323ec5534944a6eba01a8ae40/> rename with_shell() to command_may_be_shell_script(), add with_shell() to enforce using a shell.
That way it's clear the shell will only be used if the command
actually is a shell script.
This also renames with_shell_* variants to command_may_be_shell_script_* variants, without
a respective with_shell_* alternative.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
Preprae::with_quoted_command() (435984b)b41312b)38dff41)7b17da6)01bd76d)0ba3147)gix_path::env::shell() in gix-command for sh (c7d06a6)2efce72)4fc1092)0e451d0)38a0d9a)Prepare docs (4e7306e)10937b0)b085899)02efddd)cc7b614)with_shell() to command_may_be_shell_script(), add with_shell() to enforce using a shell. (667de43)8df0db2)
</details>fix installation via cargo install
cargo install<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
<csr-id-17835bccb066bbc47cc137e8ec5d9fe7d5665af0/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
dea106a)1f6390c)7ec21bb)rust-version to 1.70 (17835bc)d22937f)
</details>add git_is_space() It's very niche but needed for correctness in globs and git-config parsing.
git_is_space()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.
remote-ref-list and pack-receive subcommands to gixindex-from-pack to pack-index-from-data<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
fb1f048)445be27)46a3511)c06d819)487d06d)2fcb557)b38290e)35e26fc)f90b92f)161e7df)5ea49c8)40a6412)386673c)b4a6e16)
</details>Prepare::with_shell_disallow_manual_argument_splitting().
That way it's also possible to forcefully turn off manual argument splitting.Prepare::with_shell_program().Prepare::with_shell_allow_argument_splitting() to Prepare::with_shell_allow_manual_argument_splitting()<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
c1ba571)7ea8582)faa0cde)Prepare::with_shell_allow_argument_splitting() to Prepare::with_shell_allow_manual_argument_splitting() (4d9bded)Prepare::with_shell_disallow_manual_argument_splitting(). (26c274d)801f9e9)Prepare::with_shell_program(). (838420f)e8b3b41)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
4000197)9d627bb)4145d2a)db5c9cf)
</details>9 commits contributed to the release.
<csr-id-64ff0a77062d35add1a2dd422bb61075647d1a36/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
3f7e8ee)795962b)64ff0a7)93e86f1)012a754)649f588)beba720)37ba461)2e0ce50)
</details>prevent the popup of terminal Windows on any command invocation.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
d19af16)0f25841)e2c747d)f6cd919)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
a1b73a6)0470df3)99c00cc)15f1cf7)8d89b86)1dfa90d)tar files (dcab79a)9fa1054)9c65d98)68cbea8)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
4f98e94)9511416)fe24c89)41bf65a)
</details>6 commits contributed to the release over the course of 4 calendar days.
<csr-id-39879af6eaf2bf4fe159a5c6371c98d516c4febe/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
b050327)52c3bbd)3e5c974)5722e3a)39879af)f8ce3d0)
</details>Add test to assure echo "$@" >&2 works as expected Previously it would print the arguments twice, now it only prints it once as we avoid adding the 't
<csr-id-74631d4171cdfd4f97d61203c2b65ef02da7b2c4/> Add test to assure echo "$@" >&2 works as expected
Previously it would print the arguments twice, now it only prints
it once as we avoid adding the 'trick' to the script if it's already
present.
This helps with custom git credential helpers who endorse to
to call them like !credential-helper $@, in which case the
added arguments are already part of the script.
See https://github.com/languitar/pass-git-helper for detailed documentation on how that should usually work.
Git seems to manage to not automatically add '$@' when calling
credential helpers, but it's something that is done by gix-command
automatically when a command should be invoked that receives arguments
and has to be evaluated by a shell.
The current implementation is very naive, but should also work for 99.9% of the cases out there.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
echo "$@" >&2 works as expected (74631d4)45b4470)f2e111f)
</details>on windows, try to parse the interpreter out of files. This is done by Git for Windows as well for additional compatibility around launching hooks.
shebang::parse())
and extract the interpreter from an executable via extract_interpreter().<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
eb6aa8f)6a2e0be)b6c04c8)39f35da)3ef3bc2)
</details>add ergonomic test errors and string comparisons
<csr-id-3bd09ef120945a9669321ea856db4079a5dab930/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
972241f)8c492d7)rust-version manifest field back to 1.65. (3bd09ef)
</details>add BoxedResultExt for boxed errors
<csr-id-aea89c3ad52f1a800abb620e9a4701bdf904ff7d/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
e1aae19)e78a92b)4454c9d)aea89c3)
</details>Many small and possibly breaking changes are not mentioned here.
pack-explode and pack-index-from-data sub-commandspack-verifyMany small and possibly breaking changes are not mentioned here.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
34b2373)e71da0f)f59f66e)763d7ca)3a4faec)1931575)181d69c)e509373)d7591e2)c0352c2)91ba045)bca7ce2)584350a)395c7e7)8812e91)657aa2c)1e2ec7e)cc147bc)43c7fd1)9660bbf)44b8221)665696f)ee45c7f)0a33b24)29b9c23)adbc82c)0d31ad1)1805d64)0bcb790)f66b116)f932256)ec8c48a)d3c00c8)5e23137)93a9b30)aeb8778)bb45c3d)ec40e09)bcb275e)41f38c4)a7cfac8)afae684)fbb9f98)2888f1b)f98c5b1)7c5d8b8)
</details><csr-id-9d7e28d542b5dbacce28920232b99c454f1eab4e/> Add Context to provide much more context just like git sets it.
git sets a bunch of context-carrying environment variables which gix
shouldn't only (and optionally) read, but also pass on to spawned processes.
With Context it's now possible to gather all of this information and
set it at once.
With a minimal context, one will also set the git_dir, particularly important
on servers, which work with many different repositories, or a clone operation
which may be in the context of one directory, but affects another.
<csr-id-05972f11f34795da5c70c927c958a0088367dbe7/> add Prepare::with_shell_allow_argument_splitting() flag.
This flag is enabled on windows by default to emulate git which
doesn't actually use a shell at all there.
This should help to allow windows users to use more complex programs, which might not have been possible previously.
It also allows certain areas of gix to indicate that they are safe to
use with this flag, which always is the case when git is prefixed, like
with credential helpers.
<csr-id-bc44497606656cddc4f18a0acb272c34b8df4ba8/> trace credential helper invocations. This should make it easier to understand what's going on in case something isn't working as expected.
Context::stderr to configure whether or not to supress stderr.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
Context to provide much more context just like git sets it. (9d7e28d)55d386a)d3dcbe5)8156340)Context::stderr to configure whether or not to supress stderr. (ceb8826)51c7abc)f09ea13)2b80d84)Prepare::with_shell_allow_argument_splitting() flag. (05972f1)d75159c)c372321)c0e72fb)b65a80b)065ab57)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
68e5432)1347a54)b842691)67a0220)363ee77)
</details>5 commits contributed to the release over the course of 18 calendar days.
<csr-id-229bd4899213f749a7cc124aa2b82a1368fba40f/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
30b2761)f23ea88)229bd48)6b4a303)ef8ccd9)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
16295b5)c4cc5f2)5cb3589)2fc66b5)9064ea3)
</details>5 commits contributed to the release over the course of 17 calendar days.
<csr-id-7f7db9794c23b87c8ea50b7bcf38955c9d977624/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
68ae3ff)c70e54f)e4dded0)b19a56d)bstr features to exactly what's needed. (7f7db97)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
ea9f942)18b0a37)aa16c8c)4f635fc)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
9a9fa96)8f15cec)3ef5c90)9375cd7)facaaf6)
</details>compatibility with bstr v1.3, use *.as_bytes() instead of .as_ref(). as_ref() relies on a known target type which isn't always present. However, once
bstr v1.3, use *.as_bytes() instead of .as_ref().
as_ref() relies on a known target type which isn't always present. However, once
there is only one implementation, that's no problem, but when that changes compilation
fails due to ambiguity.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
9604783)bstr v1.3, use *.as_bytes() instead of .as_ref(). (135d317)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-id-3d8fa8fef9800b1576beab8a5bc39b821157a5ed/> upgrade edition to 2021 in most crates. MSRV for this is 1.56, and we are now at 1.60 so should be compatible. This isn't more than a patch release as it should break nobody who is adhering to the MSRV, but let's be careful and mark it breaking.
Note that git-features and git-pack are still on edition 2018
as they make use of a workaround to support (safe) mutable access
to non-overlapping entries in a slice which doesn't work anymore
in edition 2021.
<csr-id-8a67c13bf0b9b8646430876768155f62e243ef52/> allow setting more information when preparing commands. This includes
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
5a2168e)f86364c)6565b97)allow prompt builder method as typical prompt implementations don't need it (0236d75)3be1fc7)830ee07)d8e8b54)1cb2e96)Prepare into a Command for even more flexibility (eeedd2c)git-date (1322f72)6a39e62)8c61b0b)cd4a608)579e8f1)git-command crate (436632a)rust-version to 1.64 (55066ce)41d57b9)e313112)6efd0d3)6ccc88a)c9275b9)git-testtools to gix-testtools (b65c33d)git-pack to gix-pack (1ee81ad)git-odb to gix-odb (476e2ad)git-index to gix-index (86db5e0)git-diff to gix-diff (49a163e)git-commitgraph to gix-commitgraph (f1dd0a3)git-mailmap to gix-mailmap (2e28c56)git-discover to gix-discover (53adfe1)git-chunk to gix-chunk (59194e3)git-bitmap to gix-bitmap (75f2a07)git-protocol to gix-protocol (823795a)git-refspec to gix-refspec (c958802)git-revision to gix-revision (ee0ee84)git-transport to gix-transport (b2ccf71)git-credentials to gix-credentials (6b18abc)git-prompt to gix-prompt (6a4654e)git-command to gix-command (d26b8e0)git-command to gix-command (4d32925)git-packetline to gix-packetline (5cbd22c)git-worktree to gix-worktree (73a1282)git-worktree to gix-worktree (108bb1a)git-url to gix-url (b50817a)git-date to gix-date (9a79ff2)git-attributes to gix-attributes (4a8b3b8)git-quote to gix-quote (648025b)git-config to gix-config (3a861c8)git-ref to gix-ref (1f5f695)git-lock to gix-lock (2028e78)git-tempfile to gix-tempfile (b6cc3eb)git-object to gix-object (fc86a1e)git-actor to gix-actor (4dc9b44)git-validate to gix-validate (5e40ad0)git-hash to gix-hash (4a9d025)git-features to gix-features (e2dd68a)git-glob to gix-glob (35b2a3a)git-sec to gix-sec (eabbb92)git-path to gix-path (d3bbcfc)git-config-value to gix-config-value (622b3e1)c196d20)7c846d2)ffb5b6a)4381a03)3569b9f)5ac9fbe)30d8ca1)511ed00)f8c562a)8a67c13)bcd9654)b2c301e)e4648f8)0e4462d)3d8fa8f)25a7726)f5c36d8)29a043b)535e967)5c05198)0dc1da5)6c27e94)
</details>Your coding agent can read these notes before it upgrades. Set up the MCP server →