NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1460 most downloaded on crates.io
A crate of the gitoxide project dealing magical pathspecs
Last release 12 days ago
25 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 34 of 34 stable releases
1 version withdrawn
withdrawn after publishing
3 years old
35 releases · first in 2023
One column per quarter.
gix clone is now permitted without specifying a destination directory. Note that the implementation doesn't take into account potential redirects and
<csr-id-1d9a5e925890883e9e712db14ac82411ad2fdfc3/>
gix clone <url> is now permitted without specifying a destination directory.
Note that the implementation doesn't take into account potential redirects and renames
as it's implemented only with the first URL it sees (not the redirected ones).http.schannelCheckRevoke<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
Clippy helped 2 times to make code idiomatic.
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
gix clone <url> is now permitted without specifying a destination directory. (b81f650)e22080e)7bba270)gix progress now usees the configuration tree as basis for data. (ea76bf5)f7b8794)1d9a5e9)b93f0c4)9e04685)tabled (7aed326)76c99f3)f8c562a)d336368)ssh related configuration variables. (3f91088)d821fc5)38ae61a)
</details>allow requiring archived scripted fixtures
allow requiring archived scripted fixtures
Add version-aware fixture loaders:
scripted_fixture_read_only_with_git_version()scripted_fixture_read_only_with_args_with_git_version()Both use normal fixture generation when the installed Git version satisfies
the caller-provided predicate. For incompatible versions, they require an
identity-matching archive, ignore GIX_TEST_IGNORE_ARCHIVES, and return None
instead of running the fixture script when no usable archive exists.
git --version each time a metadata directory is created.expand gix-testtools fixture support
Note that I did only skim through git.rs,
considering the details of the implementation secondary to the outcome.
gix.rs was refactored quite a bit, helping to provide more utilities
in other plumbing crates to help with this 'gix' avoidance.
Add deterministic repository snapshots covering HEAD, references, reachable
commits, every index stage, conflict-free index trees, and exact worktree
contents. Provide a portable form which omits platform-specific filesystem modes
for stable cross-platform assertions.
Add writable Git-version-aware fixture APIs for copy and execute creation modes.
Require archived fixtures when the selected Git is incompatible, without running
unsupported scripts or post-processing.
Use the Git executable selected by gix-path consistently for version checks,
helper commands, and fixture scripts, including PATH selection for scripts.
Harden signing fixtures with command-compatible paths, isolated homes, and
complete SSH key pairs.
git --version each time a metadata directory is created. (4314d09)gix-attributes (e11d7a2)This release also fixes compatibility issues that formerly prevented to fetch or clone form https://googlesource.com.
GIT_(COMMITTER|AUTHOR)_(NAME|EMAIL|DATE) with git configuration.
That way it becomes more obvious where values are coming from.<csr-id-98143699bb9481b010e21647f64dcb8a74bd80ad/> auto-enabled verbosity for gix fetch/clone and add --no-verbose.
I found myself always adding (and having to remember to add) the -v flag
for long-running operations so these should be able to default to a
higher verbosity level.
To counter that, there is a new --no-verbose flag to turn that off.
<csr-id-aeb4a1d5cb76316058c7d687e26f5c7db351c09c/> add --strict option to enforce strict checking of configuration.
<csr-id-8c9c243fc574dc17b92a8e2025fbd8efdf2833da/> gix odb stats to calculate statistics on the object database.
This includes the amount of objects along with a listing of where they are
located.
<csr-id-e2b8c5dce7185b5fa194b90f32e642e5c9d1227f/> gix clone --no-tags support.
This is the same as git clone --no-tags.
<csr-id-49f39d6bb487c0254176a5082f2c7851b83952a1/> open::ReplacementObjects is removed in favor of two custom git-configuration flags.
Now it's possible to map the environment variables GIT_REPLACE_REF_BASE and GIT_NO_REPLACE_OBJECTS
to custom git configuration keys which can also be set, namely gitoxide.odb.replaceObjectsRefBase
and gitoxide.odb.noReplaceObjects.
Along with the possibility of disabling the usage of GIT_ prefixed environment variables one
reaches the previous level of control without making object replacement a special case.
<csr-id-becbd8d896a1663f1607be4e86e632773e926f1f/> represent object cache configuration like GITOXIDE_PACK_CACHE_MEMORY in git-configuration.
That way there is a unified system for how to set values, which may be overridable by configuration
variables or not.
With this changes, the explicit application of environment variables for setting the cache isn't required anymore as everything happens using git-configuration, and automatically, while providing full control like before.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
ein t estimate-hours command (4c93de1)3d01252)gix odb stats to calculate statistics on the object database. (8c9c243)c57bdde)083909b)gix clone --no-tags support. (e2b8c5d)gix progress to inform about remote.<name>.tagOpt (3ebb340)70ccbb2)77ab98d)gix fetch/clone and add --no-verbose. (9814369)atty to is-terminal (7304bc1)git-repository (c4f68bf)GITOXIDE_PACK_CACHE_MEMORY in git-configuration. (becbd8d)GIT_(COMMITTER|AUTHOR)_(NAME|EMAIL|DATE) with git configuration. (a4ac9cf)open::ReplacementObjects is removed in favor of two custom git-configuration flags. (49f39d6)9441c26)git-repository (f1a4c8b)872dc1a)--strict option to enforce strict checking of configuration. (aeb4a1d)62cae0e)git-config (1c2e755)bcd9654)
</details>Make reqwest TLS backend configuration easy. We provide the choice of native-tls or rust-tls. If none is provided, the user can configure on their on
<csr-id-3ddbd2de369b521fa3f21935f10fe9c248840893/> Make reqwest TLS backend configuration easy.
We provide the choice of native-tls or rust-tls. If none is
provided, the user can configure on their on similar to how it's done
in gix.
Please note that a choice now has to be made or HTTPS will not be available, so use one of…
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
reqwest TLS backend configuration easy. (3ddbd2d)
</details><csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
cb6ec7d)f0ec710)e70732a)gix-attributes (e11d7a2)c16b5a1)43ff87a)cf3053a)27aec47)f7d4f33)
</details>6 commits contributed to the release over the course of 28 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
10c58bb)ab2fee1)2cb17b2)e10d5f6)3675a8d)adb8328)
</details>This releases fixes gix fetch so that it is able to clone or fetch pytorch or other repositories on case-insensitive file systems.
This releases fixes gix fetch so that it is able to clone or fetch pytorch or other repositories on case-insensitive file systems.
It's also an attempt to trigger CI to build binary releases.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
665b53e)c76572b)gitoxide.http.connectTimeout for more control for git clients (2ab80e4)no_proxy environment variable support (f0625de)3d9fb6c)0ec5220)1c012f4)f5499a5)1afaebd)
</details><csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
53f880c)4d5ba23)
</details>gix remote ref-map --show-unmapped-remote-refs. That way it's more obvious to see what was filtered out by ref-specs.
<csr-id-e973dfeaf17ca63385496202e9fdcdd912e20f42/> gix remote ref-map --show-unmapped-remote-refs.
That way it's more obvious to see what was filtered out by ref-specs.
It's also great to validate that server-side filtering via ref-prefix will not send refs that are referred to by symbolic refs that are not filtered out. That should be fine as it's all about objects, it's just something to deal with as we may have to deal with symbolic refs that aren't in the set of refs the server sent to us.
<csr-id-b1edb9e3537df86669714f03666f4a88e0ac3709/> diff algorithm is controlled by git configuration diff.algorithm
<csr-id-20259da4ddf9fabfb2d2bd4e2274c0ed42bdb0e5/> ein t hours allows to specify the amount of worker threads.
<csr-id-3a053284cfefe27873dcc5b4f74d63a560bb5d41/> collect stderr and print it afterwards to avoid intersection with line progress.
Previously it would happen that stderr would be printed directly and mix
with the line progress (as in -v) which also prints to stderr.
Now errors are collected and output at the end once the line renderer was already shutdown.
lock_mode from all methods dealing with reference edits.
It is now read from core.filesRefLockTimeout accordingly.gix remote --url in favor of determining the intention similar to git fetch<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>
443a75a)gix remote ref-map --show-unmapped-remote-refs. (e973dfe)diff.algorithm (30d32e7)c8ef759)stderr and print it afterwards to avoid intersection with line progress. (3a05328)clone and print once entire clone is done (9a476df)gix clone (23a5e8b)63947ae)f5e2eeb)core.checkState (8b2aba1)de13c66)gix progress (0e9bd41)d10a82e)init.defaultBranch - now used by custom initialization. (4d6d7bb)gix fetch (c47dcc6)d034882)gix remote --url in favor of determining the intention similar to git fetch (92bbe33)--url for arbitrary urls when fetching (8c7351c)gix fetch (5b72d27)fd18320)lock_mode from all methods dealing with reference edits. (3a0fb1b)7076891)3c188b2)eade88f)6abd5a4)5c0d0ab)65e6496)b42b08a)317e02a)gix progress show (92e082a)ein t hours allows to specify the amount of worker threads. (20259da)ba17db0)index.version for when we can write V4 indices. (da96d34)ad44982)1ec27f8)extension.worktreeConfig (fe1e646)c4e6849)init.templateDir to gix progress (9fab050)ea2136b)def53b3)diff.algorithm (b1edb9e)fa27570)f53f942)git-diff for a 2x speedup when calculating line changes (296f3b6)gix progress records (b05a2e7)de4fe06)6225f35)da5f63c)c8d0345)8c24386)67f2247)01ab5ca)09d767a)507dc7e)1a1e862)clone. variables (8b804a3)702a161)53acf25)f47c891)3c49400)c5c0ac5)8ef3fcb)8dadd70)b862fc5)25a7726)
</details><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)98bae84)
</details>5 commits contributed to the release.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
4a3d6e9)c389a2c)6183fd0)6bdb331)f7277f3)
</details>ein tool hours -s was split into -f|--file-stats and -l|line-stats. That way more information is generated at increasingly high costs.
ein tool hours -s was split into -f|--file-stats and -l|line-stats.
That way more information is generated at increasingly high costs.ein tool hours --stat to collect additional statistics per author.
Note that these are expensive and unconditionally use threads to speed
up these computations.ein tool hours -b ignores bots.
For now it only considers bots with names containing [bot].<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
11851f3)4720666)2237495)f4d8198)ref-map sub-command. (94c2b78)gix commands will now load the git installation configuration (23d2dec)7abc0a3)gix credential (642e21f)26489d1)cf7182e)ein tool hours -b ignores bots. (5d0332f)3773b92)gix index from-tree (2fbd3df)535e967)5c05198)bc64b96)56ba481)791dd66)
</details><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)8bceefb)7ce3c55)f7d0975)
</details>gix remote refs to list all remote references of a suitable remote. This takes into account either a named remote, or the remote associated with the c
<csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/>
-c/--config in gixgix remote refs to list all remote references of a suitable remote.
This takes into account either a named remote, or the remote associated
with the current branch, or the default remote it could deduce or obtain
from the configuration.gix free remote ref-list in favor of gix remote refs
The functionality is the same, but the latter is built on top of a
repository which is slightly less flexible, but preferable over
maintaining a non-repo version.<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>
gix config. (19c1746)gix free remote ref-list in favor of gix remote refs (dda9957)-c/--config in gix (45a30f0)e0be6e9)df3cf18)gix remote refs to list all remote references of a suitable remote. (5d6d5ca)db4df25)gix remote refs without any implementation. (f8f1249)39d585d)bb6813a)e2ee3de)31c2351)b1c40b0)f7f136d)bd5f3e8)
</details><csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
cbbdef5)562e684)fa302a1)0a333e5)d6c5b9d)
</details>Invert behaviour to open::Options::strict_config(), with lenient being the default. This means API users will get libgit2 behaviour but commands like
open::Options::strict_config(), with lenient being the default.
This means API users will get libgit2 behaviour but commands like gix can
change options to emulate git behaviour.--cat-file flag for gix rev parse to cat instead of resolving.gix rev previous-branches subcommandein tools to ein tool for as it's more intuitivegix rev resolve --explain<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
dbaff13)gix-config can be lenient. (6a9c58f)open::Options::strict_config(), with lenient being the default. (0235111)c4bf958)805f432)ein tools to ein tool for as it's more intuitive (edf73dd)a938986)a6d79e3)2f506c7)ce885ad)9b9ea02)6da8250)7b61506)47724c0)4e7b343)e9fcb70)
</details><csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
21fecdf)3313233)
</details>Adjustments due to breaking changes in git_path (`4420ae9`)
gix config with section and sub-section filtering.gix config lists all entries of all configuration files git considers.
Filters allow to narrow down the output.<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/>
<details><summary>view details</summary>
0c597fe)--show-ignore-patterns to gix repo exclude query (09f904b)exclude query (9cb8385)7d98b21)cb56f12)3ff991d)gix repo exclude query (a331314)50ff7aa)gix restructuring (59b95c9)gix config with section and sub-section filtering. (eda39ec)gix config lists all entries of all configuration files git considers. (d99453e)a437abe)8e5b796)5cf08ce)0ed65da)38a8350)72876f1)ac7d99a)c9c78e8)8967fcd)f99c3b2)83585bd)1cdecbc)141c5f1)f4e1810)faaf791)git_path (4420ae9)afecb63)48b3f4a)085e76b)0700b09)89ea12b)0e9df36)229dc91)41ea8ba)05eb340)7cb1972)251b6df)98da8ba)056e8d2)fdec111)4086335)e90d3fd)
</details><csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
89fb308)4da2927)b188a7d)6cc8464)9365cc3)838ff95)202bc6d)d64f257)784c046)
</details>preserve validation classifications after error conversion
ValidationError marker from reference, tag, submodule,gix::Error, including optional reference lookups.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.
gix repo commit describe
It supports typical but basic flags mostly similar to the ones in git.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
A maintenance release without user-facing changes.
<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>
5a919c4)65037b5)648022b)f0ed2cc)c3f06ae)d2b4c44)28935a5)dbf65c9)8d4c4d1)
</details>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><csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
e104545)5f7f805)631f07a)
</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.
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>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>
A maintenance release without user-facing changes.
<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>
b41312b)38dff41)7b17da6)01bd76d)f58897d)-c options in match_baseline_files (68bdccc)16a248b)8e96ed3)8df0db2)
</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-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)e8b3b41)
</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.
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)8ce4912)bc9d994)7a40648)0f0e4fe)db5c9cf)
</details>remove workspace lints from Cargo manifests of fuzz-projects. They are not part of the parent workspace.
<csr-id-64ff0a77062d35add1a2dd422bb61075647d1a36/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
3f7e8ee)795962b)64ff0a7)72daa46)cdac4a9)93e86f1)012a754)649f588)beba720)37ba461)2e0ce50)f992fb7)ec69c88)
</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>
f2b522d)d379555)a65a17f)42cecea)gix-path to same version and allow publish to continue. (933a801)
</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>
6232824)a1b73a6)0470df3)99c00cc)15f1cf7)8d89b86)1dfa90d)tar files (dcab79a)9fa1054)9c65d98)ea12fc2)68cbea8)2cefe77)
</details>assure empty paths are always matching a Search This improvement was triggered by this question.
Search
This improvement was triggered by this question.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
4f98e94)9511416)d6cd449)cd4de83)68fd5b3)Search (5b47567)977346e)
</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>
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>
095c673)5755271)55f379b)f72ecce)
</details>Search::can_match_relative_path() won't report false-negatives anymore. It does this by ignoring exclude patterns, preferring false-positives that way
Search::can_match_relative_path() won't report false-negatives anymore.
It does this by ignoring exclude patterns, preferring false-positives that way.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
155cc45)129ba3d)41cd53e)Search::can_match_relative_path() won't report false-negatives anymore. (0386871)
</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>
b050327)52c3bbd)3e5c974)f8ce3d0)
</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.
Search::prefix_directory() and Search::longest_common_directory().
That way it's possible to use the common-prefix safely in a situation
where a directory is required, while offering the ability to maximize
the common prefix at the expense of an additional check to see if
the longest possible directory is actually accessible.str::precompose_bstr() for convenienceSearch::directory_matches_prefix() to see if the prefix of a pathspec matches.
That way it's possible to see if some paths can never match.Search::can_match_relative_path().
This way it's possible to match partial input against a pathspec
to see if this root would have a chance to actually match.<csr-id-5f21e24a3d8c98e726d822d2961978d729e66e43/> assure that .. patterns don't end up being . that matches nothing
...if the current-dir is one level in.
Now such . is special and means to match everything.
<csr-id-ea2e5bbc4657aba5d2209d9f22fa076148d5df6f/> Return ExactSizeIterator where applicable.
That way, the caller can obtain the amount of patterns more easily.
search::MatchKind, which is available for any search::Match.
With it the caller can learn how or why the pathspec matched,
which allows to make decisions based on it that are relevant
to the user interface.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
45b4470)f2e111f)bb48c4c).. patterns don't end up being . that matches nothing (5f21e24)Search::prefix_directory() and Search::longest_common_directory(). (57f0a24)face359)ae86a6a)str::precompose_bstr() for convenience (9e3acde)ExactSizeIterator where applicable. (ea2e5bb)Search::directory_matches_prefix() to see if the prefix of a pathspec matches. (f520a51)search::MatchKind, which is available for any search::Match. (021d4c1)Search::can_match_relative_path(). (e409e8d)b8cba96)
</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.
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)39f35da)3ef3bc2)62e1072)6ac89e5)
</details>3 commits contributed to the release.
<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>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-aea89c3ad52f1a800abb620e9a4701bdf904ff7d/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
e1aae19)e78a92b)4454c9d)aea89c3)8ee1194)5828f37)1691ba6)7549559)35439de)b6f2b81)
</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>
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
d3fd11e)55d386a)d3dcbe5)c0e72fb)b65a80b)065ab57)
</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>A maintenance release without user-facing changes.
<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>
68e5432)1347a54)995bc84)345712d)
</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-832b34570bde97499e75a174bc818113092b3145/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
7891fb1)8a60d5b)54a8495)common_prefix() and pattern_matching_relative_path(). (832b345)
</details>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 t
migrate errors to gix-error
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.
dyn trait where possible.
This reduces compile time due to avoiding duplication.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
8bd0456)375db06)dynification (f658fcc)dyn trait where possible. (072ee32)363ee77)
</details>Initial release with pack-verify
pack-verify<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
c68d9ab)48c4bbd)1f1b725)cce71aa)f276a05)4aa8022)e2a7bdd)41e01a5)e98e7c2)5fff552)0cc1bf2)aac0d34)af02b46)a4d978c)a1a0b13)5acecc5)1f9bc03)fce7035)b3780f8)13cd8ce)ac490c2)6794300)122d69f)6adf615)5b4979c)7add82c)3bf3321)c416152)60eaea0)caa883b)026a0dd)30925e6)67026e4)aaf4825)b820717)da3ae1c)b1e51d6)0fbba9f)ba6a8ef)f01c298)b09b4e1)0ac9c5a)8c0e0b5)7cec2b6)41f4bce)1179ac1)3ca2c59)aa8efdd)eb7388c)417c34b)87c8a2e)2aa0857)57737c2)c3d319f)
</details><csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/> <csr-id-533e887e80c5f7ede8392884562e1c5ba56fb9a8/> <csr-id-229bd4899213f749a7cc124aa2b82a1368fba40f/> <csr-id-bcad5c22049d56a25ef69d6c7a3344e78f9a1d4d/>
gix-attributes as attributes to make gix-glob and gix-attribute types available.git does.
This is important for selecting files on diskPattern::is_null() to be able to check for a special kind of spec.
That spec is indicated 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
there is only one implementation, that's no problem, but when that changes compilation
fails due to ambiguity.bstr to 1.0.1<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-f1421d31ab9e045f6b6599d21eb1a0723f90a242/> parse() now supports the configuration of defaults.
This allows the caller to control what happens if certain configuration
flags of pathsepcs aren't set.
These are typically provided by pathspec configuration environment variables.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
Clippy helped 4 times to make code idiomatic.
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
625eb1d)49fcab7)eb2dec0)4b2ed7e)8b9570f)7c84fb8)c04d4be)334659e)4d20cd9)31aba11)7d95f16)4b320e7)bstr to 1.0.1 (99905ba)rust-version to 1.64 (55066ce)6c62e74)30b2761)f23ea88)0d258f4)229bd48)a3afaa4)gix-attributes as attributes to make gix-glob and gix-attribute types available. (07a3e93)Defaults::from_environment() to be able to respect git environment settings. (fb9d4db)a2f1879)9f4dfe0)git does. (49db3ac)parse() now supports the configuration of defaults. (f1421d3)Pattern::is_null() to be able to check for a special kind of spec. (b3de72e)5f76ddf)4604f83)6b4a303)ef8ccd9)16295b5)9064ea3)c70e54f)69c6a36)ea9f942)aa16c8c)4f635fc)fe59956)clippy::redundant-closure-for-method-calls lint (bcad5c2)2560a2c)9a9fa96)3ef5c90)9375cd7)facaaf6)43ebaf2)6ebd61e)14e64e7)8dbd0a6)d0052c1)bitflags version. (594cca5)0f411e9)addd789)9604783)bstr v1.3, use *.as_bytes() instead of .as_ref(). (135d317)c56d336)c9275b9)git-testtools to gix-testtools (b65c33d)git-pathspec to gix-pathspec (37f7c6b)git-pathspec to gix-pathspec (a49ba33)git-attributes to gix-attributes (4a8b3b8)git-quote to gix-quote (648025b)git-hash to gix-hash (4a9d025)git-features to gix-features (e2dd68a)git-glob to gix-glob (35b2a3a)git-path to gix-path (d3bbcfc)c196d20)bac57dd)5b5b380)5ac9fbe)e6b9906)c57bdde)083909b)git-testtools (4eb842c)bcd9654)b2c301e)0e4462d)3d8fa8f)0c253b1)d071583)104d922)25a7726)29a043b)fd14489)172f73c)b2835cc)bc64b96)cef0b51)baad4ce)cfa1440)4974eca)e2ee3de)31c2351)f7f136d)533e887)bd5f3e8)c96473d)2f506c7)ce885ad)9b9ea02)6da8250)7db59a4)d88952a)&'static [u8]. (5a55dbf)e36d83e)4899722)SearchMode to MatchMode; add test (4f6fa59)0c9bef4)parser fuzz target to parse (ef03823)1cbc142)07352ce)63baa75)913d94c)b7baaa5)Name and Assignment (6449e77)bffbcee)9c6281f)2a775c6)6e93144)35c6d38)4d6befd)1838f3d)1bdf2e1)850bcc3)65c8349)24592f7)0849ebf)1f89646)89ea12b)9945ceb)3b2bab8)852bcc3)7bb408e)1ad98e8)c22e57f)7f00b50)2523f96)699de03)7f93231)02fba2c)44991d3)020bc24)b490b4a)f606515)c0196fa)f80eb85)998415d)149d1b3)eecd388)476fa56)9ceea27)f7a3b69)476f31c)d3ec61a)5a3c0fe)162f9a0)0bed938)57d8d90)f1f4ab3)6a569a7)13b7db5)2690b8a)a22b1d8)e8da186)a0477e9)d109cfe)fbed980)fece972)d6bee3f)
</details>Your coding agent can read these notes before it upgrades. Set up the MCP server →