NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1162 most downloaded on crates.io
A crate to integrate various capabilities using compile-time feature flags
Last release 12 days ago
25 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 42 of 44 stable releases
1 version withdrawn
withdrawn after publishing
4 years old
45 releases · first in 2023
One column per quarter.
4 commits contributed to the release over the course of 12 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
Nothing published for this version
Nothing published for this version
7 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)4c77f81)adb8328)
</details>2 commits contributed to the release over the course of 2 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
53f880c)4d5ba23)
</details>allow credential fill with gix credential fill to run without a repo
<csr-id-6f469a6fea59c88e6c69a5f94b0bc8a5977cb75b/>
gix credential fill to run without a repo<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
leb64 and secure leb64_from_read from overflows<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
f9fbcba)63b8419)7429b15)leb64 and secure leb64_from_read from overflows (c0ab0f4)444a92b)package.include patterns more specific so they don't match ignored files (c2c917f)98bae84)7eb98cb)2ce6dde)24a4d6b)
</details>4 commits contributed to the release.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
c389a2c)6183fd0)6bdb331)9327b73)
</details>9 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)7415d31)14d8909)8bceefb)7ce3c55)a7f2348)zlib inflate and deflate. (00cae95)2a8cdf1)f7d0975)
</details>add a gix commit sign prototype
gix commit sign prototypegix branch list<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
8699d0f)82f788e)gix commit sign prototype (aacc326)4da2927)6cc8464)gix-blame (a721e74)gix-blame (268dac4)525873f)04650a7)6651548)e537611)gix branch list (58b5060)c149116)gix tag list when JSON is requested (fb2766b)
</details>prodash and crosstermion to the latest version.
This will fix the cargo deny issue as it brings in a newer lru crate.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
cbbdef5)562e684)fa302a1)0a333e5)ee0a1f6)prodash and crosstermion to the latest version. (2358b1d)c663b3f)
</details>4 commits contributed to the release over the course of 5 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
7be8f90)d914d95)4edc5dd)211b4fb)
</details>4 commits contributed to the release over the course of 9 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
115e208)a000a73)d77e15f)d6c5b9d)
</details>add first debug version of gix tag list
<csr-id-37d3bf24ac1a79302f3e97b97372e4ad381c45e2/> add first debug version of gix tag list
<csr-id-ab52a49a555ab25e6cf632cb0b080eab72958a7d/> gix revision list --long-hashes for faster iteration.
The performance of the short-hash generation was improved as well.
<csr-id-c5bc49f2a02e9b28c2466ea4c7ae711d091ffc96/> support for commitgraph list from..to to exercise the new 'hide' capability.
<csr-id-1df1ebb34dd3e2101d8a112dda66f6bac5261ea7/> Enable precious file parsing in gix CLI by default, allow overrides.
That's pretty neat as one can now set GIX_PARSE_PRECIOUS=0 in the environment
to disable precious file parsing, good to see what difference it makes.
It's also possible to do this wiht gix -c gitoxide.parsePrecious=0.
<csr-id-36a6ffeea7bbde7fb3689ddf2a107e09a50e602c/> add support for multiple blame ranges like gix blame -L <range> -L <other-range> ...
Update the blame subcommand to handle multiple line ranges. This allows specifying multiple -L options similar to the usage of git.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
c7af04d)750ae9b)gix tag list (37d3bf2)c2eb0c1)bfb1c34)dd5f0a4)f933f80)gix revision list --long-hashes for faster iteration. (ab52a49)gix-blame (4afc51d)76eddf8)3e5365c)92febae)commitgraph list from..to to exercise the new 'hide' capability. (c5bc49f)5f9de52)gix CLI by default, allow overrides. (1df1ebb)de13b16)d4461e7)gix blame -L <range> -L <other-range> ... (36a6ffe)gix-blame (8143d69)
</details><csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
21fecdf)b77744f)2384d0c)e08b9b5)a75c852)93dd630)703644c)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>remove unused and previously deprecated zlib related features. We now use zlib-rs directly.
zlib related features.
We now use zlib-rs directly.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
89fb308)4da2927)b188a7d)6cc8464)9365cc3)838ff95)752d6dc)e5a7487)zlib related features. (f47f3e4)0e7aa81)gix-features, use libz-rs-sys directly, skipping flate2 (5a2361b)202bc6d)
</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>
d64f257)5e0122d)473fe52)428412c)784c046)
</details>4 commits contributed to the release.
<csr-id-f952c101cc8686e685074e8604e0f332c06d6767/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
<csr-id-6c77b541b476656827ee0542a650b9731ba549cf/> walkdir_sorted_new adds max_depth parameter max_depth parameter determines the maximum depth the WalkDir will recurse into.
Example values:
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
5a919c4)65037b5)60c29a5)43f92b5)6c77b54)dab97f7)a9a8ea1)c2eb0c1)bfb1c34)f8d7c0a)151e3a5)8d4c4d1)
</details>3 commits contributed to the release.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
e104545)5f7f805)631f07a)
</details>add first 'debug' version of gix diff file
<csr-id-dd366a52d46078729a6e36468211b97c92c2921d/>
gix diff file<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>
b10cc6f)1039ae9)dd366a5)gix diff file (dbb1532)dce127e)gix-blame (8a31d88)36a846f)7059609)--since (330711d)gix-blame (e7084d8)6acca19)147eb41)16a248b)8e96ed3)
</details><csr-id-788290717da8ec396635aec386af99e1917bf3a0/> gix-features uses and republishes bytesize version 2
gix-features republishes bytesize, which has been bumped from
major version 1 to major version 2. Because the interface of
bytesize is effectively part of that of gix-features due to
the explicit republication of the bytesize module in full (with
no documented extra limitations related to interface stability),
this is effectively a breaking change in gix-features as well,
though many callers may not be substantially affected.
Major changes that may affect some callers that use bytesize
through gix-features include the removal of the top-level
bytesize::to_string() function, the change in default behavior
from displaying decimal SI units to displaying binary IEC units
(though all or most gitoxide-related creates, in adapting to the
changes, have thus far opted to continue using decimal SI units),
and the small but UI-facing change that decimal SI kilobytes
(units of 1000 bytes) are given with the symbol "kB" rather than
the more ambiguous (and arguably less accurate) symbol "KB".
In addition to republishing bytesize, gix-features also
republishes prodash. Futhermore, some uses of bytesize are
transitively through prodash, which itself has recently received
an update to use bytesize major version 2. (Since prodash does
not republish bytesize, that is not considered to be a breaking
change in prodash itself.) To get the benefits of the newer
version of bytesize while avoiding new inconsistencies, and also
to avoid depending on multiple versions of bytesize, the
prodash dependency version has also been upgraded.
For more information, see:
<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>
cc5b696)49fa9f3)db0b095)0bf84db)3b1bef7)c3c6504)6f009d7)46227e6)06bf1e1)9e075b9)96164c5)f3684a4)8ece02a)5823b22)gix-features uses and republishes bytesize version 2 (7882907)3aec7fb)9f1fbc7)b5e9059)68e6b2e)79dabb0)1792178)1612c73)
</details>make fs::walkdir_sorted_new() sort entries by paths literally This follows up 7b1b5bf864e74706aefeb1213e8bdb0545d5464a. Since packed-refs appears to b
<csr-id-38b63c2fc9d407b3c634d8b0c72d4d0c104aa5ad/> make fs::walkdir_sorted_new() sort entries by paths literally
This follows up 7b1b5bf864e74706aefeb1213e8bdb0545d5464a. Since packed-refs
appears to be sorted by full ref name, loose-refs should also be emitted in
that order.
The comparison function is copied from gix::diff::object::tree::EntryRef. Non-utf8 file names are simply mapped to "" on Windows. We could add some fallback, but callers can't handle such file names anyway.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
add gix env to print paths relevant to the Git installation.
gix blame -L start,endgix env to print paths relevant to the Git installation.gix blame to the CLI
That way it's possible to see the blame result of any file in the
repository.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
90fef01)gix blame -L start,end (4a78395)851a7c4)31d83a4). for consistency (ddddf02)gix env to print paths relevant to the Git installation. (75d689f)278125a)6ed9976)4ffe6eb)gix blame to the CLI (80e5804)
</details>gix_hash::hasher, and we now use
sha1-checked unconditionally.gix_hash<csr-id-7b1b5bf864e74706aefeb1213e8bdb0545d5464a/> fs::walkdir_sorted_new now returns files first.
It's only used by gix_ref for reference traversal, which now needs this
to be sorted differently to work correctly.
As this isn't easily possible in the parallel walk implementation, it's hereby removed,
along with the fs-walkdir-parallel feature toggle.
<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)4660f7a)4501086)fd12ef8)gix_hash (e4439aa)f253f02)cd96b64)fs::walkdir_sorted_new now returns files first. (7b1b5bf)316f113)5e618b6)8b1b55c)10e41ee)cf7f34d)16a248b)8e96ed3)8df0db2)
</details>add first 'debug' version of gix log It's primarily meant to better understand gix blame.
gix log
It's primarily meant to better understand gix blame.--tree-favor to gix merge tree|commit.
With it one can decide which side to favor in case of
irreconcilable tree-conflicts.gix merge file now uses THEIRS instead of OURS where needed<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
gix merge file now uses THEIRS instead of OURS where needed (0727b56)29cb775)gix log (c7e04e9)520c832)gix-diff (960773e)--tree-favor to gix merge tree|commit. (471e046)e8ce25f)
</details><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>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>
8ce4912)bc9d994)7a40648)0f0e4fe)db5c9cf)
</details>Expose the decoded path, query pairs, and fragment of Git remote URLs separately. Consumers can identify repository paths and inspect HTTP(S) paramete
add Url::path_query_fragment()
Expose the decoded path, query pairs, and fragment of Git remote URLs
separately. Consumers can identify repository paths and inspect HTTP(S)
parameters without implementing scheme-specific splitting and decoding.
Recognize delimiters before decoding and reuse validated original spelling
to borrow decoded bytes. Preserve encoded separators, nested escapes,
ordered duplicate query keys, and literal percent text after construction
or mutation. Query pairs use form decoding (+ becomes space); SSH/SCP
paths, existing accessors, and serialization keep their behavior.
Reference Git's connect.c::parse_connect_url() and url.c at
1630431f326e. Use fetch-pack --diag-url to check SSH delimiters;
standalone url-parse does not model that transport.
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.
Url::path_query_fragment() (cd90fe1)gix merge commit --debug
This yields additional debugging information with details about detected conflicts.gix merge commitsgix merge tree to merge trees similarly to git merge-tree.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
0b7abfb)gix merge commit --debug (0a5993f)905e5b4)gix merge commits (4a5afc7)a876533)gix (8d590f3)3fb989b)gix merge tree to merge trees similarly to git merge-tree. (84707c2)80e006b)
</details><csr-id-64ff0a77062d35add1a2dd422bb61075647d1a36/>
<csr-id-cdf2a6320e208bac69b9b1152c10f0b81b238c3e/> rename hash::Sha1 to hash::Hasher and Sha1Digest to Digest.
That way, one day we can turn this type into a compatible one which produce
different kinds of hashes as well.
<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 1 time to make code idiomatic.
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
3f7e8ee)795962b)64ff0a7)37c1e4c)af03832)93e86f1)012a754)d69c617)hash::Sha1 to hash::Hasher and Sha1Digest to Digest. (cdf2a63)649f588)beba720)37ba461)fc45c93)7b6e176)2e0ce50)a64d94e)flate2 to a version which hopefully runs on Windows by default. (77e808b)c3a7dcf)29ad2df)f992fb7)ec69c88)46cd1ae)1757377)9fa1054)
</details>assure high-speed SHA1 assembly is only used in not on Windows
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
2683235)4f98e94)9511416)d6cd449)79dce79)
</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>support for listing worktrees with gix worktree list
<csr-id-28ac6572722f7ea31795dc0417521c70bcb6ec8f/> <csr-id-786bfec7c2cf25a68705b6ef09ba6390600742b8/>
<csr-id-c7213bcf2cf6be4058a78dbd86bbab4c5ad4afa7/> support for listing worktrees with gix worktree list
<csr-id-0c554e096cf2bf0a2bb91397143f524219693a3b/> add first 'debug' version of gix diff tree.
It's primarily meant to better understand gix blame.
<csr-id-9c8bc03de99e6494abd9755deef7e7be5577bce2/> add new gix cat command.
It only prints things without fuzz.
Inspired by https://youtu.be/JYH5ILv5g1g?si=bHLBPFJiZyRUTl6u&t=211.
<csr-id-3da2da9d7993adc16b19fc63e7524c768a6e2e7f/> add gix merge-file with similar features as git merge-file
<csr-id-7249291016253647c920852fb37eb9e29d615775/> gix merge-base for the CLI
For now it only supports the standard merge-base, but more derivatives
can be added easily on demand.
gix clean warning and help for worktree fixgit clean options
-r/--repositories and --skip-hidden-repositories to make it
clearer what their relationship is, avoid creating the false
impression that repositories are never deleted in the absence of
-r/--repositories, and note that --skip-hidden-repositories
is sometimes needed to preserve not only separate repositories but
the (probably rarer) case of hidden nested worktrees of the current
repository.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
gix commit-graph is (49bca2a)48aa74b)0bebe52)f186c23)6777ecb)gix diff tree. (0c554e0)31bdd2e)gix cat command. (9c8bc03)5ffccd2)gix merge-file with similar features as git merge-file (3da2da9)e0b09d2)d69c617)649f588)gix merge-base for the CLI (7249291)beba720)f992fb7)ec69c88)472fe5f)786bfec)25a3f1b)b31d6b7)5871fb1)time to jiff (28ac657)a9aac4f)gix clean warning and help for worktree fix (6eb4ea6)c241422)33eacfb)gix worktree list (c7213bc)
</details>fs::read_dir::DirEntry with precompose_unicode support.
It's available with the fs-read-dir feature toggle.precompose_unicode flag in fs::walkdir types.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
eb6aa8f)6a2e0be)5d176fc)fs::read_dir::DirEntry with precompose_unicode support. (24d081a)precompose_unicode flag in fs::walkdir types. (47e2fec)
</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>
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>preserve allocation failure sources
preserve allocation failure sources
rubberstamp
Keep the original TryReserveError inside the OutOfMemory I/O error so structured classification can distinguish allocator failure without treating malformed stream metadata as corruption.
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.
<csr-id-202f3e48a96b38d32b11d28449358c7d1f3546ff/>
mailmap check similar to git check-mailmap.
That way it becomes a little easier to maybe try out other special cases
in the wild.gix clone with --ref support.
--ref is similar to --branch, but was renamed as it also supports
tags for example.<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>
f107014)mailmap check (3e08fa3)mailmap check similar to git check-mailmap. (2a56387)9fa1054)ecfde07)gix clone with --ref support. (9bf01e4)2f9f0ac)acc1331)bb30e52)bf5a111)src/plumbing/main.rs (4596a39)0b5dc74)202f3e4)
</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)f130f63)
</details>3 commits contributed to the release over the course of 1 calendar day.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
55d386a)d3dcbe5)5d8b5f4)a12682d)1d45f05)5c2d615)5a0d93e)bb3224c)c65b80b)1383b0d)c0e72fb)b65a80b)065ab57)
</details>6 commits contributed to the release over the course of 30 calendar days.
Store::at() where possible (17fea2a)<csr-id-886d6b58e4612ac21cc660ea4ddf1dd0b49d1c6e/> checkout respects options for core.protectHFS and core.protectNTFS.
This also adds gitoxide.core.protectWindows as a way to enforce
additional restrictions that are usually only available on Windows.
Note that core.protectNFS is always enabled by default, just like
it is in Git.
<csr-id-addf446f052ff74edcdb083f2b2968b313daa940/> more robustness in the face of a trampling-herd of threads loading a single index. The motivating example is here: https://github.com/praetorian-inc/noseyparker/issues/179
Previously, it was possible for a trampling herd of threads to consolidate the disk state. Most of them would be 'needs-init' threads which could notice that the initialization already happened, and just use that.
But a thread might be late for the party and somehow manages to not get any newly loaded index, and thus tries to consolidate with what's on disk again. Then it would again determine no change, and return nothing, causing the caller to abort and not find objects it should find because it wouldn't see the index that it should have seen.
The reason the thread got into this mess is that the 'is-load-ongoing' flagging was racy itself, so it would not wait for ongoing loads and just conclude nothing happened. An extra delay (by yielding) now assures it either seees the loading state and waits for it, sees the newly loaded indices.
Note that this issue can be reproduced with:
'./target/release/gix -r repo-with-one-pack -t10 --trace odb stats --extra-header-lookup'
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
d6cd449)79dce79)core.protectHFS and core.protectNTFS. (886d6b5)f3d5a69)04ef31e)addf446)
</details>hash::bytes_with_header(), also make it 32bit compatible.
That way it's possible to hash entire files as object.
Previously it wasn't possible to read more than u32::MAX bytes even
on 32 bit system even though we are streaming the data.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
68e5432)1347a54)b842691)hash::bytes_with_header(), also make it 32bit compatible. (4c03fdb)
</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.
<csr-id-84c74ffa698d35f8395c63db6acd3d0e6700d07f/> add gix status --ignored support
<csr-id-66e87cd31c060c3f97ac685ee0541c408f600362/> add gix status --index-worktree-renames
This enables rename-tracking between worktree and index, something
that Git also doesn't do or doesn't do by default.
It is, however, available in git2.
<csr-id-61c002bc4ca5b5345c411e561fdcb492e7ae1d97/> gix status with submodule and rewrite support.
Submodule changes are now picked up as long as the submodule is
in the index.
Further, it's possible to enable rename-tracking between
index and worktree separately.
<csr-id-98b368095ec99d1bc287da7f9294a9fce424deed/> add gix is-clean|is-changed
It's a good way to compare the time it takes to run a full status
compared to a quick is-dirty check.
<csr-id-afd20caadb40b6b793f2099b7232669f9a8f9086/> gix submodules list --dirty-suffix for dirty-information
This is a submodule-centric and greatly simplified way of obtaining
describe information with dirty-suffix.
Note that status information is also possible, but it seems
hard to display nicely, which this command isn't great at
in the first place.
<csr-id-58231b418fa39ea122ef41bb7691289f5b0be855/> add gix commit describe --dirty-suffix
That way a suffix will be added depending on the dirty-state of the repository.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
55f379b)f72ecce)3e5c974)gix status --format to communicate the current format is very simple. (23bea36)gix status --ignored support (84c74ff)gix status --index-worktree-renames (66e87cd)f8ce3d0)gix status with submodule and rewrite support. (61c002b)gix is-clean|is-changed (98b3680)gix submodules list --dirty-suffix for dirty-information (afd20ca)gix commit describe --dirty-suffix (58231b4)
</details>threading::make_mut() to allow obtaining a mutable reference to shared data.
This is particularly useful when handling an index file, which may be shared across clones of
a repository.<csr-id-7a8f79357ce99c4b86e22be166b54f7376c71469/> cargo-auditable build error
Use prodash instead of dep:prodash in gix-features and tracing
instead of dep:tracing in gitoxide-core.
The dep:mydep syntax removes the implicit mydep feature for optional
dependencies, this triggers a bug in cargo that affects
cargo-auditable. See https://github.com/rust-lang/cargo/issues/12336
This affects some Linux distributions like NixOS which use
cargo-auditable by default. Related issues:
FnOnce.
This way, all unnecessary cloning is avoided.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
7891fb1)8a60d5b)54a8495)threading::make_mut() to allow obtaining a mutable reference to shared data. (5197196)FnOnce. (70c7c29)14e0763)7a8f793)1f2ffb6)progress in PrepareFetch::fetch_only (70989b3)
</details>add gix clean --patterns-for-entries|-m to help with wildcards.
gix clean --patterns-for-entries|-m to help with wildcards.gix clean<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
d53504a)-n argument as no-op to make them more compatible. (8959b21)gix clean --patterns-for-entries|-m to help with wildcards. (9863d75)ed79aa7)e25d7eb)cebeedf)454e6b9)4ac597a)4fd6ab8)abe0043)c0c4d59)cc8d008)1ecc96d)fcd585b)face359)gix clean (e8597f3)d4d478b)2482023)39f35da)3ef3bc2)
</details><csr-id-ed327f6163f54756e58c20f86a563a97efb256ca/>
prodash::Count to indicate that nothing more than counting is performed, in place of prodash::Progressdyn 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)prodash::Count to indicate that nothing more than counting is performed, in place of prodash::Progress (24dd870)prodash (ed327f6)363ee77)
</details>Add rev parse --reference. It's similar to git rev-parse --symbolic-full-name.
rev parse --reference.
It's similar to git rev-parse --symbolic-full-name.<csr-id-59b8104a5320d946abc9f5736fa76696cef1459d/> mark gix::interrupt::init_handler() as unsafe
The passed interrupt() argument will be called from a signal
handler, so that needs to be documented and the call sites need to
state that they fulfill the contract.
Thanks to @Manishearth for pointing this out.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
4454c9d)a78caba)0fe20e8)rev parse --reference. (193ffcd)1691ba6)4917beb)gix::interrupt::init_handler() as unsafe (59b8104)
</details>A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
30b2761)f23ea88)
</details>add interrupt::Write to auto-fail writes on interrupt.
interrupt::Write to auto-fail writes on interrupt.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
16295b5)c4cc5f2)5cb3589)2fc66b5)1dda48b)interrupt::Write to auto-fail writes on interrupt. (7179509)9064ea3)
</details>gix rev parse --format to provide different versions of the same content. This only applies to blobs, but allows to obtain different versions of the s
<csr-id-4aea9b097fb08e504cdfc4a7c3b7511a308dc074/> <csr-id-c6e83cf69f1a17e9ba3010bcce3a4ddd3305424c/> <csr-id-8f795e8abf706a24fe104500bf15efaa2bc07b15/> <csr-id-8dfbb4ba531d86894a59e2b85ec29cd3133c8c4d/> <csr-id-f9ae1bc6b514b6bbcda2c672f7b7ccbd999356a0/> <csr-id-886289f98003f935d774a40f6db746ae70649936/>
<csr-id-cf51a4de2d06eb28435ef8e386131710003b6928/> gix rev parse --format to provide different versions of the same content.
This only applies to blobs, but allows to obtain different versions of the same blob
like:
--trace mode, greatly increase message-buffer size.
That way, it's much less likely that messages will get lost
due to being overwritten before they can be displayed every
100ms or so.GITOXIDE_* environment variables to GIX_#<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
8156340)GITOXIDE_* environment variables to GIX_# (2189cee)5fdc9df)gix rev parse --format to provide different versions of the same content. (cf51a4d)51c7abc)dfb3f18)gix-diff (1706e23)diff::resource_cache() low-level utility for rapid in-memory diffing of combinations of resources. (4aea9b0)5ce9784)c6e83cf)5a0d93e)be1fa2f)bb3224c)1f9aca5)fsck connectivity into just fsck much like git fsck (7ab5c76)7a88b42)8f795e8)48ef17e)--tree-style raw. (8dfbb4b)e7de4c7)-c options are given on the command-line. (f9ae1bc)--trace mode, greatly increase message-buffer size. (b230078)16170d9)gix free discover to inform about repository discovery. (886289f)fb81093)7f2bc08)eab22bd)
</details>in_parallel_with_finalize to support a usecase for gix-worktreezlib::stream::inflate::ReadBoxed.
It was a special-case type that was only used in one spot, and thus
not really that interesting to have in a shared place.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
68ae3ff)c70e54f)e4dded0)8a46a7e)zlib::stream::inflate::ReadBoxed. (032cea3)b19a56d)in_parallel_with_finalize to support a usecase for gix-worktree (2a76929)
</details>A re-release to deal with breakage in the dependency tree (self-caused).
A re-release to deal with breakage in the dependency tree (self-caused).
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
b7c9275)
</details>A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
This release includes an overhaul of the url parsing implementation, allowing more urls to be parsed correctly and refining the error messages for inv
This release includes an overhaul of the url parsing implementation, allowing more urls to be parsed correctly and refining the error messages for
invalid ones. Improvements include the added support for ssh aliases (github:byron/gitoxide has previously been parsed as local path), adjustments
around the interpretation of colons in file names (previously we disallowed colons that were not followed up with a slash character) and some smaller
changes that bring the interpretation of file urls more in line with Git's implementation.
There are still many (edge) cases in Git's url parsing implementation which are not handled correctly by Gitoxide. If you notice any such deviation please open a new issue to help us making Gitoxide even more correct.
gix status auto-writes changed indices.
This prevents expensive operations to re-occour.gix status -s/--statistics to obtain additional information on what happened.
This is useful for understanding performance characteristics in detail.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
681c607)fdd2df8)215c3ac)70923a0)b842691)f929d42)gix status auto-writes changed indices. (46e5919)gix status -s/--statistics to obtain additional information on what happened. (7ba2fa1)
</details><csr-id-bcad5c22049d56a25ef69d6c7a3344e78f9a1d4d/>
<csr-id-093efafa7c39aa03bfef4894779cca6e3716f471/> add tracing feature toggle to provide minimal tracing API
This API is based on tracing-core, not on tracing, and provides a limited
API that is always available, while being a no-op if tracing isn't enabled.
That way, plumbing crates can add instrumentation at will.
new_thread_state() functions are now FnOnce across the board.
This properly communicates that they will only be called once per thread,
while providing more options to the implementor.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
ea9f942)18b0a37)aa16c8c)4f635fc)tracing feature toggle to provide minimal tracing API (093efaf)new_thread_state() functions are now FnOnce across the board. (bc69804)fe59956)clippy::redundant-closure-for-method-calls lint (bcad5c2)
</details>This release contains a security fix which assure URLs like 'ssh://-oProxyCommand=open$IFS-aCalculator/foo' will not execute attacker-controlled strin…
<csr-id-d3ac691446c9d029eb4f04d111887fa06720939d/> <csr-id-ed327f6163f54756e58c20f86a563a97efb256ca/>
This release contains a security fix which assure URLs like 'ssh://-oProxyCommand=open$IFS-aCalculator/foo' will not execute attacker-controlled
strings. The above can, on MacOS, launch the calculator app when using it with gix clone for example, up to v0.29.0.
gix status with basic index-worktree comparisongix free index from-list and gix index from-tree gain --skip-hash.
This flag can be derived from options, but thus far we have no higher-level
writing of the index so this has to do to see the difference in performance.dyn trait where possible.
This reduces compile time due to avoiding duplication.<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>
4ef9a32)ein and gix now share some code via the gitoxide library. (d3ac691)54a8495)gix status with basic index-worktree comparison (f094f71)dynification (f658fcc)dyn trait where possible. (072ee32)prodash (ed327f6)b7560a2)4bfd1cc)0d6d4ec)gix-index and pass skip-hash through for performance.. (713cd59)gix free index from-list and gix index from-tree gain --skip-hash. (3ff5ac0)index.skipHash (773b6e3)
</details>zlib::Inflate::reset().
That way, each instance can be reused.prodash::RawProgress available.
It's an object-safe version of the Progress trait.<csr-id-0fa04bcbdf3102c5435e64cfef894a1bfc8d6e7b/> make current thread-count accessible in slice-workers. Threads started for working on an entry in a slice can now see the amount of threads left for use (and manipulate that variable) which effectively allows them to implement their own parallelization on top of the current one.
This is useful if there is there is very imbalanced work within the slice itself.
While at it, we also make consumer functions mutable as they exsit per thread.
<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>
0fa04bc)9a9fa96)8f15cec)ae845de)9525ac8)d9d9bc0)zlib::Inflate::reset(). (d81b7e3)420553a)2578e57)dbf8aa1)2087032)3ef5c90)3eff567)3a45973)9375cd7)b057500)f4a44f7)facaaf6)2f275d5)prodash::RawProgress available. (add5ea8)
</details>gix submodule subcommand for simple submodule listing and information retrieval
gix submodule subcommand for simple submodule listing and information retrievalgix index entries --recurse-subomdules to also list submodules.gix index entries with styles and pathspecs.
This adds support for more simple git style, which is faster and thus
allows for more direct comparisons to git ls-files.gix commit verify-signature to do something akin to git ... --show-signature.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
8f3f358)gix submodule subcommand for simple submodule listing and information retrieval (1ccbe16)0d258f4)36f7b78)gix index entries --recurse-subomdules to also list submodules. (6bc69e3)a3afaa4)gix (ca972a2)Defaults::from_environment() when parsing pathspecs. (2a99034)gix index entries (22477bd)9f4dfe0)gix index entries with styles and pathspecs. (c30ac0c)f194cfc)f584d76)gix (a201f0d)b37affe)gix commit verify-signature to do something akin to git ... --show-signature. (cd6cfe4)c7d9129)gix-archive (feba76d)b629f8a).gitmodule file abstraction (6a2e6a4)
</details>gix-os<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
8dbd0a6)7f06458)9a6e0d7)23ee47f)3d47919)gix-os (b645d28)c5f3fc8)d7f250d)b574a39)
</details>A maintenance release without any user-facing changes.
A maintenance release without any user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
8 commits contributed to the release over the course of 29 calendar days.
gix archive<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
1dda48b)4a9d0f1)gix archive, which is where it should shine. (567b1a4)gix archive (32bbb8b)b19a56d)3fbd7b0)3fd5e16)fa04378)
</details>std::thread::scope() instead of crossbeam-utils::thread::scope().
This cuts a direct dependency.
We can't removed crossbeam-channel yet due to the need for single-produce-multiple-consumer
channels.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
0f411e9)gix-pack (6db30ef)04ab852)std::thread::scope() instead of crossbeam-utils::thread::scope(). (571ec0d)
</details>This release fixes a possibility for V1 fetches to deadlock if negotiation would span multiple rounds (see issue #882) for details.
<csr-id-bcad5c22049d56a25ef69d6c7a3344e78f9a1d4d/>
This release fixes a possibility for V1 fetches to deadlock if negotiation would span multiple rounds (see issue #882) for details.
gix level.
This is merely a debug tool to learn about generation numbers.
All commit-graph commands now operate on a repository.<csr-id-c494cfd6f80cf273107c626d0f2cbe054db378ee/> gix --trace to also print tree-like instrumentation
<csr-id-452ed6b79ed0e12ae214af3c8cd49a87dba91c73/> gix fetch --open-negotiation-graph[=limit]
Open the negotiation graph as SVG, after optionally specifying a limit
as rendering/layouting can be very slow.
It's useful to see how the negotiation algorithm is reasoning about each commit.
<csr-id-096838ffa529148b2da3a2382a2d1fdbfe5bee5b/> gix fetch --negotiation-info to provide additional information about the negotiation phase.
<csr-id-bd32e393fedd01e27a4f6984281bcc3182c63b67/> bit revision list --svg to create a visual graph of commits.
It's mainly a test of how well layout-rs performs.
<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>
gitoxide publishable again (c16b1df)5861afb)corpus --dry-run and --task-sql-suffix and --repo-sql-suffix (4cef57d)0f973ac)gix-trace (bd6e3d7)aa16c8c)361cf96)gix --trace to also print tree-like instrumentation (c494cfd)cfd8e88)a0b4385)a4300c8)fcbda1d)gitoxide version according to what's in git (83f6466)d9e74ff)036e60a)gix fetch --open-negotiation-graph[=limit] (452ed6b)gix fetch --negotiation-info to provide additional information about the negotiation phase. (096838f)gix docs available when using cargo doc (518159d)bit revision list --svg to create a visual graph of commits. (bd32e39)fe59956)2213321)ff8d42a)750b07a)clippy::redundant-closure-for-method-calls lint (bcad5c2)8d2e6a9)gix level. (b82edc8)gix config tree (7aaaebf)
</details><csr-id-cce96ee1382d3d56d77820a2aba6e2d17b52f91c/>
<csr-id-7a442313c57f58fec5217484f268516711c3d52b/> make bytesize available in progress.
Note that it is stubbed out unless the progress-unit-bytes feature is set.
<csr-id-7f6a807ea506358b6dc4fd0c7a648770f1dc91e9/> add progress::count_with_decimals() and progress-unit-* feature toggles.
The new feature toggles allow controlling the inclusion of the bytesize and human_format
crates, which can be toggled with the progress-unit-bytes and progress-unit-human-numbers respectively.
Without these features, the respective functions exist but don't provide special formatting, making bytes and larger numbers harder to read.
num_cpus in favor of std::thread::available_parallelism().
num_cpus was needed back in the days when std didn't support such
functionality yet.dep: syntax to hide optional features from feature-set.
That way, the set of features is clearly defined and controlled.
This migth break applications who relied on direect access to features named
after optional dependencies.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
e6cc618)addd789)94c99c7)d686d94)prodash for performance improvements. (5d00324)bytesize available in progress. (7a44231)progress::count_with_decimals() and progress-unit-* feature toggles. (7f6a807)dep: syntax to hide optional features from feature-set. (0cc5480)num_cpus in favor of std::thread::available_parallelism(). (264f78a)quick-error with thiserror (cce96ee)8ef1cb2)
</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-5bf0034fb3918e57562b7089ceba83d63a1854bf/> <csr-id-ab6f98b905f13ed2a7c0c483f34fab63141fbc5b/> <csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/> <csr-id-361892ca15aa648802f6701ab6a5a30aedde3449/>
<csr-id-0f27c67c92fc0bc23a6712b5c4c730ad6a0156bf/> add support for explicit non-parallel iteration. That way we can allow the implementation to choose whether they need greatest speed at some cost or not.
This also allows us to create a new thread-pool on each iteration as those who expect high cost or many files will likely chose to do that instead of single-threaded iteration, which nicely contains the threads needed and avoids keeping them alive as part of some global pool.
<csr-id-3b29fc18672c0176684c797a0f16f85d09369bf8/> make jwalk fully optional
<csr-id-d078d6ee76a80d1dfaf71608c12d8a402bd670d4/> mild refactor of paths module to waste less on unix Previously it might have performed find-and-replace on unix paths even though they wouldn't have changed afterwards, yet costing an allocation.
There is also the realization that it should go into its own crate to have neater import paths and more convenience.
<csr-id-8945d95f7fa88562d37ff67ac6e38bead73dd2df/> interrupt::Iter, rename interrupt::Iter -> interrupt::IterWithError
<csr-id-38446dc8824afef30ef121598de3451d13b9262c/> remove fs-jwalk-single-threaded in favor of fs-walkdir-parallel.
This way, jwalk and the dependencies (and troubles) it brings have to
be opted in, but also allow other users to actually opt out while
allowing the parallel feature to be in effect.
In other words, previously the parallel feature conflated jwalk
dependencies into the tree, which isn't the case anymore.
<csr-id-89a41bf2b37db29b9983b4e5492cfd67ed490b23/> remove local-time-support feature toggle.
We treat local time as default feature without a lot of fuzz, and
will eventually document that definitive support needs a compile
time switch in the compiler (--cfg unsound_local_offset or something).
One day it will perish. Failure is possible anyway and we will write code to deal with it while minimizing the amount of system time fetches when asking for the current local time.
<csr-id-90611ce1527618bcc738440bfc1ccc7a45319974/> remove path module in favor of git-path crate
<csr-id-61e5cfece4d8f405e35fc1957b00ce1da7526c26/> renamed progress::Read::reader -> progress::Read::inner
<csr-id-e7526b2a7b51cbac4018e1ab3b623a85987fadc2/> parallel utilities now use Send + Clone insted of Send + Sync
This helps to assure that thread-local computations always work with the
kind of types we provide. The ones that are carrying out actions are
notably not Sync anymore.
We cater to that by defining our bounds accordingly, but for those
who want to use other utilities that need Sync, using types like
Repository and thread_local!() is the only way to make this
work.
<csr-id-a3bd14a7753716e7ad67cd56d24eee1fa099a6fd/> re-export prodash::progress::(Task|Value) directly under progress
This is in addition to the progress re-export which allows everything
but yields less optimal import paths.
<csr-id-426057247a80821b3da22b4ae5d67bda89ce0631/> re-export prodash in progress module.
That way one can access all types even if they are not re-exported.
<csr-id-c4a7634b0b29c74625e183953e59c65987e9d66c/> export prodash::progress::Id in the progress module for convenience.
<csr-id-25ad372bf500b851105f53b10369b5a689ba167e/> zlib::inflate::Error can now represent zlib status codes that represent failure.
<csr-id-6d530a1dc77f0f4ac00622a2fd47c7bdb731a77a/> name spawned threads That way it's a bit more obvious what's happening when the CPU goes up in flames.
<csr-id-c8835c6edae784c9ffcb69a674c0a6545dbb2af3/> upgrade to prodash 21.1 and add Ids to all progress instances.
That way callers can identify progress they are interested in, say, for
selective visualizations.
<csr-id-9076ce33ec167e425a0163d3e40a81a3fd0db6cd/> fs::Snapshot can Clone if T can Clone.
<csr-id-a7c11d2cb5f88a4ff322d9a9848459062790d8b3/> perfect granularity for threads processing with in_parallel_with_slice()
<csr-id-ff1db66f2dad3afc8bc77610006bca9fea5947d2/> add progress::Step|StepShared as types of prodash
This may help to use the Progress::counter() method as part of method
signatures, being an Option<progress::StepShared>.
<csr-id-cfe46b502afc3ecb312849ddbd7748007d432cd1/> add zlib-ng feature to allow linking against system libz-ng Allow to use zlib-ng (zlib-ng-sys) with native API (no compat mode) that can co-exist with system libz (loaded by e.g. libcurl). This is used in gitoxide package on Alpine Linux.
<csr-id-b1c40b0364ef092cd52d03b34f491b254816b18d/> use docsrs feature in code to show what is feature-gated automatically on docs.rs
<csr-id-517677147f1c17304c62cf97a1dd09f232ebf5db/> pass --cfg docsrs when compiling for https://docs.rs
<csr-id-f498d35baba52e40ecd47381e87c1ce49cf13285/> add fs-jwalk-single-threaded feature to specifically decouple jwalk from rayon
It has been an issue in https://github.com/starship/starship/issues/4251
apparently and rayon interactions can be difficult.
<csr-id-7f199f0e5246809efde9880110093fbd11a4f8fe/> fs::Snapshot to on-demand reload shared resources.
<csr-id-c76fde7de278b49ded13b655d5345e4eb8c1b134/> initialize Time from now_utc and now_local
Localtime support depends on some other factors now, but that
will only get better over time.
We might have to document unsound_local_time at some point.
<csr-id-e4d6685064ad2b433f8acd3a74b320bf0169a994/> Add git_config::values::Path for a typesafe git path
Add a Path type to the git_config::values which
can be interpolated according to gits own path interpolation
rules.
<csr-id-3c8581fc294c65c9eb42698969fe3263135a864e/> add new 'path' module for all path-related conversions It's meant to unify all path and byte related handling to help assuring encoding is handled correctly or at least similarly everywhere.
<csr-id-15ff212b17087de93f259e366f4e4b821cfbc28e/> in-manifest and in-lib documentation of feature toggles
<csr-id-cb7e4e784d615f9fa3d6fb9c36240f0592403358/> Add InOrderIter to 'parallel' module This iterator makes possible identifies results using a sequence id and returns only consecutive items.
Use it to collect unordered results produced by threads. It's advantage to collecting yourself and sorting is the potential for a smaller memory footprint of in-flight results, one doesn't have to collect them all for ordering, necessarily.
<csr-id-ca095ed881db2a8f06a6b067dbaac17e923b0945/> Make a scope-like abstraction available This allows more delicate threading control like is required for the index.
<csr-id-b8400ed80543d67a5895c975ba9b1fc28427411c/> decoding of variable int numbers. It's here only so that we can share the code across crates, for now without any feature toggles.
<csr-id-0a749a22057b5513a8cefa0e26b0a9a268c769d3/> Add progress::Write to automatically pass bytes written to a progress instance
<csr-id-7e95d8ab29051ffc892f2dcbaf5369e8c7e7b294/> add threading primitives with feature toggle
If the threading feature is set, the threading module will contain thread-safe primitives
for shared ownership and mutation, otherwise these will be their single threaded counterparts.
This way, single-threaded applications don't have to pay for threaded primitives.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
0f5f47d)e695eda)0c81769)a517e39)4eebaac)e0d437c)47860b7)f54bf4b)3f89b63)e3977fe)7721b5f)cb7e4e7)ca095ed)a22cb0f)b8400ed)84cb256)path module in favor of git-path crate (90611ce)d078d6e)8345b7c)0b4b90f)7e76796)f86eacc)3b324b8)e5f6943)8cbe85d)interrupt::Iter, rename interrupt::Iter -> interrupt::IterWithError (8945d95)interrupt::Iter (0f0d390)15ff212)89a41bf)Time from now_utc and now_local (c76fde7)780f14f)1d07934)493dbae)git_config::values::Path for a typesafe git path (e4d6685)2e1437c)6b283dc)1cc95ce)909aa14)86f6e50)9258b7b)3c8581f)4b320e7)711fd5c)561d2e7)fs::Snapshot to on-demand reload shared resources. (7f199f0)git-ref (8d0cce7)78222c2)ReloadIfChanged in git-ref (e8de0ef)e3aff0c)44371a1)3c99e7f)6446b39)rust-version to 1.64 (55066ce)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-worktree to gix-worktree (73a1282)git-hashtable to gix-hashtable (26a0c98)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-features to gix-features (85f7e1a)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)109f434)prodash::progress::(Task|Value) directly under progress (a3bd14a)1ecfb7f)prodash in progress module. (4260572)c196d20)7c846d2)1e544e8)39ed9ed)e22080e)7bba270)prodash::progress::Id in the progress module for convenience. (c4a7634)5b5b380)93bef97)b93f0c4)9e04685)5ac9fbe)30d8ca1)511ed00)f8c562a)5bf0034)bb0a07b)95cccdd)25ad372)e6b9906)7114bbb)c57bdde)083909b)f1160fb)0f27c67)70ccbb2)77ab98d)7717170)6b9632e)7893502)726dd87)6d530a1)prodash 21.1 and add Ids to all progress instances. (c8835c6)bcd9654)b2c301e)e4648f8)d071583)423af90)c4e6849)def53b3)ad96233)104d922)d232567)fs-jwalk-single-threaded in favor of fs-walkdir-parallel. (38446dc)3b29fc1)702a161)acb0738)cca2ad5)in_parallel_with_slice() (dda661e)56792fb)in_parallel_with_slice to be mutable. (e928bf7)in_parallel_with_slice() (a7c11d2)progress::Step|StepShared as types of prodash (ff1db66)82fd251)25a7726)29a043b)c9eda72)ff80042)e5963fe)windows (2968181)59767b1)ab7ee5b)cfe46b5)9aa1d3d)1d4600a)1f6e5ab)5869e9f)da0716f)bc64b96)cef0b51)c2660e2)dbfa328)7b48297)sha1 asm to supported archs (b383fab)c954bbf)cfa1440)4974eca)e2ee3de)31c2351)b1c40b0)f7f136d)5176771)bd5f3e8)232784a)fs-jwalk-single-threaded feature to specifically decouple jwalk from rayon (f498d35)2f506c7)c072dbb)ce885ad)9b9ea02)6da8250)7b61506)4e7b343)e9fcb70)4737b1e)3c50625)f144eaf)085e76b)41dd754)89ea12b)41ea8ba)a417177)bb424f5)033f0d3)a22b1d8)598c853)654cf39)7cb1972)98da8ba)380174f)a6460db)f0cbb24)4733e6c)7cf3545)471fa62)234cd10)90c6c5a)07a4094)572e57d)e8383ca)fefb01b)c35e62e)566ff8a)a8e9497)d78aab7)373cbc8)674ec73)8900d69)eba101a)4624725)968df47)e7fbd9f)7d2e20c)7dd2313](https://github.com/GitoxideLabs/gitoxide/commit/7dd2313d980fe7c058319ae66Your coding agent can read these notes before it upgrades. Set up the MCP server →