NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1444 most downloaded on crates.io
A crate of the gitoxide project implementing the pkt-line serialization format
Last release 13 days ago
25 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
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.
This release adds the new ein tool query analytics engine, which maintains a database of a git repository as acceleration data structure to run useful
This release adds the new ein tool query analytics engine, which maintains a database of a git repository as acceleration data structure to run useful queries on.
It's nothing more than an MVP, and was inspired by a program to accelerate Git-Heat-Map.
ein tool query - a git analytics engine.
A tool to build and efficiently maintain a database of information contained
in a git repository, preferably the kind of information that is expensive to obtain,
in order to facilitate queries that would be prohibitive without an accelerating
data structure.gix tree entries with rev-spec support.
Previously it wanted a tree-id, now it can derive it itself.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
1 commit contributed to the release over the course of 1 calendar day.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
6704303)
</details>re-enable local-time support for all binaries The time improved the way one can opt-in to potential unsoundness in their local time support, forcing t
time improved the way one can opt-in to potential unsoundness
in their local time support, forcing the application to make that
decision at runtime.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
73372d0)
</details><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>
c9275b9)git-protocol to gix-protocol (823795a)git-features to gix-features (e2dd68a)6461c3d)git-repository to gix (7bed2a9)9e7d792)0f2ed59)
</details><csr-id-c3f2244541f0b6419d30782fbae825d33bd5fe16/> replace maybe-async with bisync.
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.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
842bc44)cb6ec7d)f0ec710)adf4b7a)maybe-async with bisync. (c3f2244)c16b5a1)43ff87a)9edeec9)
</details>avoid packetline panic on empty sideband payload GHSA-2vh6-hw4j-32ww reports that gix-packetline can panic when side-band progress or error packets co
<csr-id-4bef04ae8a261634200b3a6faabdd77e25aeb8c1/> avoid packetline panic on empty sideband payload GHSA-2vh6-hw4j-32ww reports that gix-packetline can panic when side-band progress or error packets contain only the band designator and no payload. The same unchecked indexing pattern also existed in PacketLineRef::decode_band() for direct empty side-band data.
Git baseline: git.git sideband.c demultiplex_sideband() handles side-band records by checking the received length before using the band designator, reports missing designators as protocol errors, and permits progress/error payload handling without assuming non-empty text.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
98d2433)34e6eb5)4bef04a)155ff6d)9402adc)f7d4f33)
</details>6 commits contributed to the release over the course of 30 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
10c58bb)ab2fee1)2cb17b2)e10d5f6)3675a8d)4d5ba23)
</details>9 commits contributed to the release over the course of 32 calendar days.
<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>8 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)5213afe)6bdb331)e8bf096)gix-hash (e71c703)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 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>std::ops::ControlFlow where possible<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
562e684)std::ops::ControlFlow where possible (5c1bd03)
</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>gix-packeline features additive.
For good measure, everything that was touched is marked as breaking change.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
82ff92f)cbf7445)7289a04)bce8468)gix-packeline features additive. (f2c6a19)fbf9c39)
</details>3 commits contributed to the release over the course of 1 calendar day.
<csr-id-6f469a6fea59c88e6c69a5f94b0bc8a5977cb75b/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
bdcce5f)doc_auto_cfg feature to fix docs.rs documentation. (6f469a6)3313233)
</details>10 commits contributed to the release over the course of 99 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
49f8d53)89fb308)4da2927)b188a7d)6cc8464)9365cc3)838ff95)1dfc312)ReadDataLineFuture as #[allow(dead_code)] (cf21d0d)784c046)
</details>Actually avoid serde as dependency, when the serde feature is off faster-hex has serde as default dependency, and was not marked with default-features
serde as dependency, when the serde feature is off
faster-hex has serde as default dependency, and was not marked with
default-features = false.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
5a919c4)65037b5)874cc38)serde as dependency, when the serde feature is off (0d67c85)8d4c4d1)
</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>
e104545)5f7f805)631f07a)
</details>cargo-auditable build error Use futures-lite instead of dep:futures-lite in gix-packetline and gix-protocol.
<csr-id-a86c2019f0f4f55b585d7d3686142d64d29960c1/>
futures-lite instead of dep:futures-lite in gix-packetline and
gix-protocol.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
cc5b696)db0b095)0bf84db)f1bb269)futures_lite::ready! with std::task::ready! (a86c201)b5e9059)68e6b2e)19f50d0)11bd59f)420e730)1c4d973)
</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/>
Clippy helped 1 time to make code idiomatic.
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
d248e3d)ada5a94)4d3946f)b41312b)38dff41)1370420)16a248b)8e96ed3)8df0db2)
</details>7 commits contributed to the release over the course of 27 calendar days.
<csr-id-17835bccb066bbc47cc137e8ec5d9fe7d5665af0/>
<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>
dea106a)1f6390c)7ec21bb)rust-version to 1.70 (17835bc)1ca480a)9193b05)d22937f)
</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>
beb0ea8)c1ba571)7ea8582)06ef1e9)9739620)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)8ce4912)bc9d994)7a40648)0f0e4fe)db5c9cf)
</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-id-64ff0a77062d35add1a2dd422bb61075647d1a36/>
<csr-id-17573779688e755a786546d5e42ab533088cd726/> remove all workspace dependencies The problem is that with them, we don't notice anymore if the crate changes, because a dependency changes. That also means that older versions of the dependency may stay even though some other crates might pick up a newer version.
Ultimately, this will lead to drift and subtle incompatibilities.
We declare this breaking to enforce a proper re-release.
<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>
f1364dc)3f7e8ee)795962b)64ff0a7)37c1e4c)af03832)93e86f1)012a754)d69c617)b91d909)649f588)beba720)37ba461)fc45c93)2e0ce50)f992fb7)ec69c88)46cd1ae)1757377)
</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/>
Clippy helped 1 time to make code idiomatic.
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
4fe330e)f2b522d)a65a17f)d19af16)0f25841)12313f2)ae2b733)9fa1054)
</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>
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>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)
</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>9 commits contributed to the release over the course of 21 calendar days.
<csr-id-aea89c3ad52f1a800abb620e9a4701bdf904ff7d/>
<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>
e1aae19)e78a92b)4454c9d)aea89c3)d38d1cc)1691ba6)ff1542c)faster-hex crate to latest version (b0bfd01)prodash to latest version (97f62cb)
</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-id-c3edef1c0c49accbb037bdf086dade3ed0e5e507/> make it possible to trace incoming and outgoing packetlines. Due to the way this is (and has to be) setup, unfortunately one has to integrate that with two crates, instead of just one.
This changes touches multiple crates, most of which receive a single boolean as last argument to indicate whether the tracing should happen in the first place.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
d3fd11e)55d386a)d3dcbe5)5a0d93e)bb3224c)2b80d84)cfe078c)c0e72fb)b65a80b)e7de4c7)c3edef1)
</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/>
Clippy helped 1 time to make code idiomatic.
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
68e5432)1347a54)345712d)
</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/>
Clippy helped 1 time to make code idiomatic.
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
8bd0456)375db06)6135a5e)gix (805b8aa)5044c3b)363ee77)
</details>6 commits contributed to the release over the course of 5 calendar days.
<csr-id-229bd4899213f749a7cc124aa2b82a1368fba40f/> <csr-id-145125ab79526a6191a9192a6faa7fe1a8826935/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
6c62e74)30b2761)f23ea88)229bd48)4a4fa0f)faster-hex instead of hex (145125a)
</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>
0062971)107a64e)16295b5)c4cc5f2)5cb3589)2fc66b5)9064ea3)
</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)420553a)2578e57)150463c)dbf8aa1)2087032)
</details>docs.rs to build docs again Fixes https://github.com/Byron/gitoxide/issues/868 by using a valid feature declaration for use on docs.rs.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
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-id-b83ee366a3c65c717beb587ad809268f1c54b8ad/> Rename serde1 cargo feature to serde and use the weak-deps cargo capability.
With it it's possible to not automatically declare all optional dependencies externally visible
features, and thus re-use feature names that oterwise are also a crate name.
Previously I thought that serde1 is for future-proofing and supporting multiple serde versions
at the same time. However, it's most definitely a burden I wouldn't want anyway, so using
serde seems to be the way to go into the future.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
serde1 cargo feature to serde and use the weak-deps cargo capability. (b83ee36)d7173b2)e4df557)91134a1)30a1a71)cdef398)19338d9)
</details>2 commits contributed to the release.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
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-id-92f6d325e23a0ccdf97afaa515a1397e4925ca1d/> packet-line progress loop is now interruptible. WithSidebands may loop internally to consume remote progress, but that doesn't play well if this reader is supposed to be interruptible, as interrupt checks are implemented on the outer layer, not on the innermost one.
Now the progress handler can return a flag indicating whether to continue or abort, which allows the caller to check for interrupts, and thus abort the inner loop.
<csr-id-bfd8c04d95ddf2e028cc937a26f1a0d03360b403/> rename WithSidebands::read_line() to *::read_line_to_string().
Also, we remove the existing blocking read_line() override as it's not
representable in the async implementation anyway, to unify both implementations
once again.
The new name also makes sure that we are not accidentally calling a built-in
implementation on the BufRead trait as it's clear our method has to be called
under a different name.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
c1f1bfb)c66e298)3836cc0)cc0f506)92f6d32)531dd19)WithSidebands::read_line() to *::read_line_to_string(). (bfd8c04)
</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>Allow 'refactor' and 'other' in conventional messages if they have breaking changes (`4eebaac`)
<csr-id-5a74999f853215feb33140997c4a0dc62e49df66/> <csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/> <csr-id-533e887e80c5f7ede8392884562e1c5ba56fb9a8/>
<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.
bstr to 1.0.1<csr-id-d7f62b441700c6d3526517c8c4f369cb9a72c102/> support keepalive packets. Keepalive packets are side-band only empty datalines that should just be ignored. This is now happening, allowing longer git operations to work as they will send keepalive packets every 5 seconds, and previously we would choke on it.
Note that empty datalines are never send otherwise, making it a previously unused marker that can safely be skipped.
WithSidebands now offers a read_data_line(byte_buf) method.
That way one won't have to assume UTF8 encoding in the returned buffer.
Note that the reason for it not returning a reference to its internal
buffer is due to the async implementation requiring it. Its future-based
architecture can't really express the lifetimes associated with it (yet).<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
04b9ca0)e695eda)0c81769)a517e39)4eebaac)4a9a05f)f536bad)a0bc98c)01b2466)715ea54)2f75db2)e1861ca)58ab2ae)c857d61)6b5c394)9d6f263)719b6bd)2f43a54)9a493d0)6776a3f)84cb256)caa7a1b)rust-version to 1.64 (55066ce)aa61993)59e9fac)48f5bd2)a5869e0)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-packetline to gix-packetline (5cbd22c)git-packetline to gix-packetline (1fa9698)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)1e544e8)39ed9ed)e6b9906)7114bbb)c57bdde)083909b)f1160fb)9d8e32d)WithSidebands now offers a read_data_line(byte_buf) method. (41fdb84)8fb21d7)bcd9654)b2c301e)e4648f8)0e4462d)3d8fa8f)104d922)d232567)702a161)f47c891)25a7726)f5c36d8)29a043b)fd14489)e10554d)1d85564)bc64b96)cfa1440)4974eca)e2ee3de)31c2351)b1c40b0)f7f136d)5176771)533e887)bd5f3e8)c96473d)c06ae1c)ce885ad)9b9ea02)6da8250)7b61506)4e7b343)e9fcb70)085e76b)a22b1d8)598c853)349c590)654cf39)045e6fa)099bd5b)e58dc30)c35e62e)42ebb53)1b76119)8f57c29)d78aab7)373cbc8)674ec73)8900d69)7d2e20c)d1a956d)7dd2313)d3f9227)acd3737)ec38950)126aeec)f606fa9)f69b2d6)39b40c8)0e02953)59ffbd9)a474395)21541b3)bf0106e)c956f33)d39fabb)4f9da02)49f5453)1795a33)081faf5)b09f391)878d8e8)0c7c599)b3fd65d)23438fd)d4c16a9)ffd96f9)2276e2a)5e0edba)7ffbd60)c40faca)f123f69)c67291f)ad6d7f9)b327590)2ef3106)c52a491)a77a71c)e1964e4)bd94ea5)e7b9d96)3c23820)3d2456e)2698dae)22bda81)3f7e27b)6200ed9)a3b5d75)52eb953)3a06adb)7f5da18)4776039)d99a1a8)4cce648)14c9093)ee01c79)d4e56c8)769c649)7e513f1)63cb0fc)fed6c69)51c63c0)e67d77d)91c2895)8007c65)a2b44c8)f16b012)e300f9f)8eb78f5)c05bd79)890cc50)a97bbfd)7e834f5)b4ff4e7)22740c5)88511f7)3866517)01e15c8)96d0ecf)194c991)42a7d00)1e8b006)3d53404)3c487de)adc365e)88b8bc3)4d8f4b5)60164fd)4a47c9e)e8b2dd1)3bb9cf1)2a84b78)119fcc3)374f129)34f48c3)f038ca1)c8178d7)439a7b7)d698d7b)eef8c9f)fbffd89)70ce3c9)445fac6)6c5750a)dc4e0e5)3b3c53d)3299548)432b214)acdcfb7)2c44350)13127ee)cbd6291)7933698)8361238)88a971d)ebc4703)ab4b30e)7d79288)b26c43b)1a986fb)0bef59c)916c862)0220bca)727ad97)c8ba842)380e8b2)cf50f28)1328c5b)334e129)513e7ad)1c13706)17ab380)d863de0)4591e46)ec5a54e)e5769d1)fef3c9f)8c4cc3f)d91b241)d9514ee)5c791af)77764f3](https://github.com/GitoxideLabs/gitoxide/commit/77764f3b9c3e8202119bb9327Your coding agent can read these notes before it upgrades. Set up the MCP server →