diff --git a/.github/workflows/msrv.yml b/.github/workflows/msrv.yml index 4d2e98cbfd7..922615f22e3 100644 --- a/.github/workflows/msrv.yml +++ b/.github/workflows/msrv.yml @@ -19,8 +19,9 @@ jobs: - ubuntu-latest runs-on: ${{ matrix.os }} env: - # dictated by `firefox` to support the `helix` editor, but now driven by the `time` crate. IMPORTANT: adjust etc/msrv-badge.svg as well - rust_version: 1.67.0 + # dictated by `firefox` to support the `helix` editor, but now probably effectively be controlled by `jiff`, which also aligns with `regex`. + # IMPORTANT: adjust etc/msrv-badge.svg as well + rust_version: 1.70.0 steps: - uses: actions/checkout@v4 - uses: extractions/setup-just@v2 diff --git a/Cargo.lock b/Cargo.lock index 4cf9cfc1a95..b2044b9d16e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1240,7 +1240,6 @@ dependencies = [ "prodash", "serde_derive", "terminal_size", - "time", "tracing", "tracing-forest", "tracing-subscriber", @@ -1298,7 +1297,7 @@ dependencies = [ "gix-commitgraph 0.24.3", "gix-config", "gix-credentials", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-diff", "gix-dir", "gix-discover 0.33.0", @@ -1373,7 +1372,7 @@ version = "0.31.5" dependencies = [ "bstr", "document-features", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-hash 0.14.2", "gix-testtools", "gix-utils 0.1.12", @@ -1392,7 +1391,7 @@ dependencies = [ "document-features", "flate2", "gix-attributes 0.22.3", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-filter", "gix-hash 0.14.2", "gix-object 0.42.3", @@ -1401,9 +1400,9 @@ dependencies = [ "gix-testtools", "gix-worktree 0.34.1", "gix-worktree-stream", + "jiff", "tar", "thiserror", - "time", "zip", ] @@ -1515,7 +1514,7 @@ dependencies = [ "bstr", "document-features", "gix-chunk 0.4.8", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-features 0.38.2", "gix-hash 0.14.2", "gix-testtools", @@ -1608,17 +1607,17 @@ dependencies = [ [[package]] name = "gix-date" -version = "0.8.7" +version = "0.9.0" dependencies = [ "bstr", "document-features", "gix-hash 0.14.2", "gix-testtools", "itoa", + "jiff", "once_cell", "serde", "thiserror", - "time", ] [[package]] @@ -2021,7 +2020,7 @@ dependencies = [ "bstr", "document-features", "gix-actor 0.31.5", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-testtools", "serde", "thiserror", @@ -2033,7 +2032,7 @@ version = "0.13.2" dependencies = [ "bitflags 2.4.1", "gix-commitgraph 0.24.3", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-hash 0.14.2", "gix-object 0.42.3", "gix-odb", @@ -2075,7 +2074,7 @@ dependencies = [ "criterion", "document-features", "gix-actor 0.31.5", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-features 0.38.2", "gix-hash 0.14.2", "gix-testtools", @@ -2095,7 +2094,7 @@ version = "0.61.1" dependencies = [ "arc-swap", "document-features", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-features 0.38.2", "gix-fs 0.11.2", "gix-hash 0.14.2", @@ -2116,7 +2115,7 @@ dependencies = [ "crossbeam-channel", "filetime", "gix-actor 0.31.5", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-features 0.38.2", "gix-hash 0.14.2", "gix-object 0.42.3", @@ -2268,7 +2267,7 @@ dependencies = [ "futures-io", "futures-lite 2.1.0", "gix-credentials", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-features 0.38.2", "gix-hash 0.14.2", "gix-packetline", @@ -2333,7 +2332,7 @@ version = "0.45.0" dependencies = [ "document-features", "gix-actor 0.31.5", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-features 0.38.2", "gix-fs 0.11.2", "gix-hash 0.14.2", @@ -2355,7 +2354,7 @@ name = "gix-ref-tests" version = "0.0.0" dependencies = [ "gix-actor 0.31.5", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-discover 0.33.0", "gix-features 0.38.2", "gix-fs 0.11.2", @@ -2388,7 +2387,7 @@ dependencies = [ "bstr", "document-features", "gix-commitgraph 0.24.3", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-hash 0.14.2", "gix-hashtable 0.5.2", "gix-object 0.42.3", @@ -2420,7 +2419,7 @@ name = "gix-revwalk" version = "0.13.2" dependencies = [ "gix-commitgraph 0.24.3", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-hash 0.14.2", "gix-hashtable 0.5.2", "gix-object 0.42.3", @@ -2643,7 +2642,7 @@ version = "0.39.2" dependencies = [ "bitflags 2.4.1", "gix-commitgraph 0.24.3", - "gix-date 0.8.7", + "gix-date 0.9.0", "gix-hash 0.14.2", "gix-hashtable 0.5.2", "gix-object 0.42.3", @@ -3077,9 +3076,9 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "instant" @@ -3183,6 +3182,31 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +[[package]] +name = "jiff" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c33f2189d126c374d29641af39a0dc73daa1c8292403645575ce32e22e768a4" +dependencies = [ + "jiff-tzdb-platform", + "windows-sys 0.52.0", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05fac328b3df1c0f18a3c2ab6cb7e06e4e549f366017d796e3e66b6d6889abe6" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8da387d5feaf355954c2c122c194d6df9c57d865125a67984bb453db5336940" +dependencies = [ + "jiff-tzdb", +] + [[package]] name = "js-sys" version = "0.3.66" @@ -5499,7 +5523,6 @@ dependencies = [ "indexmap", "memchr", "thiserror", - "time", "zopfli", ] diff --git a/Cargo.toml b/Cargo.toml index 4dc1037437a..fb25223a704 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -164,14 +164,12 @@ http-client-reqwest = ["gix/blocking-http-transport-reqwest-rust-tls"] ## Use async client networking. gitoxide-core-async-client = ["gitoxide-core/async-client", "futures-lite"] - [dependencies] anyhow = "1.0.42" gitoxide-core = { version = "^0.39.1", path = "gitoxide-core" } gix-features = { version = "^0.38.2", path = "gix-features" } gix = { version = "^0.64.0", path = "gix", default-features = false } -time = "0.3.23" clap = { version = "4.1.1", features = ["derive", "cargo"] } clap_complete = "4.4.3" diff --git a/etc/msrv-badge.svg b/etc/msrv-badge.svg index 3e6cb76b75c..e2938f8f94b 100644 --- a/etc/msrv-badge.svg +++ b/etc/msrv-badge.svg @@ -1 +1,21 @@ -rustc: 1.67.0+rustc1.67.0+ + + rustc: 1.70.0+ + + + + + + + + + + + + + + + rustc + + 1.70.0+ + + diff --git a/gix-actor/Cargo.toml b/gix-actor/Cargo.toml index 56fd21b58ff..a7e009b3fbd 100644 --- a/gix-actor/Cargo.toml +++ b/gix-actor/Cargo.toml @@ -18,7 +18,7 @@ doctest = false serde = ["dep:serde", "bstr/serde", "gix-date/serde"] [dependencies] -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } gix-utils = { version = "^0.1.11", path = "../gix-utils" } thiserror = "1.0.38" diff --git a/gix-archive/Cargo.toml b/gix-archive/Cargo.toml index e932caf1717..2fb96e1414b 100644 --- a/gix-archive/Cargo.toml +++ b/gix-archive/Cargo.toml @@ -21,18 +21,18 @@ tar = ["dep:tar", "dep:gix-path"] tar_gz = ["tar", "dep:flate2"] ## Enable the `zip` archive format. -zip = ["dep:zip", "dep:time"] +zip = ["dep:zip"] [dependencies] gix-worktree-stream = { version = "^0.13.1", path = "../gix-worktree-stream" } gix-object = { version = "^0.42.3", path = "../gix-object" } gix-path = { version = "^0.10.9", path = "../gix-path", optional = true } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } flate2 = { version = "1.0.26", optional = true } -zip = { version = "2.1.0", optional = true, default-features = false, features = ["deflate", "time"] } -time = { version = "0.3.23", optional = true, default-features = false, features = ["std"] } +zip = { version = "2.1.0", optional = true, default-features = false, features = ["deflate"] } +jiff = { version = "0.1.2", default-features = false, features = ["std"] } thiserror = "1.0.26" bstr = { version = "1.5.0", default-features = false } diff --git a/gix-archive/src/write.rs b/gix-archive/src/write.rs index 244b40554e0..0c6fd435f25 100644 --- a/gix-archive/src/write.rs +++ b/gix-archive/src/write.rs @@ -134,10 +134,22 @@ where { let mut ar = zip::write::ZipWriter::new(out); let mut buf = Vec::new(); - let mtime = time::OffsetDateTime::from_unix_timestamp(opts.modification_time) + let zdt = jiff::Timestamp::from_second(opts.modification_time) .map_err(|err| Error::InvalidModificationTime(Box::new(err)))? - .try_into() - .map_err(|err| Error::InvalidModificationTime(Box::new(err)))?; + .to_zoned(jiff::tz::TimeZone::UTC); + let mtime = zip::DateTime::from_date_and_time( + zdt.year() + .try_into() + .map_err(|err| Error::InvalidModificationTime(Box::new(err)))?, + // These are all OK because month, day, hour, minute and second + // are always positive. + zdt.month().try_into().expect("non-negative"), + zdt.day().try_into().expect("non-negative"), + zdt.hour().try_into().expect("non-negative"), + zdt.minute().try_into().expect("non-negative"), + zdt.second().try_into().expect("non-negative"), + ) + .map_err(|err| Error::InvalidModificationTime(Box::new(err)))?; while let Some(entry) = next_entry(stream)? { append_zip_entry( &mut ar, diff --git a/gix-date/CHANGELOG.md b/gix-date/CHANGELOG.md index f101ec0468e..610eb1f2cba 100644 --- a/gix-date/CHANGELOG.md +++ b/gix-date/CHANGELOG.md @@ -5,6 +5,58 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +This is a *breaking release* as the `time` is gone and it's API isn't available publicly anymore. + +### Other + + - switch from `time` to `jiff` + This swaps out `time` for `jiff`. It doesn't completely remove `time` + from the dependency tree. The last remaining use of `time` is in + `prodash`, outside of the gitoxide project. + - bump MSRV to Rust 1.70 + The bump to Rust 1.70 (released over 1 year ago) is needed since that's + Jiff current MSRV. This doesn't bump the MSRV of the broader gitoxide + project, however, so this is probably wrong or incomplete. + - make `time` a private dependency of `gix-date` + This should make the swap from `time` to `jiff` easier. + + This comment[1] indicates that it's okay for `time` to be a public + dependency, but since this patch series is about swapping `time` for + `jiff`, it seemed appropriate to take this step first. And in + particular, it was *almost* already the case that `time` was a private + dependency of `gix-date`. The only thing we really had to button up was + the exposure of `time`'s custom formatting description language. + + Jiff doesn't support `time`'s custom formatting machinery and instead + uses a strftime/strptime like API. We could expose that instead, but + since nothing (other than a test) was actually utilizing `time`'s custom + formatting machinery external to `gix-date`, I figured we might as well + completely encapsulate it. + +### Commit Statistics + + + + - 4 commits contributed to the release over the course of 2 calendar days. + - 35 days passed between releases. + - 3 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Assure the next release is breaking ([`04760c5`](https://github.com/BurntSushi/gitoxide/commit/04760c50be9114e66a32f8e0606e5e6db96566f7)) + - Switch from `time` to `jiff` ([`28ac657`](https://github.com/BurntSushi/gitoxide/commit/28ac6572722f7ea31795dc0417521c70bcb6ec8f)) + - Bump MSRV to Rust 1.70 ([`1b9c30d`](https://github.com/BurntSushi/gitoxide/commit/1b9c30dfb43373a76f3b65ae90a74dc99a892821)) + - Make `time` a private dependency of `gix-date` ([`5a88413`](https://github.com/BurntSushi/gitoxide/commit/5a88413a2d3acb5c4ba5e49e47a42f0182d9e9fb)) +
+ ## 0.8.7 (2024-06-23) A maintenance release without user-facing changes. @@ -13,7 +65,7 @@ A maintenance release without user-facing changes. - - 7 commits contributed to the release over the course of 21 calendar days. + - 8 commits contributed to the release over the course of 21 calendar days. - 40 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,13 +77,14 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Prepare release of `gix-mailmap` ([`14c3396`](https://github.com/Byron/gitoxide/commit/14c339614b76706dfbf77fe97319f0c3452390e6)) - - Merge branch 'tar-only' ([`1dfa90d`](https://github.com/Byron/gitoxide/commit/1dfa90d641306b4099a6ecd52e2056b231467807)) - - Remove binary files in favor of `tar` files ([`dcab79a`](https://github.com/Byron/gitoxide/commit/dcab79a6958cbf5cd69184c24497dc27c6f94961)) - - Merge branch 'main' into config-key-take-2 ([`9fa1054`](https://github.com/Byron/gitoxide/commit/9fa1054a01071180d7b08c8c2b5bd61e9d0d32da)) - - Merge pull request #1361 from EliahKagan/freebsd ([`9c65d98`](https://github.com/Byron/gitoxide/commit/9c65d9886328f53129b966aecdc91644297c54be)) - - Regenerate archives for changed scripts ([`ea12fc2`](https://github.com/Byron/gitoxide/commit/ea12fc234e898eb15013da40d2a82f69c2d20482)) - - Make bash script shebangs more portable ([`68cbea8`](https://github.com/Byron/gitoxide/commit/68cbea815aa979acb0b86943db83ab77bbc728c4)) + - Release gix-date v0.8.7, gix-mailmap v0.23.2 ([`c1d7c02`](https://github.com/BurntSushi/gitoxide/commit/c1d7c023d595eb04891b65295f001d85c9ba8074)) + - Prepare release of `gix-mailmap` ([`14c3396`](https://github.com/BurntSushi/gitoxide/commit/14c339614b76706dfbf77fe97319f0c3452390e6)) + - Merge branch 'tar-only' ([`1dfa90d`](https://github.com/BurntSushi/gitoxide/commit/1dfa90d641306b4099a6ecd52e2056b231467807)) + - Remove binary files in favor of `tar` files ([`dcab79a`](https://github.com/BurntSushi/gitoxide/commit/dcab79a6958cbf5cd69184c24497dc27c6f94961)) + - Merge branch 'main' into config-key-take-2 ([`9fa1054`](https://github.com/BurntSushi/gitoxide/commit/9fa1054a01071180d7b08c8c2b5bd61e9d0d32da)) + - Merge pull request #1361 from EliahKagan/freebsd ([`9c65d98`](https://github.com/BurntSushi/gitoxide/commit/9c65d9886328f53129b966aecdc91644297c54be)) + - Regenerate archives for changed scripts ([`ea12fc2`](https://github.com/BurntSushi/gitoxide/commit/ea12fc234e898eb15013da40d2a82f69c2d20482)) + - Make bash script shebangs more portable ([`68cbea8`](https://github.com/BurntSushi/gitoxide/commit/68cbea815aa979acb0b86943db83ab77bbc728c4))
## 0.8.6 (2024-05-14) @@ -53,7 +106,7 @@ A maintenance release without user-facing changes. - 5 commits contributed to the release over the course of 24 calendar days. - 60 days passed between releases. - 2 commits were understood as [conventional](https://www.conventionalcommits.org). - - 1 unique issue was worked on: [#1367](https://github.com/Byron/gitoxide/issues/1367) + - 1 unique issue was worked on: [#1367](https://github.com/BurntSushi/gitoxide/issues/1367) ### Commit Details @@ -61,13 +114,13 @@ A maintenance release without user-facing changes.
view details - * **[#1367](https://github.com/Byron/gitoxide/issues/1367)** - - Assure writing invalid dates doesn't panic. ([`3448fd9`](https://github.com/Byron/gitoxide/commit/3448fd9cc0edc93d7a5b511fd4ec0a8e84b87e51)) + * **[#1367](https://github.com/BurntSushi/gitoxide/issues/1367)** + - Assure writing invalid dates doesn't panic. ([`3448fd9`](https://github.com/BurntSushi/gitoxide/commit/3448fd9cc0edc93d7a5b511fd4ec0a8e84b87e51)) * **Uncategorized** - - Release gix-date v0.8.6 ([`d3588ca`](https://github.com/Byron/gitoxide/commit/d3588ca4fe0364c88e42cdac24ceae548355d99d)) - - Merge branch 'status' ([`04ef31e`](https://github.com/Byron/gitoxide/commit/04ef31e9d6f5332d49037a5a4c248ebbb5aaf92b)) - - Merge branch 'status' ([`68fd5b3`](https://github.com/Byron/gitoxide/commit/68fd5b34e1214d5c2cc7d00dd06e19ee86c00c66)) - - Make clear that `Time::seconds` is UTC. ([`8d610ab`](https://github.com/Byron/gitoxide/commit/8d610ab8de7d3f62116632de6975f00c845dc842)) + - Release gix-date v0.8.6 ([`d3588ca`](https://github.com/BurntSushi/gitoxide/commit/d3588ca4fe0364c88e42cdac24ceae548355d99d)) + - Merge branch 'status' ([`04ef31e`](https://github.com/BurntSushi/gitoxide/commit/04ef31e9d6f5332d49037a5a4c248ebbb5aaf92b)) + - Merge branch 'status' ([`68fd5b3`](https://github.com/BurntSushi/gitoxide/commit/68fd5b34e1214d5c2cc7d00dd06e19ee86c00c66)) + - Make clear that `Time::seconds` is UTC. ([`8d610ab`](https://github.com/BurntSushi/gitoxide/commit/8d610ab8de7d3f62116632de6975f00c845dc842))
## 0.8.5 (2024-03-14) @@ -90,10 +143,10 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.8.5, gix-hash v0.14.2, gix-trace v0.1.8, gix-utils v0.1.11, gix-features v0.38.1, gix-actor v0.31.0, gix-validate v0.8.4, gix-object v0.42.0, gix-path v0.10.7, gix-glob v0.16.2, gix-quote v0.4.12, gix-attributes v0.22.2, gix-command v0.3.6, gix-filter v0.11.0, gix-fs v0.10.1, gix-chunk v0.4.8, gix-commitgraph v0.24.2, gix-hashtable v0.5.2, gix-revwalk v0.13.0, gix-traverse v0.38.0, gix-worktree-stream v0.11.0, gix-archive v0.11.0, gix-config-value v0.14.6, gix-tempfile v13.1.1, gix-lock v13.1.1, gix-ref v0.43.0, gix-sec v0.10.6, gix-config v0.36.0, gix-prompt v0.8.4, gix-url v0.27.2, gix-credentials v0.24.2, gix-ignore v0.11.2, gix-bitmap v0.2.11, gix-index v0.31.0, gix-worktree v0.32.0, gix-diff v0.42.0, gix-discover v0.31.0, gix-pathspec v0.7.1, gix-dir v0.2.0, gix-macros v0.1.4, gix-mailmap v0.23.0, gix-negotiate v0.13.0, gix-pack v0.49.0, gix-odb v0.59.0, gix-packetline v0.17.4, gix-transport v0.41.2, gix-protocol v0.44.2, gix-revision v0.27.0, gix-refspec v0.23.0, gix-status v0.7.0, gix-submodule v0.10.0, gix-worktree-state v0.9.0, gix v0.60.0, safety bump 26 crates ([`b050327`](https://github.com/Byron/gitoxide/commit/b050327e76f234b19be921b78b7b28e034319fdb)) - - Prepare changelogs prior to release ([`52c3bbd`](https://github.com/Byron/gitoxide/commit/52c3bbd36b9e94a0f3a78b4ada84d0c08eba27f6)) - - Merge branch 'status' ([`3e5c974`](https://github.com/Byron/gitoxide/commit/3e5c974dd62ac134711c6c2f5a5490187a6ea55e)) - - Fix lints for nightly, and clippy ([`f8ce3d0`](https://github.com/Byron/gitoxide/commit/f8ce3d0721b6a53713a9392f2451874f520bc44c)) + - Release gix-date v0.8.5, gix-hash v0.14.2, gix-trace v0.1.8, gix-utils v0.1.11, gix-features v0.38.1, gix-actor v0.31.0, gix-validate v0.8.4, gix-object v0.42.0, gix-path v0.10.7, gix-glob v0.16.2, gix-quote v0.4.12, gix-attributes v0.22.2, gix-command v0.3.6, gix-filter v0.11.0, gix-fs v0.10.1, gix-chunk v0.4.8, gix-commitgraph v0.24.2, gix-hashtable v0.5.2, gix-revwalk v0.13.0, gix-traverse v0.38.0, gix-worktree-stream v0.11.0, gix-archive v0.11.0, gix-config-value v0.14.6, gix-tempfile v13.1.1, gix-lock v13.1.1, gix-ref v0.43.0, gix-sec v0.10.6, gix-config v0.36.0, gix-prompt v0.8.4, gix-url v0.27.2, gix-credentials v0.24.2, gix-ignore v0.11.2, gix-bitmap v0.2.11, gix-index v0.31.0, gix-worktree v0.32.0, gix-diff v0.42.0, gix-discover v0.31.0, gix-pathspec v0.7.1, gix-dir v0.2.0, gix-macros v0.1.4, gix-mailmap v0.23.0, gix-negotiate v0.13.0, gix-pack v0.49.0, gix-odb v0.59.0, gix-packetline v0.17.4, gix-transport v0.41.2, gix-protocol v0.44.2, gix-revision v0.27.0, gix-refspec v0.23.0, gix-status v0.7.0, gix-submodule v0.10.0, gix-worktree-state v0.9.0, gix v0.60.0, safety bump 26 crates ([`b050327`](https://github.com/BurntSushi/gitoxide/commit/b050327e76f234b19be921b78b7b28e034319fdb)) + - Prepare changelogs prior to release ([`52c3bbd`](https://github.com/BurntSushi/gitoxide/commit/52c3bbd36b9e94a0f3a78b4ada84d0c08eba27f6)) + - Merge branch 'status' ([`3e5c974`](https://github.com/BurntSushi/gitoxide/commit/3e5c974dd62ac134711c6c2f5a5490187a6ea55e)) + - Fix lints for nightly, and clippy ([`f8ce3d0`](https://github.com/BurntSushi/gitoxide/commit/f8ce3d0721b6a53713a9392f2451874f520bc44c))
## 0.8.4 (2024-02-25) @@ -116,10 +169,10 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.8.4, gix-utils v0.1.10, gix-actor v0.30.1, gix-object v0.41.1, gix-path v0.10.6, gix-glob v0.16.1, gix-quote v0.4.11, gix-attributes v0.22.1, gix-command v0.3.5, gix-filter v0.10.0, gix-commitgraph v0.24.1, gix-worktree-stream v0.10.0, gix-archive v0.10.0, gix-config-value v0.14.5, gix-ref v0.42.0, gix-sec v0.10.5, gix-config v0.35.0, gix-prompt v0.8.3, gix-url v0.27.1, gix-credentials v0.24.1, gix-ignore v0.11.1, gix-index v0.30.0, gix-worktree v0.31.0, gix-diff v0.41.0, gix-discover v0.30.0, gix-pathspec v0.7.0, gix-dir v0.1.0, gix-pack v0.48.0, gix-odb v0.58.0, gix-transport v0.41.1, gix-protocol v0.44.1, gix-revision v0.26.1, gix-refspec v0.22.1, gix-status v0.6.0, gix-submodule v0.9.0, gix-worktree-state v0.8.0, gix v0.59.0, gix-fsck v0.3.0, gitoxide-core v0.36.0, gitoxide v0.34.0, safety bump 10 crates ([`45b4470`](https://github.com/Byron/gitoxide/commit/45b447045bc826f252129c300c531acde2652c64)) - - Prepare changelogs prior to release ([`f2e111f`](https://github.com/Byron/gitoxide/commit/f2e111f768fc1bc6182355261c20b63610cffec7)) - - Merge branch 'dirwalk' ([`face359`](https://github.com/Byron/gitoxide/commit/face359443ba33e8985ec1525d5ec38b743ea7a9)) - - Adjust gitignore files with precious declarations ([`ae86a6a`](https://github.com/Byron/gitoxide/commit/ae86a6a206074b85ff1eba32aea9c8b40c087b17)) + - Release gix-date v0.8.4, gix-utils v0.1.10, gix-actor v0.30.1, gix-object v0.41.1, gix-path v0.10.6, gix-glob v0.16.1, gix-quote v0.4.11, gix-attributes v0.22.1, gix-command v0.3.5, gix-filter v0.10.0, gix-commitgraph v0.24.1, gix-worktree-stream v0.10.0, gix-archive v0.10.0, gix-config-value v0.14.5, gix-ref v0.42.0, gix-sec v0.10.5, gix-config v0.35.0, gix-prompt v0.8.3, gix-url v0.27.1, gix-credentials v0.24.1, gix-ignore v0.11.1, gix-index v0.30.0, gix-worktree v0.31.0, gix-diff v0.41.0, gix-discover v0.30.0, gix-pathspec v0.7.0, gix-dir v0.1.0, gix-pack v0.48.0, gix-odb v0.58.0, gix-transport v0.41.1, gix-protocol v0.44.1, gix-revision v0.26.1, gix-refspec v0.22.1, gix-status v0.6.0, gix-submodule v0.9.0, gix-worktree-state v0.8.0, gix v0.59.0, gix-fsck v0.3.0, gitoxide-core v0.36.0, gitoxide v0.34.0, safety bump 10 crates ([`45b4470`](https://github.com/BurntSushi/gitoxide/commit/45b447045bc826f252129c300c531acde2652c64)) + - Prepare changelogs prior to release ([`f2e111f`](https://github.com/BurntSushi/gitoxide/commit/f2e111f768fc1bc6182355261c20b63610cffec7)) + - Merge branch 'dirwalk' ([`face359`](https://github.com/BurntSushi/gitoxide/commit/face359443ba33e8985ec1525d5ec38b743ea7a9)) + - Adjust gitignore files with precious declarations ([`ae86a6a`](https://github.com/BurntSushi/gitoxide/commit/ae86a6a206074b85ff1eba32aea9c8b40c087b17))
## 0.8.3 (2023-12-30) @@ -150,9 +203,9 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.8.3, gix-hash v0.14.1, gix-trace v0.1.6, gix-features v0.37.1, gix-actor v0.29.1, gix-validate v0.8.3, gix-object v0.40.1, gix-path v0.10.3, gix-glob v0.15.1, gix-quote v0.4.10, gix-attributes v0.21.1, gix-command v0.3.2, gix-packetline-blocking v0.17.2, gix-utils v0.1.8, gix-filter v0.8.1, gix-fs v0.9.1, gix-chunk v0.4.7, gix-commitgraph v0.23.1, gix-hashtable v0.5.1, gix-revwalk v0.11.1, gix-traverse v0.36.1, gix-worktree-stream v0.8.1, gix-archive v0.8.1, gix-config-value v0.14.3, gix-tempfile v12.0.1, gix-lock v12.0.1, gix-ref v0.40.1, gix-sec v0.10.3, gix-config v0.33.1, gix-prompt v0.8.2, gix-url v0.26.1, gix-credentials v0.23.1, gix-ignore v0.10.1, gix-bitmap v0.2.10, gix-index v0.28.1, gix-worktree v0.29.1, gix-diff v0.39.1, gix-discover v0.28.1, gix-macros v0.1.3, gix-mailmap v0.21.1, gix-negotiate v0.11.1, gix-pack v0.46.1, gix-odb v0.56.1, gix-pathspec v0.5.1, gix-packetline v0.17.2, gix-transport v0.40.1, gix-protocol v0.43.1, gix-revision v0.25.1, gix-refspec v0.21.1, gix-status v0.4.1, gix-submodule v0.7.1, gix-worktree-state v0.6.1, gix v0.57.1 ([`972241f`](https://github.com/Byron/gitoxide/commit/972241f1904944e8b6e84c6aa1649a49be7a85c3)) - - Merge branch 'msrv' ([`8c492d7`](https://github.com/Byron/gitoxide/commit/8c492d7b7e6e5d520b1e3ffeb489eeb88266aa75)) - - Change `rust-version` manifest field back to 1.65. ([`3bd09ef`](https://github.com/Byron/gitoxide/commit/3bd09ef120945a9669321ea856db4079a5dab930)) + - Release gix-date v0.8.3, gix-hash v0.14.1, gix-trace v0.1.6, gix-features v0.37.1, gix-actor v0.29.1, gix-validate v0.8.3, gix-object v0.40.1, gix-path v0.10.3, gix-glob v0.15.1, gix-quote v0.4.10, gix-attributes v0.21.1, gix-command v0.3.2, gix-packetline-blocking v0.17.2, gix-utils v0.1.8, gix-filter v0.8.1, gix-fs v0.9.1, gix-chunk v0.4.7, gix-commitgraph v0.23.1, gix-hashtable v0.5.1, gix-revwalk v0.11.1, gix-traverse v0.36.1, gix-worktree-stream v0.8.1, gix-archive v0.8.1, gix-config-value v0.14.3, gix-tempfile v12.0.1, gix-lock v12.0.1, gix-ref v0.40.1, gix-sec v0.10.3, gix-config v0.33.1, gix-prompt v0.8.2, gix-url v0.26.1, gix-credentials v0.23.1, gix-ignore v0.10.1, gix-bitmap v0.2.10, gix-index v0.28.1, gix-worktree v0.29.1, gix-diff v0.39.1, gix-discover v0.28.1, gix-macros v0.1.3, gix-mailmap v0.21.1, gix-negotiate v0.11.1, gix-pack v0.46.1, gix-odb v0.56.1, gix-pathspec v0.5.1, gix-packetline v0.17.2, gix-transport v0.40.1, gix-protocol v0.43.1, gix-revision v0.25.1, gix-refspec v0.21.1, gix-status v0.4.1, gix-submodule v0.7.1, gix-worktree-state v0.6.1, gix v0.57.1 ([`972241f`](https://github.com/BurntSushi/gitoxide/commit/972241f1904944e8b6e84c6aa1649a49be7a85c3)) + - Merge branch 'msrv' ([`8c492d7`](https://github.com/BurntSushi/gitoxide/commit/8c492d7b7e6e5d520b1e3ffeb489eeb88266aa75)) + - Change `rust-version` manifest field back to 1.65. ([`3bd09ef`](https://github.com/BurntSushi/gitoxide/commit/3bd09ef120945a9669321ea856db4079a5dab930))
## 0.8.2 (2023-12-29) @@ -180,13 +233,13 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.8.2, gix-hash v0.14.0, gix-trace v0.1.5, gix-features v0.37.0, gix-actor v0.29.0, gix-validate v0.8.2, gix-object v0.40.0, gix-path v0.10.2, gix-glob v0.15.0, gix-quote v0.4.9, gix-attributes v0.21.0, gix-command v0.3.1, gix-packetline-blocking v0.17.1, gix-utils v0.1.7, gix-filter v0.8.0, gix-fs v0.9.0, gix-chunk v0.4.6, gix-commitgraph v0.23.0, gix-hashtable v0.5.0, gix-revwalk v0.11.0, gix-traverse v0.36.0, gix-worktree-stream v0.8.0, gix-archive v0.8.0, gix-config-value v0.14.2, gix-tempfile v12.0.0, gix-lock v12.0.0, gix-ref v0.40.0, gix-sec v0.10.2, gix-config v0.33.0, gix-prompt v0.8.1, gix-url v0.26.0, gix-credentials v0.23.0, gix-ignore v0.10.0, gix-bitmap v0.2.9, gix-index v0.28.0, gix-worktree v0.29.0, gix-diff v0.39.0, gix-discover v0.28.0, gix-macros v0.1.2, gix-mailmap v0.21.0, gix-negotiate v0.11.0, gix-pack v0.46.0, gix-odb v0.56.0, gix-pathspec v0.5.0, gix-packetline v0.17.1, gix-transport v0.40.0, gix-protocol v0.43.0, gix-revision v0.25.0, gix-refspec v0.21.0, gix-status v0.4.0, gix-submodule v0.7.0, gix-worktree-state v0.6.0, gix v0.57.0, gix-fsck v0.2.0, gitoxide-core v0.35.0, gitoxide v0.33.0, safety bump 40 crates ([`e1aae19`](https://github.com/Byron/gitoxide/commit/e1aae191d7421c748913c92e2c5883274331dd20)) - - Prepare changelogs of next release ([`e78a92b`](https://github.com/Byron/gitoxide/commit/e78a92bfeda168b2f35bb7ba9a94175cdece12f2)) - - Merge branch 'maintenance' ([`4454c9d`](https://github.com/Byron/gitoxide/commit/4454c9d66c32a1de75a66639016c73edbda3bd34)) - - Upgrade MSRV to v1.70 ([`aea89c3`](https://github.com/Byron/gitoxide/commit/aea89c3ad52f1a800abb620e9a4701bdf904ff7d)) - - Merge branch 'main' into fix-1183 ([`1691ba6`](https://github.com/Byron/gitoxide/commit/1691ba669537f4a39ebb0891747dc509a6aedbef)) - - Merge branch 'archive-handling' ([`7549559`](https://github.com/Byron/gitoxide/commit/7549559fcbf42249939f41fd7aa34b4449eb1fec)) - - Check all git-lfs managed files into the repository ([`35439de`](https://github.com/Byron/gitoxide/commit/35439defd2d71779d4b3795b7652cde18ff11150)) + - Release gix-date v0.8.2, gix-hash v0.14.0, gix-trace v0.1.5, gix-features v0.37.0, gix-actor v0.29.0, gix-validate v0.8.2, gix-object v0.40.0, gix-path v0.10.2, gix-glob v0.15.0, gix-quote v0.4.9, gix-attributes v0.21.0, gix-command v0.3.1, gix-packetline-blocking v0.17.1, gix-utils v0.1.7, gix-filter v0.8.0, gix-fs v0.9.0, gix-chunk v0.4.6, gix-commitgraph v0.23.0, gix-hashtable v0.5.0, gix-revwalk v0.11.0, gix-traverse v0.36.0, gix-worktree-stream v0.8.0, gix-archive v0.8.0, gix-config-value v0.14.2, gix-tempfile v12.0.0, gix-lock v12.0.0, gix-ref v0.40.0, gix-sec v0.10.2, gix-config v0.33.0, gix-prompt v0.8.1, gix-url v0.26.0, gix-credentials v0.23.0, gix-ignore v0.10.0, gix-bitmap v0.2.9, gix-index v0.28.0, gix-worktree v0.29.0, gix-diff v0.39.0, gix-discover v0.28.0, gix-macros v0.1.2, gix-mailmap v0.21.0, gix-negotiate v0.11.0, gix-pack v0.46.0, gix-odb v0.56.0, gix-pathspec v0.5.0, gix-packetline v0.17.1, gix-transport v0.40.0, gix-protocol v0.43.0, gix-revision v0.25.0, gix-refspec v0.21.0, gix-status v0.4.0, gix-submodule v0.7.0, gix-worktree-state v0.6.0, gix v0.57.0, gix-fsck v0.2.0, gitoxide-core v0.35.0, gitoxide v0.33.0, safety bump 40 crates ([`e1aae19`](https://github.com/BurntSushi/gitoxide/commit/e1aae191d7421c748913c92e2c5883274331dd20)) + - Prepare changelogs of next release ([`e78a92b`](https://github.com/BurntSushi/gitoxide/commit/e78a92bfeda168b2f35bb7ba9a94175cdece12f2)) + - Merge branch 'maintenance' ([`4454c9d`](https://github.com/BurntSushi/gitoxide/commit/4454c9d66c32a1de75a66639016c73edbda3bd34)) + - Upgrade MSRV to v1.70 ([`aea89c3`](https://github.com/BurntSushi/gitoxide/commit/aea89c3ad52f1a800abb620e9a4701bdf904ff7d)) + - Merge branch 'main' into fix-1183 ([`1691ba6`](https://github.com/BurntSushi/gitoxide/commit/1691ba669537f4a39ebb0891747dc509a6aedbef)) + - Merge branch 'archive-handling' ([`7549559`](https://github.com/BurntSushi/gitoxide/commit/7549559fcbf42249939f41fd7aa34b4449eb1fec)) + - Check all git-lfs managed files into the repository ([`35439de`](https://github.com/BurntSushi/gitoxide/commit/35439defd2d71779d4b3795b7652cde18ff11150))
## 0.8.1 (2023-12-06) @@ -209,15 +262,15 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.8.1, gix-hash v0.13.2, gix-trace v0.1.4, gix-features v0.36.1, gix-actor v0.28.1, gix-validate v0.8.1, gix-object v0.39.0, gix-path v0.10.1, gix-glob v0.14.1, gix-quote v0.4.8, gix-attributes v0.20.1, gix-command v0.3.0, gix-packetline-blocking v0.17.0, gix-utils v0.1.6, gix-filter v0.7.0, gix-fs v0.8.1, gix-chunk v0.4.5, gix-commitgraph v0.22.1, gix-hashtable v0.4.1, gix-revwalk v0.10.0, gix-traverse v0.35.0, gix-worktree-stream v0.7.0, gix-archive v0.7.0, gix-config-value v0.14.1, gix-tempfile v11.0.1, gix-lock v11.0.1, gix-ref v0.39.0, gix-sec v0.10.1, gix-config v0.32.0, gix-prompt v0.8.0, gix-url v0.25.2, gix-credentials v0.22.0, gix-ignore v0.9.1, gix-bitmap v0.2.8, gix-index v0.27.0, gix-worktree v0.28.0, gix-diff v0.38.0, gix-discover v0.27.0, gix-macros v0.1.1, gix-mailmap v0.20.1, gix-negotiate v0.10.0, gix-pack v0.45.0, gix-odb v0.55.0, gix-pathspec v0.4.1, gix-packetline v0.17.0, gix-transport v0.39.0, gix-protocol v0.42.0, gix-revision v0.24.0, gix-refspec v0.20.0, gix-status v0.3.0, gix-submodule v0.6.0, gix-worktree-state v0.5.0, gix v0.56.0, gix-fsck v0.1.0, gitoxide-core v0.34.0, gitoxide v0.32.0, safety bump 27 crates ([`55d386a`](https://github.com/Byron/gitoxide/commit/55d386a2448aba1dd22c73fb63b3fd5b3a8401c9)) - - Prepare changelogs prior to release ([`d3dcbe5`](https://github.com/Byron/gitoxide/commit/d3dcbe5c4e3a004360d02fbfb74a8fad52f19b5e)) - - J fmt ([`51c7abc`](https://github.com/Byron/gitoxide/commit/51c7abc65f368b1b2bd3d82473793d3cd4fcbad5)) - - Merge branch 'check-cfg' ([`5a0d93e`](https://github.com/Byron/gitoxide/commit/5a0d93e7522564d126c34ce5d569f9a385698513)) - - Replace all docsrs config by the document-features feature ([`bb3224c`](https://github.com/Byron/gitoxide/commit/bb3224c25abf6df50286b3bbdf2cdef01e9eeca1)) - - Merge branch 'fix-gix-rev' ([`d3fb537`](https://github.com/Byron/gitoxide/commit/d3fb5377bb3a90deae714e613d89a891fcf69d40)) - - For good measure, use `unsigned_abs()` for a variant that can't panic. ([`045dd9d`](https://github.com/Byron/gitoxide/commit/045dd9db06e30e3852904651ac29cf82b2792066)) - - Merge branch 'size-optimization' ([`c0e72fb`](https://github.com/Byron/gitoxide/commit/c0e72fbadc0a494f47a110aebb46462d7b9f5664)) - - Remove CHANGELOG.md from all packages ([`b65a80b`](https://github.com/Byron/gitoxide/commit/b65a80b05c9372e752e7e67fcc5c073f71da164a)) + - Release gix-date v0.8.1, gix-hash v0.13.2, gix-trace v0.1.4, gix-features v0.36.1, gix-actor v0.28.1, gix-validate v0.8.1, gix-object v0.39.0, gix-path v0.10.1, gix-glob v0.14.1, gix-quote v0.4.8, gix-attributes v0.20.1, gix-command v0.3.0, gix-packetline-blocking v0.17.0, gix-utils v0.1.6, gix-filter v0.7.0, gix-fs v0.8.1, gix-chunk v0.4.5, gix-commitgraph v0.22.1, gix-hashtable v0.4.1, gix-revwalk v0.10.0, gix-traverse v0.35.0, gix-worktree-stream v0.7.0, gix-archive v0.7.0, gix-config-value v0.14.1, gix-tempfile v11.0.1, gix-lock v11.0.1, gix-ref v0.39.0, gix-sec v0.10.1, gix-config v0.32.0, gix-prompt v0.8.0, gix-url v0.25.2, gix-credentials v0.22.0, gix-ignore v0.9.1, gix-bitmap v0.2.8, gix-index v0.27.0, gix-worktree v0.28.0, gix-diff v0.38.0, gix-discover v0.27.0, gix-macros v0.1.1, gix-mailmap v0.20.1, gix-negotiate v0.10.0, gix-pack v0.45.0, gix-odb v0.55.0, gix-pathspec v0.4.1, gix-packetline v0.17.0, gix-transport v0.39.0, gix-protocol v0.42.0, gix-revision v0.24.0, gix-refspec v0.20.0, gix-status v0.3.0, gix-submodule v0.6.0, gix-worktree-state v0.5.0, gix v0.56.0, gix-fsck v0.1.0, gitoxide-core v0.34.0, gitoxide v0.32.0, safety bump 27 crates ([`55d386a`](https://github.com/BurntSushi/gitoxide/commit/55d386a2448aba1dd22c73fb63b3fd5b3a8401c9)) + - Prepare changelogs prior to release ([`d3dcbe5`](https://github.com/BurntSushi/gitoxide/commit/d3dcbe5c4e3a004360d02fbfb74a8fad52f19b5e)) + - J fmt ([`51c7abc`](https://github.com/BurntSushi/gitoxide/commit/51c7abc65f368b1b2bd3d82473793d3cd4fcbad5)) + - Merge branch 'check-cfg' ([`5a0d93e`](https://github.com/BurntSushi/gitoxide/commit/5a0d93e7522564d126c34ce5d569f9a385698513)) + - Replace all docsrs config by the document-features feature ([`bb3224c`](https://github.com/BurntSushi/gitoxide/commit/bb3224c25abf6df50286b3bbdf2cdef01e9eeca1)) + - Merge branch 'fix-gix-rev' ([`d3fb537`](https://github.com/BurntSushi/gitoxide/commit/d3fb5377bb3a90deae714e613d89a891fcf69d40)) + - For good measure, use `unsigned_abs()` for a variant that can't panic. ([`045dd9d`](https://github.com/BurntSushi/gitoxide/commit/045dd9db06e30e3852904651ac29cf82b2792066)) + - Merge branch 'size-optimization' ([`c0e72fb`](https://github.com/BurntSushi/gitoxide/commit/c0e72fbadc0a494f47a110aebb46462d7b9f5664)) + - Remove CHANGELOG.md from all packages ([`b65a80b`](https://github.com/BurntSushi/gitoxide/commit/b65a80b05c9372e752e7e67fcc5c073f71da164a))
## 0.8.0 (2023-09-08) @@ -243,11 +296,11 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.8.0, gix-hash v0.13.0, gix-features v0.34.0, gix-actor v0.26.0, gix-object v0.36.0, gix-path v0.10.0, gix-glob v0.12.0, gix-attributes v0.18.0, gix-packetline-blocking v0.16.6, gix-filter v0.4.0, gix-fs v0.6.0, gix-commitgraph v0.20.0, gix-hashtable v0.4.0, gix-revwalk v0.7.0, gix-traverse v0.32.0, gix-worktree-stream v0.4.0, gix-archive v0.4.0, gix-config-value v0.14.0, gix-tempfile v9.0.0, gix-lock v9.0.0, gix-ref v0.36.0, gix-sec v0.10.0, gix-config v0.29.0, gix-prompt v0.7.0, gix-url v0.23.0, gix-credentials v0.19.0, gix-diff v0.35.0, gix-discover v0.24.0, gix-ignore v0.7.0, gix-index v0.24.0, gix-macros v0.1.0, gix-mailmap v0.18.0, gix-negotiate v0.7.0, gix-pack v0.42.0, gix-odb v0.52.0, gix-pathspec v0.2.0, gix-packetline v0.16.6, gix-transport v0.36.0, gix-protocol v0.39.0, gix-revision v0.21.0, gix-refspec v0.17.0, gix-submodule v0.3.0, gix-worktree v0.25.0, gix-worktree-state v0.2.0, gix v0.53.0, safety bump 39 crates ([`8bd0456`](https://github.com/Byron/gitoxide/commit/8bd045676bb2cdc02624ab93e73ff8518064ca38)) - - Prepare changelogs for release ([`375db06`](https://github.com/Byron/gitoxide/commit/375db06a8442378c3f7a922fae38e2a6694d9d04)) - - Merge branch `dyn`ification ([`f658fcc`](https://github.com/Byron/gitoxide/commit/f658fcc52dc2200ae34ca53dc10be97fb9012057)) - - Use `dyn` trait where possible. ([`072ee32`](https://github.com/Byron/gitoxide/commit/072ee32f693a31161cd6a843da6582d13efbb20b)) - - Merge branch 'adjustments-for-cargo' ([`b7560a2`](https://github.com/Byron/gitoxide/commit/b7560a2445b62f888bf5aa2ba4c5a47ae037cb23)) + - Release gix-date v0.8.0, gix-hash v0.13.0, gix-features v0.34.0, gix-actor v0.26.0, gix-object v0.36.0, gix-path v0.10.0, gix-glob v0.12.0, gix-attributes v0.18.0, gix-packetline-blocking v0.16.6, gix-filter v0.4.0, gix-fs v0.6.0, gix-commitgraph v0.20.0, gix-hashtable v0.4.0, gix-revwalk v0.7.0, gix-traverse v0.32.0, gix-worktree-stream v0.4.0, gix-archive v0.4.0, gix-config-value v0.14.0, gix-tempfile v9.0.0, gix-lock v9.0.0, gix-ref v0.36.0, gix-sec v0.10.0, gix-config v0.29.0, gix-prompt v0.7.0, gix-url v0.23.0, gix-credentials v0.19.0, gix-diff v0.35.0, gix-discover v0.24.0, gix-ignore v0.7.0, gix-index v0.24.0, gix-macros v0.1.0, gix-mailmap v0.18.0, gix-negotiate v0.7.0, gix-pack v0.42.0, gix-odb v0.52.0, gix-pathspec v0.2.0, gix-packetline v0.16.6, gix-transport v0.36.0, gix-protocol v0.39.0, gix-revision v0.21.0, gix-refspec v0.17.0, gix-submodule v0.3.0, gix-worktree v0.25.0, gix-worktree-state v0.2.0, gix v0.53.0, safety bump 39 crates ([`8bd0456`](https://github.com/BurntSushi/gitoxide/commit/8bd045676bb2cdc02624ab93e73ff8518064ca38)) + - Prepare changelogs for release ([`375db06`](https://github.com/BurntSushi/gitoxide/commit/375db06a8442378c3f7a922fae38e2a6694d9d04)) + - Merge branch `dyn`ification ([`f658fcc`](https://github.com/BurntSushi/gitoxide/commit/f658fcc52dc2200ae34ca53dc10be97fb9012057)) + - Use `dyn` trait where possible. ([`072ee32`](https://github.com/BurntSushi/gitoxide/commit/072ee32f693a31161cd6a843da6582d13efbb20b)) + - Merge branch 'adjustments-for-cargo' ([`b7560a2`](https://github.com/BurntSushi/gitoxide/commit/b7560a2445b62f888bf5aa2ba4c5a47ae037cb23))
## 0.7.4 (2023-09-01) @@ -276,10 +329,10 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.7.4, gix-index v0.23.0, safety bump 5 crates ([`3be2b1c`](https://github.com/Byron/gitoxide/commit/3be2b1ccfe30eeae45711c64b88efc522a2b51b7)) - - Prepare `gix-index` release ([`6fdbc66`](https://github.com/Byron/gitoxide/commit/6fdbc667c20f10734390341b435c15c73b7cd227)) - - Thanks clippy ([`5044c3b`](https://github.com/Byron/gitoxide/commit/5044c3b87456cf58ebfbbd00f23c9ba671cb290c)) - - Merge branch 'gix-submodule' ([`363ee77`](https://github.com/Byron/gitoxide/commit/363ee77400805f473c9ad66eadad9214e7ab66f4)) + - Release gix-date v0.7.4, gix-index v0.23.0, safety bump 5 crates ([`3be2b1c`](https://github.com/BurntSushi/gitoxide/commit/3be2b1ccfe30eeae45711c64b88efc522a2b51b7)) + - Prepare `gix-index` release ([`6fdbc66`](https://github.com/BurntSushi/gitoxide/commit/6fdbc667c20f10734390341b435c15c73b7cd227)) + - Thanks clippy ([`5044c3b`](https://github.com/BurntSushi/gitoxide/commit/5044c3b87456cf58ebfbbd00f23c9ba671cb290c)) + - Merge branch 'gix-submodule' ([`363ee77`](https://github.com/BurntSushi/gitoxide/commit/363ee77400805f473c9ad66eadad9214e7ab66f4))
## 0.7.3 (2023-08-22) @@ -306,9 +359,9 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.7.3, gix-hash v0.12.0, gix-features v0.33.0, gix-actor v0.25.0, gix-object v0.35.0, gix-path v0.9.0, gix-glob v0.11.0, gix-quote v0.4.7, gix-attributes v0.17.0, gix-command v0.2.9, gix-packetline-blocking v0.16.5, gix-filter v0.3.0, gix-fs v0.5.0, gix-commitgraph v0.19.0, gix-hashtable v0.3.0, gix-revwalk v0.6.0, gix-traverse v0.31.0, gix-worktree-stream v0.3.0, gix-archive v0.3.0, gix-config-value v0.13.0, gix-tempfile v8.0.0, gix-lock v8.0.0, gix-ref v0.35.0, gix-sec v0.9.0, gix-config v0.28.0, gix-prompt v0.6.0, gix-url v0.22.0, gix-credentials v0.18.0, gix-diff v0.34.0, gix-discover v0.23.0, gix-ignore v0.6.0, gix-bitmap v0.2.7, gix-index v0.22.0, gix-mailmap v0.17.0, gix-negotiate v0.6.0, gix-pack v0.41.0, gix-odb v0.51.0, gix-pathspec v0.1.0, gix-packetline v0.16.5, gix-transport v0.35.0, gix-protocol v0.38.0, gix-revision v0.20.0, gix-refspec v0.16.0, gix-submodule v0.2.0, gix-worktree v0.24.0, gix-worktree-state v0.1.0, gix v0.52.0, gitoxide-core v0.31.0, gitoxide v0.29.0, safety bump 41 crates ([`30b2761`](https://github.com/Byron/gitoxide/commit/30b27615047692d3ced1b2d9c2ac15a80f79fbee)) - - Update changelogs prior to release ([`f23ea88`](https://github.com/Byron/gitoxide/commit/f23ea8828f2d9ba7559973daca388c9591bcc5fc)) - - Don't call crate 'WIP' in manifest anymore. ([`229bd48`](https://github.com/Byron/gitoxide/commit/229bd4899213f749a7cc124aa2b82a1368fba40f)) + - Release gix-date v0.7.3, gix-hash v0.12.0, gix-features v0.33.0, gix-actor v0.25.0, gix-object v0.35.0, gix-path v0.9.0, gix-glob v0.11.0, gix-quote v0.4.7, gix-attributes v0.17.0, gix-command v0.2.9, gix-packetline-blocking v0.16.5, gix-filter v0.3.0, gix-fs v0.5.0, gix-commitgraph v0.19.0, gix-hashtable v0.3.0, gix-revwalk v0.6.0, gix-traverse v0.31.0, gix-worktree-stream v0.3.0, gix-archive v0.3.0, gix-config-value v0.13.0, gix-tempfile v8.0.0, gix-lock v8.0.0, gix-ref v0.35.0, gix-sec v0.9.0, gix-config v0.28.0, gix-prompt v0.6.0, gix-url v0.22.0, gix-credentials v0.18.0, gix-diff v0.34.0, gix-discover v0.23.0, gix-ignore v0.6.0, gix-bitmap v0.2.7, gix-index v0.22.0, gix-mailmap v0.17.0, gix-negotiate v0.6.0, gix-pack v0.41.0, gix-odb v0.51.0, gix-pathspec v0.1.0, gix-packetline v0.16.5, gix-transport v0.35.0, gix-protocol v0.38.0, gix-revision v0.20.0, gix-refspec v0.16.0, gix-submodule v0.2.0, gix-worktree v0.24.0, gix-worktree-state v0.1.0, gix v0.52.0, gitoxide-core v0.31.0, gitoxide v0.29.0, safety bump 41 crates ([`30b2761`](https://github.com/BurntSushi/gitoxide/commit/30b27615047692d3ced1b2d9c2ac15a80f79fbee)) + - Update changelogs prior to release ([`f23ea88`](https://github.com/BurntSushi/gitoxide/commit/f23ea8828f2d9ba7559973daca388c9591bcc5fc)) + - Don't call crate 'WIP' in manifest anymore. ([`229bd48`](https://github.com/BurntSushi/gitoxide/commit/229bd4899213f749a7cc124aa2b82a1368fba40f))
## 0.7.2 (2023-08-07) @@ -322,7 +375,7 @@ A maintenance release without user-facing changes. - 6 commits contributed to the release over the course of 4 calendar days. - 15 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - - 1 unique issue was worked on: [#961](https://github.com/Byron/gitoxide/issues/961) + - 1 unique issue was worked on: [#961](https://github.com/BurntSushi/gitoxide/issues/961) ### Commit Details @@ -330,14 +383,14 @@ A maintenance release without user-facing changes.
view details - * **[#961](https://github.com/Byron/gitoxide/issues/961)** - - Add another fuzz-failure that doesn't fail ([`90ec770`](https://github.com/Byron/gitoxide/commit/90ec77057fa8a7d191c959e2f3a3c958270803eb)) + * **[#961](https://github.com/BurntSushi/gitoxide/issues/961)** + - Add another fuzz-failure that doesn't fail ([`90ec770`](https://github.com/BurntSushi/gitoxide/commit/90ec77057fa8a7d191c959e2f3a3c958270803eb)) * **Uncategorized** - - Release gix-glob v0.10.2, gix-date v0.7.2, gix-validate v0.8.0, gix-object v0.34.0, gix-ref v0.34.0, gix-config v0.27.0, gix-commitgraph v0.18.2, gix-revwalk v0.5.0, gix-revision v0.19.0, gix-refspec v0.15.0, gix-submodule v0.1.0, safety bump 18 crates ([`4604f83`](https://github.com/Byron/gitoxide/commit/4604f83ef238dc07c85aaeae097399b67f3cfd0c)) - - Prepare changelogs prior to release of `gix-submodule` ([`f3c4311`](https://github.com/Byron/gitoxide/commit/f3c43110e8d5f16cf87e50821044d8b3edbae235)) - - Merge branch 'dev-on-linux' ([`6b4a303`](https://github.com/Byron/gitoxide/commit/6b4a30330fe49fc97daa73f55bf56580cc0597aa)) - - Fix various tests to run properly on linux ([`ef8ccd9`](https://github.com/Byron/gitoxide/commit/ef8ccd9d16143d37155d063747c69cade80f162d)) - - Update `time` crate explicitly in Cargo.toml to latest version ([`e145a74`](https://github.com/Byron/gitoxide/commit/e145a7489dd5e1a7c3458428ecbd101e7b53536b)) + - Release gix-glob v0.10.2, gix-date v0.7.2, gix-validate v0.8.0, gix-object v0.34.0, gix-ref v0.34.0, gix-config v0.27.0, gix-commitgraph v0.18.2, gix-revwalk v0.5.0, gix-revision v0.19.0, gix-refspec v0.15.0, gix-submodule v0.1.0, safety bump 18 crates ([`4604f83`](https://github.com/BurntSushi/gitoxide/commit/4604f83ef238dc07c85aaeae097399b67f3cfd0c)) + - Prepare changelogs prior to release of `gix-submodule` ([`f3c4311`](https://github.com/BurntSushi/gitoxide/commit/f3c43110e8d5f16cf87e50821044d8b3edbae235)) + - Merge branch 'dev-on-linux' ([`6b4a303`](https://github.com/BurntSushi/gitoxide/commit/6b4a30330fe49fc97daa73f55bf56580cc0597aa)) + - Fix various tests to run properly on linux ([`ef8ccd9`](https://github.com/BurntSushi/gitoxide/commit/ef8ccd9d16143d37155d063747c69cade80f162d)) + - Update `time` crate explicitly in Cargo.toml to latest version ([`e145a74`](https://github.com/BurntSushi/gitoxide/commit/e145a7489dd5e1a7c3458428ecbd101e7b53536b))
## 0.7.1 (2023-07-22) @@ -360,9 +413,9 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.7.1, gix-hash v0.11.4, gix-trace v0.1.3, gix-features v0.32.0, gix-actor v0.24.0, gix-validate v0.7.7, gix-object v0.33.0, gix-path v0.8.4, gix-glob v0.10.0, gix-quote v0.4.6, gix-attributes v0.15.0, gix-command v0.2.7, gix-packetline-blocking v0.16.3, gix-filter v0.1.0, gix-fs v0.4.0, gix-chunk v0.4.4, gix-commitgraph v0.18.0, gix-hashtable v0.2.4, gix-revwalk v0.4.0, gix-traverse v0.30.0, gix-worktree-stream v0.2.0, gix-archive v0.2.0, gix-config-value v0.12.4, gix-tempfile v7.0.1, gix-utils v0.1.5, gix-lock v7.0.2, gix-ref v0.33.0, gix-sec v0.8.4, gix-prompt v0.5.3, gix-url v0.21.0, gix-credentials v0.17.0, gix-diff v0.33.0, gix-discover v0.22.0, gix-ignore v0.5.0, gix-bitmap v0.2.6, gix-index v0.21.0, gix-mailmap v0.16.0, gix-negotiate v0.5.0, gix-pack v0.40.0, gix-odb v0.50.0, gix-packetline v0.16.4, gix-transport v0.34.0, gix-protocol v0.36.0, gix-revision v0.18.0, gix-refspec v0.14.0, gix-worktree v0.22.0, gix v0.49.1 ([`5cb3589`](https://github.com/Byron/gitoxide/commit/5cb3589b74fc5376e02cbfe151e71344e1c417fe)) - - Update changelogs prior to release ([`2fc66b5`](https://github.com/Byron/gitoxide/commit/2fc66b55097ed494b72d1af939ba5561f71fde97)) - - Update license field following SPDX 2.1 license expression standard ([`9064ea3`](https://github.com/Byron/gitoxide/commit/9064ea31fae4dc59a56bdd3a06c0ddc990ee689e)) + - Release gix-date v0.7.1, gix-hash v0.11.4, gix-trace v0.1.3, gix-features v0.32.0, gix-actor v0.24.0, gix-validate v0.7.7, gix-object v0.33.0, gix-path v0.8.4, gix-glob v0.10.0, gix-quote v0.4.6, gix-attributes v0.15.0, gix-command v0.2.7, gix-packetline-blocking v0.16.3, gix-filter v0.1.0, gix-fs v0.4.0, gix-chunk v0.4.4, gix-commitgraph v0.18.0, gix-hashtable v0.2.4, gix-revwalk v0.4.0, gix-traverse v0.30.0, gix-worktree-stream v0.2.0, gix-archive v0.2.0, gix-config-value v0.12.4, gix-tempfile v7.0.1, gix-utils v0.1.5, gix-lock v7.0.2, gix-ref v0.33.0, gix-sec v0.8.4, gix-prompt v0.5.3, gix-url v0.21.0, gix-credentials v0.17.0, gix-diff v0.33.0, gix-discover v0.22.0, gix-ignore v0.5.0, gix-bitmap v0.2.6, gix-index v0.21.0, gix-mailmap v0.16.0, gix-negotiate v0.5.0, gix-pack v0.40.0, gix-odb v0.50.0, gix-packetline v0.16.4, gix-transport v0.34.0, gix-protocol v0.36.0, gix-revision v0.18.0, gix-refspec v0.14.0, gix-worktree v0.22.0, gix v0.49.1 ([`5cb3589`](https://github.com/BurntSushi/gitoxide/commit/5cb3589b74fc5376e02cbfe151e71344e1c417fe)) + - Update changelogs prior to release ([`2fc66b5`](https://github.com/BurntSushi/gitoxide/commit/2fc66b55097ed494b72d1af939ba5561f71fde97)) + - Update license field following SPDX 2.1 license expression standard ([`9064ea3`](https://github.com/BurntSushi/gitoxide/commit/9064ea31fae4dc59a56bdd3a06c0ddc990ee689e))
## 0.7.0 (2023-06-29) @@ -390,11 +443,11 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.7.0, gix-trace v0.1.2, gix-actor v0.23.0, gix-commitgraph v0.17.1, gix-utils v0.1.4, gix-object v0.32.0, gix-ref v0.32.0, gix-config v0.25.0, gix-diff v0.32.0, gix-discover v0.21.0, gix-hashtable v0.2.3, gix-revwalk v0.3.0, gix-traverse v0.29.0, gix-index v0.20.0, gix-mailmap v0.15.0, gix-negotiate v0.4.0, gix-pack v0.39.0, gix-odb v0.49.0, gix-protocol v0.35.0, gix-revision v0.17.0, gix-refspec v0.13.0, gix-worktree v0.21.0, gix v0.48.0, safety bump 20 crates ([`27e8c18`](https://github.com/Byron/gitoxide/commit/27e8c18db5a9a21843381c116a8ed6d9f681b3f8)) - - Prepare changelogs prior to release ([`00f96fb`](https://github.com/Byron/gitoxide/commit/00f96fb3110a8f81a1bd0d74c757c15b8773c6f6)) - - Merge branch 'i64-times' ([`b407461`](https://github.com/Byron/gitoxide/commit/b407461d8991db67a5bdb2ab13f518f78a85ed40)) - - Adapt to changes in `gix-date` ([`fba45c6`](https://github.com/Byron/gitoxide/commit/fba45c68d57d5f73070a6949556a04187d42e427)) - - Support dates prior to the UNIX epoch. ([`09fbfd2`](https://github.com/Byron/gitoxide/commit/09fbfd2ac3100947c8ea96fdf6425032354aee1b)) + - Release gix-date v0.7.0, gix-trace v0.1.2, gix-actor v0.23.0, gix-commitgraph v0.17.1, gix-utils v0.1.4, gix-object v0.32.0, gix-ref v0.32.0, gix-config v0.25.0, gix-diff v0.32.0, gix-discover v0.21.0, gix-hashtable v0.2.3, gix-revwalk v0.3.0, gix-traverse v0.29.0, gix-index v0.20.0, gix-mailmap v0.15.0, gix-negotiate v0.4.0, gix-pack v0.39.0, gix-odb v0.49.0, gix-protocol v0.35.0, gix-revision v0.17.0, gix-refspec v0.13.0, gix-worktree v0.21.0, gix v0.48.0, safety bump 20 crates ([`27e8c18`](https://github.com/BurntSushi/gitoxide/commit/27e8c18db5a9a21843381c116a8ed6d9f681b3f8)) + - Prepare changelogs prior to release ([`00f96fb`](https://github.com/BurntSushi/gitoxide/commit/00f96fb3110a8f81a1bd0d74c757c15b8773c6f6)) + - Merge branch 'i64-times' ([`b407461`](https://github.com/BurntSushi/gitoxide/commit/b407461d8991db67a5bdb2ab13f518f78a85ed40)) + - Adapt to changes in `gix-date` ([`fba45c6`](https://github.com/BurntSushi/gitoxide/commit/fba45c68d57d5f73070a6949556a04187d42e427)) + - Support dates prior to the UNIX epoch. ([`09fbfd2`](https://github.com/BurntSushi/gitoxide/commit/09fbfd2ac3100947c8ea96fdf6425032354aee1b))
## 0.6.0 (2023-06-22) @@ -430,15 +483,15 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.6.0, gix-hash v0.11.3, gix-trace v0.1.1, gix-features v0.31.0, gix-actor v0.22.0, gix-path v0.8.2, gix-glob v0.9.0, gix-quote v0.4.5, gix-attributes v0.14.0, gix-chunk v0.4.3, gix-commitgraph v0.17.0, gix-config-value v0.12.2, gix-fs v0.3.0, gix-tempfile v7.0.0, gix-utils v0.1.3, gix-lock v7.0.0, gix-validate v0.7.6, gix-object v0.31.0, gix-ref v0.31.0, gix-sec v0.8.2, gix-config v0.24.0, gix-command v0.2.6, gix-prompt v0.5.2, gix-url v0.20.0, gix-credentials v0.16.0, gix-diff v0.31.0, gix-discover v0.20.0, gix-hashtable v0.2.2, gix-ignore v0.4.0, gix-bitmap v0.2.5, gix-revwalk v0.2.0, gix-traverse v0.28.0, gix-index v0.19.0, gix-mailmap v0.14.0, gix-negotiate v0.3.0, gix-pack v0.38.0, gix-odb v0.48.0, gix-packetline v0.16.3, gix-transport v0.33.0, gix-protocol v0.34.0, gix-revision v0.16.0, gix-refspec v0.12.0, gix-worktree v0.20.0, gix v0.47.0, gitoxide-core v0.29.0, gitoxide v0.27.0, safety bump 30 crates ([`ea9f942`](https://github.com/Byron/gitoxide/commit/ea9f9424e777f10da0e33bb9ffbbefd01c4c5a74)) - - Prepare changelogs prior to release ([`18b0a37`](https://github.com/Byron/gitoxide/commit/18b0a371941aa2d4d62512437d5daa351ba99ffd)) - - `just fmt` ([`871dd0b`](https://github.com/Byron/gitoxide/commit/871dd0b977caf17159092a4739ba5408403cdb2c)) - - Merge branch 'corpus' ([`aa16c8c`](https://github.com/Byron/gitoxide/commit/aa16c8ce91452a3e3063cf1cf0240b6014c4743f)) - - Change MSRV to 1.65 ([`4f635fc`](https://github.com/Byron/gitoxide/commit/4f635fc4429350bae2582d25de86429969d28f30)) - - Merge branch 'help-874-redundant-closures' ([`fe59956`](https://github.com/Byron/gitoxide/commit/fe59956ad667303a923d7cfd9ffd72283df41d78)) - - Add `clippy::redundant-closure-for-method-calls` lint ([`bcad5c2`](https://github.com/Byron/gitoxide/commit/bcad5c22049d56a25ef69d6c7a3344e78f9a1d4d)) - - Merge branch 'future-dates' ([`8d2e6a9`](https://github.com/Byron/gitoxide/commit/8d2e6a91ac92a033e9e3daad5cffa90263075536)) - - Represent time as 64 bit integer. ([`4bc0ae1`](https://github.com/Byron/gitoxide/commit/4bc0ae1eb313ad83c793f397af9ca791b9b171e5)) + - Release gix-date v0.6.0, gix-hash v0.11.3, gix-trace v0.1.1, gix-features v0.31.0, gix-actor v0.22.0, gix-path v0.8.2, gix-glob v0.9.0, gix-quote v0.4.5, gix-attributes v0.14.0, gix-chunk v0.4.3, gix-commitgraph v0.17.0, gix-config-value v0.12.2, gix-fs v0.3.0, gix-tempfile v7.0.0, gix-utils v0.1.3, gix-lock v7.0.0, gix-validate v0.7.6, gix-object v0.31.0, gix-ref v0.31.0, gix-sec v0.8.2, gix-config v0.24.0, gix-command v0.2.6, gix-prompt v0.5.2, gix-url v0.20.0, gix-credentials v0.16.0, gix-diff v0.31.0, gix-discover v0.20.0, gix-hashtable v0.2.2, gix-ignore v0.4.0, gix-bitmap v0.2.5, gix-revwalk v0.2.0, gix-traverse v0.28.0, gix-index v0.19.0, gix-mailmap v0.14.0, gix-negotiate v0.3.0, gix-pack v0.38.0, gix-odb v0.48.0, gix-packetline v0.16.3, gix-transport v0.33.0, gix-protocol v0.34.0, gix-revision v0.16.0, gix-refspec v0.12.0, gix-worktree v0.20.0, gix v0.47.0, gitoxide-core v0.29.0, gitoxide v0.27.0, safety bump 30 crates ([`ea9f942`](https://github.com/BurntSushi/gitoxide/commit/ea9f9424e777f10da0e33bb9ffbbefd01c4c5a74)) + - Prepare changelogs prior to release ([`18b0a37`](https://github.com/BurntSushi/gitoxide/commit/18b0a371941aa2d4d62512437d5daa351ba99ffd)) + - `just fmt` ([`871dd0b`](https://github.com/BurntSushi/gitoxide/commit/871dd0b977caf17159092a4739ba5408403cdb2c)) + - Merge branch 'corpus' ([`aa16c8c`](https://github.com/BurntSushi/gitoxide/commit/aa16c8ce91452a3e3063cf1cf0240b6014c4743f)) + - Change MSRV to 1.65 ([`4f635fc`](https://github.com/BurntSushi/gitoxide/commit/4f635fc4429350bae2582d25de86429969d28f30)) + - Merge branch 'help-874-redundant-closures' ([`fe59956`](https://github.com/BurntSushi/gitoxide/commit/fe59956ad667303a923d7cfd9ffd72283df41d78)) + - Add `clippy::redundant-closure-for-method-calls` lint ([`bcad5c2`](https://github.com/BurntSushi/gitoxide/commit/bcad5c22049d56a25ef69d6c7a3344e78f9a1d4d)) + - Merge branch 'future-dates' ([`8d2e6a9`](https://github.com/BurntSushi/gitoxide/commit/8d2e6a91ac92a033e9e3daad5cffa90263075536)) + - Represent time as 64 bit integer. ([`4bc0ae1`](https://github.com/BurntSushi/gitoxide/commit/4bc0ae1eb313ad83c793f397af9ca791b9b171e5))
## 0.5.1 (2023-06-06) @@ -461,11 +514,11 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.5.1, gix-hash v0.11.2, gix-features v0.30.0, gix-actor v0.21.0, gix-path v0.8.1, gix-glob v0.8.0, gix-quote v0.4.4, gix-attributes v0.13.0, gix-chunk v0.4.2, gix-commitgraph v0.16.0, gix-config-value v0.12.1, gix-fs v0.2.0, gix-tempfile v6.0.0, gix-utils v0.1.2, gix-lock v6.0.0, gix-validate v0.7.5, gix-object v0.30.0, gix-ref v0.30.0, gix-sec v0.8.1, gix-config v0.23.0, gix-command v0.2.5, gix-prompt v0.5.1, gix-url v0.19.0, gix-credentials v0.15.0, gix-diff v0.30.0, gix-discover v0.19.0, gix-hashtable v0.2.1, gix-ignore v0.3.0, gix-bitmap v0.2.4, gix-traverse v0.26.0, gix-index v0.17.0, gix-mailmap v0.13.0, gix-revision v0.15.0, gix-negotiate v0.2.0, gix-pack v0.36.0, gix-odb v0.46.0, gix-packetline v0.16.2, gix-transport v0.32.0, gix-protocol v0.33.0, gix-refspec v0.11.0, gix-worktree v0.18.0, gix v0.45.0, safety bump 29 crates ([`9a9fa96`](https://github.com/Byron/gitoxide/commit/9a9fa96fa8a722bddc5c3b2270b0edf8f6615141)) - - Prepare changelogs prior to release ([`8f15cec`](https://github.com/Byron/gitoxide/commit/8f15cec1ec7d5a9d56bb158f155011ef2bb3539b)) - - Merge branch 'main' into auto-clippy ([`3ef5c90`](https://github.com/Byron/gitoxide/commit/3ef5c90aebce23385815f1df674c1d28d58b4b0d)) - - Merge branch 'blinxen/main' ([`9375cd7`](https://github.com/Byron/gitoxide/commit/9375cd75b01aa22a0e2eed6305fe45fabfd6c1ac)) - - Include license files in all crates ([`facaaf6`](https://github.com/Byron/gitoxide/commit/facaaf633f01c857dcf2572c6dbe0a92b7105c1c)) + - Release gix-date v0.5.1, gix-hash v0.11.2, gix-features v0.30.0, gix-actor v0.21.0, gix-path v0.8.1, gix-glob v0.8.0, gix-quote v0.4.4, gix-attributes v0.13.0, gix-chunk v0.4.2, gix-commitgraph v0.16.0, gix-config-value v0.12.1, gix-fs v0.2.0, gix-tempfile v6.0.0, gix-utils v0.1.2, gix-lock v6.0.0, gix-validate v0.7.5, gix-object v0.30.0, gix-ref v0.30.0, gix-sec v0.8.1, gix-config v0.23.0, gix-command v0.2.5, gix-prompt v0.5.1, gix-url v0.19.0, gix-credentials v0.15.0, gix-diff v0.30.0, gix-discover v0.19.0, gix-hashtable v0.2.1, gix-ignore v0.3.0, gix-bitmap v0.2.4, gix-traverse v0.26.0, gix-index v0.17.0, gix-mailmap v0.13.0, gix-revision v0.15.0, gix-negotiate v0.2.0, gix-pack v0.36.0, gix-odb v0.46.0, gix-packetline v0.16.2, gix-transport v0.32.0, gix-protocol v0.33.0, gix-refspec v0.11.0, gix-worktree v0.18.0, gix v0.45.0, safety bump 29 crates ([`9a9fa96`](https://github.com/BurntSushi/gitoxide/commit/9a9fa96fa8a722bddc5c3b2270b0edf8f6615141)) + - Prepare changelogs prior to release ([`8f15cec`](https://github.com/BurntSushi/gitoxide/commit/8f15cec1ec7d5a9d56bb158f155011ef2bb3539b)) + - Merge branch 'main' into auto-clippy ([`3ef5c90`](https://github.com/BurntSushi/gitoxide/commit/3ef5c90aebce23385815f1df674c1d28d58b4b0d)) + - Merge branch 'blinxen/main' ([`9375cd7`](https://github.com/BurntSushi/gitoxide/commit/9375cd75b01aa22a0e2eed6305fe45fabfd6c1ac)) + - Include license files in all crates ([`facaaf6`](https://github.com/BurntSushi/gitoxide/commit/facaaf633f01c857dcf2572c6dbe0a92b7105c1c))
## 0.5.0 (2023-04-19) @@ -487,7 +540,7 @@ A maintenance release without user-facing changes. - 5 commits contributed to the release over the course of 2 calendar days. - 57 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - - 1 unique issue was worked on: [#814](https://github.com/Byron/gitoxide/issues/814) + - 1 unique issue was worked on: [#814](https://github.com/BurntSushi/gitoxide/issues/814) ### Commit Details @@ -495,13 +548,13 @@ A maintenance release without user-facing changes.
view details - * **[#814](https://github.com/Byron/gitoxide/issues/814)** - - Rename `serde1` cargo feature to `serde` and use the weak-deps cargo capability. ([`b83ee36`](https://github.com/Byron/gitoxide/commit/b83ee366a3c65c717beb587ad809268f1c54b8ad)) + * **[#814](https://github.com/BurntSushi/gitoxide/issues/814)** + - Rename `serde1` cargo feature to `serde` and use the weak-deps cargo capability. ([`b83ee36`](https://github.com/BurntSushi/gitoxide/commit/b83ee366a3c65c717beb587ad809268f1c54b8ad)) * **Uncategorized** - - Release gix-utils v0.1.0, gix-hash v0.11.0, gix-date v0.5.0, gix-features v0.29.0, gix-actor v0.20.0, gix-object v0.29.0, gix-archive v0.1.0, gix-fs v0.1.0, safety bump 25 crates ([`8dbd0a6`](https://github.com/Byron/gitoxide/commit/8dbd0a60557a85acfa231800a058cbac0271a8cf)) - - Prepare changelog prior to release ([`7f06458`](https://github.com/Byron/gitoxide/commit/7f064583bd0e1b078df89a7750f5a25deb70f516)) - - Merge branch 'main' into dev ([`cdef398`](https://github.com/Byron/gitoxide/commit/cdef398c4a3bd01baf0be2c27a3f77a400172b0d)) - - Rename the serde1 feature to serde ([`19338d9`](https://github.com/Byron/gitoxide/commit/19338d934b6712b7d6bd3fa3b2e4189bf7e6c8a1)) + - Release gix-utils v0.1.0, gix-hash v0.11.0, gix-date v0.5.0, gix-features v0.29.0, gix-actor v0.20.0, gix-object v0.29.0, gix-archive v0.1.0, gix-fs v0.1.0, safety bump 25 crates ([`8dbd0a6`](https://github.com/BurntSushi/gitoxide/commit/8dbd0a60557a85acfa231800a058cbac0271a8cf)) + - Prepare changelog prior to release ([`7f06458`](https://github.com/BurntSushi/gitoxide/commit/7f064583bd0e1b078df89a7750f5a25deb70f516)) + - Merge branch 'main' into dev ([`cdef398`](https://github.com/BurntSushi/gitoxide/commit/cdef398c4a3bd01baf0be2c27a3f77a400172b0d)) + - Rename the serde1 feature to serde ([`19338d9`](https://github.com/BurntSushi/gitoxide/commit/19338d934b6712b7d6bd3fa3b2e4189bf7e6c8a1))
## 0.4.3 (2023-02-20) @@ -535,8 +588,8 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** - - Release gix-date v0.4.3, gix-hash v0.10.3, gix-features v0.26.5, gix-actor v0.17.2, gix-glob v0.5.5, gix-path v0.7.2, gix-quote v0.4.2, gix-attributes v0.8.3, gix-validate v0.7.3, gix-object v0.26.2, gix-ref v0.24.1, gix-config v0.16.2, gix-command v0.2.4, gix-url v0.13.3, gix-credentials v0.9.2, gix-discover v0.13.1, gix-index v0.12.4, gix-mailmap v0.9.3, gix-pack v0.30.3, gix-packetline v0.14.3, gix-transport v0.25.6, gix-protocol v0.26.4, gix-revision v0.10.4, gix-refspec v0.7.3, gix-worktree v0.12.3, gix v0.36.1 ([`9604783`](https://github.com/Byron/gitoxide/commit/96047839a20a657a559376b0b14c65aeab96acbd)) - - Compatibility with `bstr` v1.3, use `*.as_bytes()` instead of `.as_ref()`. ([`135d317`](https://github.com/Byron/gitoxide/commit/135d317065aae87af302beb6c26bb6ca8e30b6aa)) + - Release gix-date v0.4.3, gix-hash v0.10.3, gix-features v0.26.5, gix-actor v0.17.2, gix-glob v0.5.5, gix-path v0.7.2, gix-quote v0.4.2, gix-attributes v0.8.3, gix-validate v0.7.3, gix-object v0.26.2, gix-ref v0.24.1, gix-config v0.16.2, gix-command v0.2.4, gix-url v0.13.3, gix-credentials v0.9.2, gix-discover v0.13.1, gix-index v0.12.4, gix-mailmap v0.9.3, gix-pack v0.30.3, gix-packetline v0.14.3, gix-transport v0.25.6, gix-protocol v0.26.4, gix-revision v0.10.4, gix-refspec v0.7.3, gix-worktree v0.12.3, gix v0.36.1 ([`9604783`](https://github.com/BurntSushi/gitoxide/commit/96047839a20a657a559376b0b14c65aeab96acbd)) + - Compatibility with `bstr` v1.3, use `*.as_bytes()` instead of `.as_ref()`. ([`135d317`](https://github.com/BurntSushi/gitoxide/commit/135d317065aae87af302beb6c26bb6ca8e30b6aa))
## 0.4.2 (2023-02-17) @@ -634,7 +687,7 @@ A maintenance release without user-facing changes. - 186 commits contributed to the release over the course of 309 calendar days. - 26 commits were understood as [conventional](https://www.conventionalcommits.org). - - 7 unique issues were worked on: [#331](https://github.com/Byron/gitoxide/issues/331), [#427](https://github.com/Byron/gitoxide/issues/427), [#450](https://github.com/Byron/gitoxide/issues/450), [#470](https://github.com/Byron/gitoxide/issues/470), [#691](https://github.com/Byron/gitoxide/issues/691), [#711](https://github.com/Byron/gitoxide/issues/711), [#720](https://github.com/Byron/gitoxide/issues/720) + - 7 unique issues were worked on: [#331](https://github.com/BurntSushi/gitoxide/issues/331), [#427](https://github.com/BurntSushi/gitoxide/issues/427), [#450](https://github.com/BurntSushi/gitoxide/issues/450), [#470](https://github.com/BurntSushi/gitoxide/issues/470), [#691](https://github.com/BurntSushi/gitoxide/issues/691), [#711](https://github.com/BurntSushi/gitoxide/issues/711), [#720](https://github.com/BurntSushi/gitoxide/issues/720) ### Thanks Clippy @@ -648,200 +701,200 @@ A maintenance release without user-facing changes.
view details - * **[#331](https://github.com/Byron/gitoxide/issues/331)** - - Initialize `Time` from `now_utc` and `now_local` ([`c76fde7`](https://github.com/Byron/gitoxide/commit/c76fde7de278b49ded13b655d5345e4eb8c1b134)) - - `Time::is_set()` to see if the time is more than just the default. ([`aeda76e`](https://github.com/Byron/gitoxide/commit/aeda76ed500d2edba62747d667227f2664edd267)) - - Frame for git-date ([`37e8ef8`](https://github.com/Byron/gitoxide/commit/37e8ef890305db0798059919290a0d27a9a39194)) - * **[#427](https://github.com/Byron/gitoxide/issues/427)** - - Make fmt ([`4b320e7`](https://github.com/Byron/gitoxide/commit/4b320e773368ac5e8c38dd8a779ef3d6d2d024ec)) - - Git-style disambiguation errors ([`5717194`](https://github.com/Byron/gitoxide/commit/57171946081c03da98f3d33f5b963c3bc4b2d6d9)) - - Reflog lookup by date is complete ([`b3d009e`](https://github.com/Byron/gitoxide/commit/b3d009e80e3e81afd3d095fa2d7b5fc737d585c7)) - - Add `Time` type. ([`cfb6a72`](https://github.com/Byron/gitoxide/commit/cfb6a726ddb763f7c22688f8ef309e719c2dfce4)) - * **[#450](https://github.com/Byron/gitoxide/issues/450)** - - Upgrade `bstr` to `1.0.1` ([`99905ba`](https://github.com/Byron/gitoxide/commit/99905bacace8aed42b16d43f0f04cae996cb971c)) - * **[#470](https://github.com/Byron/gitoxide/issues/470)** - - Update changelogs prior to release ([`caa7a1b`](https://github.com/Byron/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd)) - * **[#691](https://github.com/Byron/gitoxide/issues/691)** - - Set `rust-version` to 1.64 ([`55066ce`](https://github.com/Byron/gitoxide/commit/55066ce5fd71209abb5d84da2998b903504584bb)) - * **[#711](https://github.com/Byron/gitoxide/issues/711)** - - Assure we get the latest version of the `time` crate ([`cb31cd1`](https://github.com/Byron/gitoxide/commit/cb31cd16bc4a6e749c298cfbc7e0dad05b11b96c)) - * **[#720](https://github.com/Byron/gitoxide/issues/720)** - - Prevent panics from dates which cannot be represented by the `time` crate ([`786f6dc`](https://github.com/Byron/gitoxide/commit/786f6dc5c1f765b9598cd55ca8fb1714ad177e46)) + * **[#331](https://github.com/BurntSushi/gitoxide/issues/331)** + - Initialize `Time` from `now_utc` and `now_local` ([`c76fde7`](https://github.com/BurntSushi/gitoxide/commit/c76fde7de278b49ded13b655d5345e4eb8c1b134)) + - `Time::is_set()` to see if the time is more than just the default. ([`aeda76e`](https://github.com/BurntSushi/gitoxide/commit/aeda76ed500d2edba62747d667227f2664edd267)) + - Frame for git-date ([`37e8ef8`](https://github.com/BurntSushi/gitoxide/commit/37e8ef890305db0798059919290a0d27a9a39194)) + * **[#427](https://github.com/BurntSushi/gitoxide/issues/427)** + - Make fmt ([`4b320e7`](https://github.com/BurntSushi/gitoxide/commit/4b320e773368ac5e8c38dd8a779ef3d6d2d024ec)) + - Git-style disambiguation errors ([`5717194`](https://github.com/BurntSushi/gitoxide/commit/57171946081c03da98f3d33f5b963c3bc4b2d6d9)) + - Reflog lookup by date is complete ([`b3d009e`](https://github.com/BurntSushi/gitoxide/commit/b3d009e80e3e81afd3d095fa2d7b5fc737d585c7)) + - Add `Time` type. ([`cfb6a72`](https://github.com/BurntSushi/gitoxide/commit/cfb6a726ddb763f7c22688f8ef309e719c2dfce4)) + * **[#450](https://github.com/BurntSushi/gitoxide/issues/450)** + - Upgrade `bstr` to `1.0.1` ([`99905ba`](https://github.com/BurntSushi/gitoxide/commit/99905bacace8aed42b16d43f0f04cae996cb971c)) + * **[#470](https://github.com/BurntSushi/gitoxide/issues/470)** + - Update changelogs prior to release ([`caa7a1b`](https://github.com/BurntSushi/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd)) + * **[#691](https://github.com/BurntSushi/gitoxide/issues/691)** + - Set `rust-version` to 1.64 ([`55066ce`](https://github.com/BurntSushi/gitoxide/commit/55066ce5fd71209abb5d84da2998b903504584bb)) + * **[#711](https://github.com/BurntSushi/gitoxide/issues/711)** + - Assure we get the latest version of the `time` crate ([`cb31cd1`](https://github.com/BurntSushi/gitoxide/commit/cb31cd16bc4a6e749c298cfbc7e0dad05b11b96c)) + * **[#720](https://github.com/BurntSushi/gitoxide/issues/720)** + - Prevent panics from dates which cannot be represented by the `time` crate ([`786f6dc`](https://github.com/BurntSushi/gitoxide/commit/786f6dc5c1f765b9598cd55ca8fb1714ad177e46)) * **Uncategorized** - - Release gix-date v0.4.2, gix-hash v0.10.2, gix-features v0.26.4, gix-actor v0.17.1, gix-glob v0.5.3, gix-path v0.7.1, gix-quote v0.4.1, gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 ([`6ccc88a`](https://github.com/Byron/gitoxide/commit/6ccc88a8e4a56973b1a358cf72dc012ee3c75d56)) - - Merge branch 'rename-crates' into inform-about-gix-rename ([`c9275b9`](https://github.com/Byron/gitoxide/commit/c9275b99ea43949306d93775d9d78c98fb86cfb1)) - - Rename `git-testtools` to `gix-testtools` ([`b65c33d`](https://github.com/Byron/gitoxide/commit/b65c33d256cfed65d11adeff41132e3e58754089)) - - Adjust to renaming of `git-pack` to `gix-pack` ([`1ee81ad`](https://github.com/Byron/gitoxide/commit/1ee81ad310285ee4aa118118a2be3810dbace574)) - - Adjust to renaming of `git-odb` to `gix-odb` ([`476e2ad`](https://github.com/Byron/gitoxide/commit/476e2ad1a64e9e3f0d7c8651d5bcbee36cd78241)) - - Adjust to renaming of `git-index` to `gix-index` ([`86db5e0`](https://github.com/Byron/gitoxide/commit/86db5e09fc58ce66b252dc13b8d7e2c48e4d5062)) - - Adjust to renaming of `git-diff` to `gix-diff` ([`49a163e`](https://github.com/Byron/gitoxide/commit/49a163ec8b18f0e5fcd05a315de16d5d8be7650e)) - - Adjust to renaming of `git-commitgraph` to `gix-commitgraph` ([`f1dd0a3`](https://github.com/Byron/gitoxide/commit/f1dd0a3366e31259af029da73228e8af2f414244)) - - Adjust to renaming of `git-mailmap` to `gix-mailmap` ([`2e28c56`](https://github.com/Byron/gitoxide/commit/2e28c56bb9f70de6f97439818118d3a25859698f)) - - Adjust to renaming of `git-discover` to `gix-discover` ([`53adfe1`](https://github.com/Byron/gitoxide/commit/53adfe1c34e9ea3b27067a97b5e7ac80b351c441)) - - Adjust to renaming of `git-chunk` to `gix-chunk` ([`59194e3`](https://github.com/Byron/gitoxide/commit/59194e3a07853eae0624ebc4907478d1de4f7599)) - - Adjust to renaming of `git-bitmap` to `gix-bitmap` ([`75f2a07`](https://github.com/Byron/gitoxide/commit/75f2a079b17489f62bc43e1f1d932307375c4f9d)) - - Adjust to renaming for `git-protocol` to `gix-protocol` ([`823795a`](https://github.com/Byron/gitoxide/commit/823795addea3810243cab7936cd8ec0137cbc224)) - - Adjust to renaming of `git-refspec` to `gix-refspec` ([`c958802`](https://github.com/Byron/gitoxide/commit/c9588020561577736faa065e7e5b5bb486ca8fe1)) - - Adjust to renaming of `git-revision` to `gix-revision` ([`ee0ee84`](https://github.com/Byron/gitoxide/commit/ee0ee84607c2ffe11ee75f27a31903db68afed02)) - - Adjust to renaming of `git-transport` to `gix-transport` ([`b2ccf71`](https://github.com/Byron/gitoxide/commit/b2ccf716dc4425bb96651d4d58806a3cc2da219e)) - - Adjust to renaming of `git-credentials` to `gix-credentials` ([`6b18abc`](https://github.com/Byron/gitoxide/commit/6b18abcf2856f02ab938d535a65e51ac282bf94a)) - - Adjust to renaming of `git-prompt` to `gix-prompt` ([`6a4654e`](https://github.com/Byron/gitoxide/commit/6a4654e0d10ab773dd219cb4b731c0fc1471c36d)) - - Adjust to renaming of `git-command` to `gix-command` ([`d26b8e0`](https://github.com/Byron/gitoxide/commit/d26b8e046496894ae06b0bbfdba77196976cd975)) - - Adjust to renaming of `git-packetline` to `gix-packetline` ([`5cbd22c`](https://github.com/Byron/gitoxide/commit/5cbd22cf42efb760058561c6c3bbcd4dab8c8be1)) - - Adjust to renaming of `git-worktree` to `gix-worktree` ([`73a1282`](https://github.com/Byron/gitoxide/commit/73a12821b3d9b66ec1714d07dd27eb7a73e3a544)) - - Adjust to renamining of `git-worktree` to `gix-worktree` ([`108bb1a`](https://github.com/Byron/gitoxide/commit/108bb1a634f4828853fb590e9fc125f79441dd38)) - - Adjust to renaming of `git-url` to `gix-url` ([`b50817a`](https://github.com/Byron/gitoxide/commit/b50817aadb143e19f61f64e19b19ec1107d980c6)) - - Adjust to renaming of `git-date` to `gix-date` ([`9a79ff2`](https://github.com/Byron/gitoxide/commit/9a79ff2d5cc74c1efad9f41e21095ae498cce00b)) - - Rename `git-date` to `gix-date` ([`2b0a966`](https://github.com/Byron/gitoxide/commit/2b0a9662acf7c74f594138963e2efd8f576799f3)) - - Adjust to renamining of `git-attributes` to `gix-attributes` ([`4a8b3b8`](https://github.com/Byron/gitoxide/commit/4a8b3b812ac26f2a2aee8ce8ca81591273383c84)) - - Adjust to renaminig of `git-quote` to `gix-quote` ([`648025b`](https://github.com/Byron/gitoxide/commit/648025b7ca94411fdd0d90c53e5faede5fde6c8d)) - - Adjust to renaming of `git-config` to `gix-config` ([`3a861c8`](https://github.com/Byron/gitoxide/commit/3a861c8f049f6502d3bcbdac752659aa1aeda46a)) - - Adjust to renaming of `git-ref` to `gix-ref` ([`1f5f695`](https://github.com/Byron/gitoxide/commit/1f5f695407b034377d94b172465ff573562b3fc3)) - - Adjust to renaming of `git-lock` to `gix-lock` ([`2028e78`](https://github.com/Byron/gitoxide/commit/2028e7884ae1821edeec81612f501e88e4722b17)) - - Adjust to renaming of `git-tempfile` to `gix-tempfile` ([`b6cc3eb`](https://github.com/Byron/gitoxide/commit/b6cc3ebb5137084a6327af16a7d9364d8f092cc9)) - - Adjust to renaming of `git-object` to `gix-object` ([`fc86a1e`](https://github.com/Byron/gitoxide/commit/fc86a1e710ad7bf076c25cc6f028ddcf1a5a4311)) - - Adjust to renaming of `git-actor` to `gix-actor` ([`4dc9b44`](https://github.com/Byron/gitoxide/commit/4dc9b44dc52f2486ffa2040585c6897c1bf55df4)) - - Adjust to renaming of `git-validate` to `gix-validate` ([`5e40ad0`](https://github.com/Byron/gitoxide/commit/5e40ad078af3d08cbc2ca81ce755c0ed8a065b4f)) - - Adjust to renaming of `git-hash` to `gix-hash` ([`4a9d025`](https://github.com/Byron/gitoxide/commit/4a9d0257110c3efa61d08c8457c4545b200226d1)) - - Adjust to renaming of `git-features` to `gix-features` ([`e2dd68a`](https://github.com/Byron/gitoxide/commit/e2dd68a417aad229e194ff20dbbfd77668096ec6)) - - Adjust to renaming of `git-glob` to `gix-glob` ([`35b2a3a`](https://github.com/Byron/gitoxide/commit/35b2a3acbc8f2a03f151bc0a3863163844e0ca86)) - - Adjust to renaming of `git-sec` to `gix-sec` ([`eabbb92`](https://github.com/Byron/gitoxide/commit/eabbb923bd5a32fc80fa80f96cfdc2ab7bb2ed17)) - - Adapt to renaming of `git-path` to `gix-path` ([`d3bbcfc`](https://github.com/Byron/gitoxide/commit/d3bbcfccad80fc44ea8e7bf819f23adaca06ba2d)) - - Adjust to rename of `git-config-value` to `gix-config-value` ([`622b3e1`](https://github.com/Byron/gitoxide/commit/622b3e1d0bffa0f8db73697960f9712024fac430)) - - Release git-date v0.4.2, git-hash v0.10.2, git-features v0.26.2, git-actor v0.17.1, git-glob v0.5.3, git-path v0.7.1, git-quote v0.4.1, git-attributes v0.8.2, git-config-value v0.10.1, git-tempfile v3.0.2, git-lock v3.0.2, git-validate v0.7.2, git-object v0.26.1, git-ref v0.24.0, git-sec v0.6.2, git-config v0.16.0, git-command v0.2.3, git-prompt v0.3.2, git-url v0.13.2, git-credentials v0.9.1, git-diff v0.26.1, git-discover v0.13.0, git-hashtable v0.1.1, git-bitmap v0.2.1, git-traverse v0.22.1, git-index v0.12.3, git-mailmap v0.9.2, git-chunk v0.4.1, git-pack v0.30.2, git-odb v0.40.2, git-packetline v0.14.2, git-transport v0.25.4, git-protocol v0.26.3, git-revision v0.10.2, git-refspec v0.7.2, git-worktree v0.12.2, git-repository v0.34.0, safety bump 3 crates ([`c196d20`](https://github.com/Byron/gitoxide/commit/c196d206d57a310b1ce974a1cf0e7e6d6db5c4d6)) - - Prepare changelogs prior to release ([`7c846d2`](https://github.com/Byron/gitoxide/commit/7c846d2102dc767366771925212712ef8cc9bf07)) - - Merge branch 'Lioness100/main' ([`1e544e8`](https://github.com/Byron/gitoxide/commit/1e544e82455bf9ecb5e3c2146280eaf7ecd81f16)) - - Fix typos ([`39ed9ed`](https://github.com/Byron/gitoxide/commit/39ed9eda62b7718d5109135e5ad406fb1fe2978c)) - - Thanks clippy ([`bac57dd`](https://github.com/Byron/gitoxide/commit/bac57dd05ea2d5a4ee45ef9350fa3f2e19474bc0)) - - Merge branch 'adjustments-for-cargo' ([`7bba270`](https://github.com/Byron/gitoxide/commit/7bba2709488b7eb999b8136dbab03af977241678)) - - Merge branch 'fix-git-date-panics' ([`56f5593`](https://github.com/Byron/gitoxide/commit/56f5593b25e300d21c380c5fb5a184445ff26183)) - - Panic in `parse_raw()` (as found by fuzzer) ([`3d6c810`](https://github.com/Byron/gitoxide/commit/3d6c81000559df91b17834ec5e9830b085277af8)) - - Fix warnings, don't track Cargo.lock to use compatible latest dependencies ([`96a56a9`](https://github.com/Byron/gitoxide/commit/96a56a9d1d76e5832a4bf505152985a74c6c7357)) - - Merge pull request #714 from silvergasp/fuzz-git-date ([`a52c54e`](https://github.com/Byron/gitoxide/commit/a52c54e97698c1b61ff70884378338f63b4d1a27)) - - Adds fuzzer for date parser ([`fe04934`](https://github.com/Byron/gitoxide/commit/fe04934d783e4c53a79fae2e0d3b0c5802ea1809)) - - Optimize usage of `hex_to_id()` ([`6fa950d`](https://github.com/Byron/gitoxide/commit/6fa950d0ab1991a5577c06385169be1b390dd88a)) - - Break cyclical dev dependencies ([`1fea18f`](https://github.com/Byron/gitoxide/commit/1fea18f5f8b4189a23dc4fa3f041a672f6fbcfb3)) - - Return the time that failed to parse in the error ([`f5c9aa8`](https://github.com/Byron/gitoxide/commit/f5c9aa827e3b9ffb82a52ad7f840c58aa0d654ed)) - - Release git-date v0.4.1, git-features v0.26.1, git-glob v0.5.2, git-attributes v0.8.1, git-tempfile v3.0.1, git-ref v0.23.1, git-sec v0.6.1, git-config v0.15.1, git-prompt v0.3.1, git-url v0.13.1, git-discover v0.12.1, git-index v0.12.2, git-mailmap v0.9.1, git-pack v0.30.1, git-odb v0.40.1, git-transport v0.25.3, git-protocol v0.26.2, git-revision v0.10.1, git-refspec v0.7.1, git-worktree v0.12.1, git-repository v0.33.0 ([`5b5b380`](https://github.com/Byron/gitoxide/commit/5b5b3809faa71c658db38b40dfc410224d08a367)) - - Prepare changelogs prior to release ([`93bef97`](https://github.com/Byron/gitoxide/commit/93bef97b3c0c75d4bf7119fdd787516e1efc77bf)) - - Merge branch 'patch-1' ([`b93f0c4`](https://github.com/Byron/gitoxide/commit/b93f0c49fc677b6c19aea332cbfc1445ce475375)) - - Thanks clippy ([`b34c9fe`](https://github.com/Byron/gitoxide/commit/b34c9fe58223862712eacc1cb7353e497a4b9778)) - - Release git-date v0.4.0, git-actor v0.17.0, git-object v0.26.0, git-traverse v0.22.0, git-index v0.12.0, safety bump 15 crates ([`0e3d0a5`](https://github.com/Byron/gitoxide/commit/0e3d0a56d7e6a60c6578138f2690b4fa54a2072d)) - - Prepare changelogs prior to release ([`d679f5b`](https://github.com/Byron/gitoxide/commit/d679f5b6f018633e858d3ebbdaf1cd5098bbc5e7)) - - `time::format::GIT_DEFAULT` -> `*::DEFAULT` and `*::DEFAULT` -> `*::GITOXIDE`. ([`41fc2bb`](https://github.com/Byron/gitoxide/commit/41fc2bb20e6a926ffc3638c0fac21d733fdc2e3c)) - - Merge branch 'strict-raw-dates' ([`c65ce7e`](https://github.com/Byron/gitoxide/commit/c65ce7e3031b036d3a76b6e8a6c9ead39390261c)) - - Stricter raw date parsing ([`046af94`](https://github.com/Byron/gitoxide/commit/046af94f005a6e095f0d3616c0b57ef1f556f734)) - - Merge branch 'issue-679' ([`a910d9e`](https://github.com/Byron/gitoxide/commit/a910d9e7dcb2ba1979660165fa5b8cb0a2dce594)) - - Refactor ([`26597b9`](https://github.com/Byron/gitoxide/commit/26597b983d401a1efcd13b3e69aad6a39581ec0b)) - - Support git default date format ([`4066ac7`](https://github.com/Byron/gitoxide/commit/4066ac7367d8e870522746429513fb7a357a2cc6)) - - Format git-style RFC 2822 date strings ([`8094351`](https://github.com/Byron/gitoxide/commit/8094351fe547a0f6756b0ed29dc87a0e6b9ceec1)) - - Parse git-styled RFC 2822 date strings ([`dff0aa0`](https://github.com/Byron/gitoxide/commit/dff0aa0be600b9cd9518184fefa9b3c8fdb510f2)) - - Release git-date v0.3.1, git-features v0.25.0, git-actor v0.15.0, git-glob v0.5.1, git-path v0.7.0, git-attributes v0.7.0, git-config-value v0.10.0, git-lock v3.0.1, git-validate v0.7.1, git-object v0.24.0, git-ref v0.21.0, git-sec v0.6.0, git-config v0.13.0, git-prompt v0.3.0, git-url v0.12.0, git-credentials v0.8.0, git-diff v0.24.0, git-discover v0.10.0, git-traverse v0.20.0, git-index v0.10.0, git-mailmap v0.7.0, git-pack v0.28.0, git-odb v0.38.0, git-packetline v0.14.1, git-transport v0.24.0, git-protocol v0.25.0, git-revision v0.8.0, git-refspec v0.5.0, git-worktree v0.10.0, git-repository v0.30.0, safety bump 26 crates ([`e6b9906`](https://github.com/Byron/gitoxide/commit/e6b9906c486b11057936da16ed6e0ec450a0fb83)) - - Prepare chnagelogs prior to git-repository release ([`7114bbb`](https://github.com/Byron/gitoxide/commit/7114bbb6732aa8571d4ab74f28ed3e26e9fbe4d0)) - - Merge branch 'main' into read-split-index ([`c57bdde`](https://github.com/Byron/gitoxide/commit/c57bdde6de37eca9672ea715962bbd02aa3eb055)) - - Merge branch 'adjustments-for-cargo' ([`083909b`](https://github.com/Byron/gitoxide/commit/083909bc7eb902eeee2002034fdb6ed88280dc5c)) - - Merge branch 'bugfix/system-time-correct-offset-sign' ([`6e40433`](https://github.com/Byron/gitoxide/commit/6e40433f6f607888e8f8a6c36e53a68b91fcf671)) - - Add non-isolated test that, depending on region, would catch the invalid-sign bug. ([`b649965`](https://github.com/Byron/gitoxide/commit/b6499653b71e79f17a7304c6e83d2e1776ff5d5e)) - - Negative system timezone offsets should be serialized as such ([`39655f5`](https://github.com/Byron/gitoxide/commit/39655f5f6fa39a55c4420f672e866c483f9b85ed)) - - Adjust to changes in `git-testtools` ([`4eb842c`](https://github.com/Byron/gitoxide/commit/4eb842c7150b980e1c2637217e1f9657a671cea7)) - - Merge branch 'bugfix/signed-raw-time' ([`f50b9f5`](https://github.com/Byron/gitoxide/commit/f50b9f54425e64461a31d00e082470aa5042be74)) - - Thanks clippy ([`75d6e88`](https://github.com/Byron/gitoxide/commit/75d6e882cea823100f2ad5bf26a4f1082287d80b)) - - Refactor ([`f4e8051`](https://github.com/Byron/gitoxide/commit/f4e8051fbc8cde9ba25fb1185c9e32f6aed4c0fb)) - - Correctly parse raw dates with negative timezone offsets ([`f4ea59d`](https://github.com/Byron/gitoxide/commit/f4ea59db0a429801ab40b1294da4bffd9e0f80b3)) - - Extend git-date's baseline tests to also re-format the parsed dates ([`9f95f7f`](https://github.com/Byron/gitoxide/commit/9f95f7fbbe5b56e65c00c26f580bf67a4001e146)) - - Merge branch 'bugfix/timestamp-to-datetime-conversion' ([`be0bbf5`](https://github.com/Byron/gitoxide/commit/be0bbf519c4a6687c305717ec0c12215a5836f58)) - - Always consider timestamps as UTC when loading from commits ([`be603f5`](https://github.com/Byron/gitoxide/commit/be603f593055309b74685bc2aebb8e35e6de2d59)) - - Merge branch 'main' into http-config ([`bcd9654`](https://github.com/Byron/gitoxide/commit/bcd9654e56169799eb706646da6ee1f4ef2021a9)) - - Release git-hash v0.10.0, git-features v0.24.0, git-date v0.3.0, git-actor v0.14.0, git-glob v0.5.0, git-path v0.6.0, git-quote v0.4.0, git-attributes v0.6.0, git-config-value v0.9.0, git-tempfile v3.0.0, git-lock v3.0.0, git-validate v0.7.0, git-object v0.23.0, git-ref v0.20.0, git-sec v0.5.0, git-config v0.12.0, git-command v0.2.0, git-prompt v0.2.0, git-url v0.11.0, git-credentials v0.7.0, git-diff v0.23.0, git-discover v0.9.0, git-bitmap v0.2.0, git-traverse v0.19.0, git-index v0.9.0, git-mailmap v0.6.0, git-chunk v0.4.0, git-pack v0.27.0, git-odb v0.37.0, git-packetline v0.14.0, git-transport v0.23.0, git-protocol v0.24.0, git-revision v0.7.0, git-refspec v0.4.0, git-worktree v0.9.0, git-repository v0.29.0, git-commitgraph v0.11.0, gitoxide-core v0.21.0, gitoxide v0.19.0, safety bump 28 crates ([`b2c301e`](https://github.com/Byron/gitoxide/commit/b2c301ef131ffe1871314e19f387cf10a8d2ac16)) - - Prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c)) - - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8)) - - Upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed)) - - Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b)) - - Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates ([`29a043b`](https://github.com/Byron/gitoxide/commit/29a043be6808a3e9199a9b26bd076fe843afe4f4)) - - Merge branch 'filter-refs' ([`fd14489`](https://github.com/Byron/gitoxide/commit/fd14489f729172d615d0fa1e8dbd605e9eacf69d)) - - Merge branch 'git_date_relative' ([`83a3832`](https://github.com/Byron/gitoxide/commit/83a38329c59e9ebc057221da832fd8320bbeddb1)) - - Refactor ([`c5c6bf6`](https://github.com/Byron/gitoxide/commit/c5c6bf6ef3f0c9c12389bb638ab4d32b61839dec)) - - Refactor ([`956613f`](https://github.com/Byron/gitoxide/commit/956613fcdb33a845526fa9743aa0e7f80b3badfa)) - - Refactor ([`1026b7c`](https://github.com/Byron/gitoxide/commit/1026b7c613a3a8b46a27dd7cd5e3520043b21ab7)) - - WIP. ([`79d82d4`](https://github.com/Byron/gitoxide/commit/79d82d46613c83280d2401ef4d72a35010a70b87)) - - Parse the output while parsing the baseline file. ([`70fe59f`](https://github.com/Byron/gitoxide/commit/70fe59f4a1cad25f687397206ee2cbe50e643181)) - - Make fmt ([`535e967`](https://github.com/Byron/gitoxide/commit/535e967666c6da657ff1b7eff7c64ab27cafb182)) - - Merge branch 'main' into filter-refs-by-spec ([`1f6e5ab`](https://github.com/Byron/gitoxide/commit/1f6e5ab15f5fd8d23719b13e6aea59cd231ac0fe)) - - Parse now takes the current time `parse(…, Option
## 0.4.1 (2023-01-10) diff --git a/gix-date/Cargo.toml b/gix-date/Cargo.toml index 5444423c923..12f78326d89 100644 --- a/gix-date/Cargo.toml +++ b/gix-date/Cargo.toml @@ -1,32 +1,32 @@ [package] name = "gix-date" -version = "0.8.7" +version = "0.9.0" repository = "https://github.com/Byron/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project parsing dates the way git does" authors = ["Sebastian Thiel "] edition = "2021" include = ["src/**/*", "LICENSE-*"] -rust-version = "1.65" +rust-version = "1.70" [lib] doctest = false [features] ## Data structures implement `serde::Serialize` and `serde::Deserialize`. -serde= ["dep:serde", "bstr/serde"] +serde = ["dep:serde", "bstr/serde"] [dependencies] -bstr = { version = "1.3.0", default-features = false, features = ["std"]} -serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]} +bstr = { version = "1.3.0", default-features = false, features = ["std"] } +serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } itoa = "1.0.1" -time = { version = "0.3.23", default-features = false, features = ["local-offset", "formatting", "macros", "parsing"] } +jiff = "0.1.1" thiserror = "1.0.32" document-features = { version = "0.2.0", optional = true } [dev-dependencies] -gix-testtools = { path = "../tests/tools"} +gix-testtools = { path = "../tests/tools" } once_cell = "1.12.0" gix-hash = { path = "../gix-hash" } diff --git a/gix-date/src/parse.rs b/gix-date/src/parse.rs index da0691271b2..449eea0ac87 100644 --- a/gix-date/src/parse.rs +++ b/gix-date/src/parse.rs @@ -14,7 +14,7 @@ pub enum Error { pub(crate) mod function { use std::{str::FromStr, time::SystemTime}; - use time::{format_description::well_known, Date, OffsetDateTime}; + use jiff::{civil::Date, fmt::rfc2822, tz::TimeZone, Zoned}; use crate::{ parse::{relative, Error}, @@ -32,27 +32,27 @@ pub(crate) mod function { return Ok(Time::new(42, 1800)); } - Ok(if let Ok(val) = Date::parse(input, SHORT) { - let val = val.with_hms(0, 0, 0).expect("date is in range").assume_utc(); - Time::new(val.unix_timestamp(), val.offset().whole_seconds()) - } else if let Ok(val) = OffsetDateTime::parse(input, &well_known::Rfc2822) { - Time::new(val.unix_timestamp(), val.offset().whole_seconds()) - } else if let Ok(val) = OffsetDateTime::parse(input, ISO8601) { - Time::new(val.unix_timestamp(), val.offset().whole_seconds()) - } else if let Ok(val) = OffsetDateTime::parse(input, ISO8601_STRICT) { - Time::new(val.unix_timestamp(), val.offset().whole_seconds()) - } else if let Ok(val) = OffsetDateTime::parse(input, GITOXIDE) { - Time::new(val.unix_timestamp(), val.offset().whole_seconds()) - } else if let Ok(val) = OffsetDateTime::parse(input, DEFAULT) { - Time::new(val.unix_timestamp(), val.offset().whole_seconds()) + Ok(if let Ok(val) = Date::strptime(SHORT.0, input) { + let val = val.to_zoned(TimeZone::UTC).expect("date is in range"); + Time::new(val.timestamp().as_second(), val.offset().seconds()) + } else if let Ok(val) = rfc2822_relaxed(input) { + Time::new(val.timestamp().as_second(), val.offset().seconds()) + } else if let Ok(val) = strptime_relaxed(ISO8601.0, input) { + Time::new(val.timestamp().as_second(), val.offset().seconds()) + } else if let Ok(val) = strptime_relaxed(ISO8601_STRICT.0, input) { + Time::new(val.timestamp().as_second(), val.offset().seconds()) + } else if let Ok(val) = strptime_relaxed(GITOXIDE.0, input) { + Time::new(val.timestamp().as_second(), val.offset().seconds()) + } else if let Ok(val) = strptime_relaxed(DEFAULT.0, input) { + Time::new(val.timestamp().as_second(), val.offset().seconds()) } else if let Ok(val) = SecondsSinceUnixEpoch::from_str(input) { // Format::Unix Time::new(val, 0) } else if let Some(val) = parse_raw(input) { // Format::Raw val - } else if let Some(time) = relative::parse(input, now).transpose()? { - Time::new(time.unix_timestamp(), time.offset().whole_seconds()) + } else if let Some(val) = relative::parse(input, now).transpose()? { + Time::new(val.timestamp().as_second(), val.offset().seconds()) } else { return Err(Error::InvalidDateString { input: input.into() }); }) @@ -83,52 +83,79 @@ pub(crate) mod function { }; Some(time) } + + /// This is just like `Zoned::strptime`, but it allows parsing datetimes + /// whose weekdays are inconsistent with the date. While the day-of-week + /// still must be parsed, it is otherwise ignored. This seems to be + /// consistent with how `git` behaves. + fn strptime_relaxed(fmt: &str, input: &str) -> Result { + let mut tm = jiff::fmt::strtime::parse(fmt, input)?; + tm.set_weekday(None); + tm.to_zoned() + } + + /// This is just like strptime_relaxed, except for RFC 2822 parsing. + /// Namely, it permits the weekday to be inconsistent with the date. + fn rfc2822_relaxed(input: &str) -> Result { + static P: rfc2822::DateTimeParser = rfc2822::DateTimeParser::new().relaxed_weekday(true); + P.parse_zoned(input) + } } mod relative { use std::{str::FromStr, time::SystemTime}; - use time::{Duration, OffsetDateTime}; + use jiff::{tz::TimeZone, Span, Timestamp, Zoned}; use crate::parse::Error; - fn parse_inner(input: &str) -> Option { + fn parse_inner(input: &str) -> Option> { let mut split = input.split_whitespace(); - let multiplier = i64::from_str(split.next()?).ok()?; + let units = i64::from_str(split.next()?).ok()?; let period = split.next()?; if split.next()? != "ago" { return None; } - duration(period, multiplier) + span(period, units) } - pub(crate) fn parse(input: &str, now: Option) -> Option> { - parse_inner(input).map(|offset| { - let offset = std::time::Duration::from_secs(offset.whole_seconds().try_into()?); + pub(crate) fn parse(input: &str, now: Option) -> Option> { + parse_inner(input).map(|result| { + let span = result?; + // This was an error case in a previous version of this code, where + // it would fail when converting from a negative signed integer + // to an unsigned integer. This preserves that failure case even + // though the code below handles it okay. + if span.is_negative() { + return Err(Error::RelativeTimeConversion); + } now.ok_or(Error::MissingCurrentTime).and_then(|now| { - std::panic::catch_unwind(|| { - now.checked_sub(offset) - .expect("BUG: values can't be large enough to cause underflow") - .into() - }) - .map_err(|_| Error::RelativeTimeConversion) + let ts = Timestamp::try_from(now).map_err(|_| Error::RelativeTimeConversion)?; + // N.B. This matches the behavior of this code when it was + // written with `time`, but we might consider using the system + // time zone here. If we did, then it would implement "1 day + // ago" correctly, even when it crosses DST transitions. Since + // we're in the UTC time zone here, which has no DST, 1 day is + // in practice always 24 hours. ---AG + let zdt = ts.to_zoned(TimeZone::UTC); + zdt.checked_sub(span).map_err(|_| Error::RelativeTimeConversion) }) }) } - fn duration(period: &str, multiplier: i64) -> Option { + fn span(period: &str, units: i64) -> Option> { let period = period.strip_suffix('s').unwrap_or(period); - let seconds: i64 = match period { - "second" => 1, - "minute" => 60, - "hour" => 60 * 60, - "day" => 24 * 60 * 60, - "week" => 7 * 24 * 60 * 60, + let result = match period { + "second" => Span::new().try_seconds(units), + "minute" => Span::new().try_minutes(units), + "hour" => Span::new().try_hours(units), + "day" => Span::new().try_days(units), + "week" => Span::new().try_weeks(units), // TODO months & years? YES // Ignore values you don't know, assume seconds then (so does git) _ => return None, }; - seconds.checked_mul(multiplier).map(Duration::seconds) + Some(result.map_err(|_| Error::RelativeTimeConversion)) } #[cfg(test)] @@ -137,7 +164,7 @@ mod relative { #[test] fn two_weeks_ago() { - assert_eq!(parse_inner("2 weeks ago"), Some(Duration::weeks(2))); + assert_eq!(parse_inner("2 weeks ago").unwrap().unwrap(), Span::new().weeks(2)); } } } diff --git a/gix-date/src/time/format.rs b/gix-date/src/time/format.rs index 639ed58faad..bfe5583ec93 100644 --- a/gix-date/src/time/format.rs +++ b/gix-date/src/time/format.rs @@ -1,82 +1,48 @@ -use time::{format_description::FormatItem, macros::format_description}; - -use crate::{time::Format, Time}; +use crate::{ + time::{CustomFormat, Format}, + Time, +}; /// E.g. `2018-12-24` -pub const SHORT: &[FormatItem<'_>] = format_description!("[year]-[month]-[day]"); +pub const SHORT: CustomFormat = CustomFormat("%Y-%m-%d"); /// E.g. `Thu, 18 Aug 2022 12:45:06 +0800` -pub const RFC2822: &[FormatItem<'_>] = format_description!( - "[weekday repr:short], [day] [month repr:short] [year] [hour]:[minute]:[second] [offset_hour sign:mandatory][offset_minute]" -); +pub const RFC2822: CustomFormat = CustomFormat("%a, %d %b %Y %H:%M:%S %z"); /// E.g. `Thu, 8 Aug 2022 12:45:06 +0800`. This is output by `git log --pretty=%aD`. -pub const GIT_RFC2822: &[FormatItem<'_>] = format_description!( - "[weekday repr:short], \ - [day padding:none] \ - [month repr:short] \ - [year] \ - [hour]:[minute]:[second] \ - [offset_hour sign:mandatory][offset_minute]" -); +pub const GIT_RFC2822: CustomFormat = CustomFormat("%a, %-d %b %Y %H:%M:%S %z"); /// E.g. `2022-08-17 22:04:58 +0200` -pub const ISO8601: &[FormatItem<'_>] = - format_description!("[year]-[month]-[day] [hour]:[minute]:[second] [offset_hour sign:mandatory][offset_minute]"); +pub const ISO8601: CustomFormat = CustomFormat("%Y-%m-%d %H:%M:%S %z"); /// E.g. `2022-08-17T21:43:13+08:00` -pub const ISO8601_STRICT: &[FormatItem<'_>] = - format_description!("[year]-[month]-[day]T[hour]:[minute]:[second][offset_hour sign:mandatory]:[offset_minute]"); +pub const ISO8601_STRICT: CustomFormat = CustomFormat("%Y-%m-%dT%H:%M:%S%:z"); /// E.g. `123456789` -pub const UNIX: Format<'static> = Format::Unix; +pub const UNIX: Format = Format::Unix; /// E.g. `1660874655 +0800` -pub const RAW: Format<'static> = Format::Raw; +pub const RAW: Format = Format::Raw; /// E.g. `Thu Sep 04 2022 10:45:06 -0400`, like the git `DEFAULT`, but with the year and time fields swapped. -pub const GITOXIDE: &[FormatItem<'_>] = format_description!( - "[weekday repr:short] [month repr:short] [day] [year] [hour]:[minute]:[second] [offset_hour sign:mandatory][offset_minute]" -); +pub const GITOXIDE: CustomFormat = CustomFormat("%a %b %d %Y %H:%M:%S %z"); /// E.g. `Thu Sep 4 10:45:06 2022 -0400`. This is output by `git log --pretty=%ad`. -pub const DEFAULT: &[FormatItem<'_>] = format_description!( - "[weekday repr:short] \ - [month repr:short] \ - [day padding:none] \ - [hour]:[minute]:[second] \ - [year] \ - [offset_hour sign:mandatory][offset_minute]" -); - -mod format_impls { - use time::format_description::FormatItem; - - use crate::time::Format; - - impl<'a> From<&'a [FormatItem<'a>]> for Format<'a> { - fn from(f: &'a [FormatItem<'a>]) -> Self { - Format::Custom(f) - } - } -} +pub const DEFAULT: CustomFormat = CustomFormat("%a %b %-d %H:%M:%S %Y %z"); /// Formatting impl Time { /// Format this instance according to the given `format`. /// - /// Use the [`format_description`](https://time-rs.github.io/book/api/format-description.html) macro to create and - /// validate formats at compile time, courtesy of the [`time`] crate. - pub fn format<'a>(&self, format: impl Into>) -> String { + /// Use [`Format::Unix`], [`Format::Raw`] or one of the custom formats + /// defined in the [`format`](mod@crate::time::format) submodule. + pub fn format(&self, format: impl Into) -> String { self.format_inner(format.into()) } - fn format_inner(&self, format: Format<'_>) -> String { + fn format_inner(&self, format: Format) -> String { match format { - Format::Custom(format) => self - .to_time() - .format(&format) - .expect("well-known format into memory never fails"), + Format::Custom(CustomFormat(format)) => self.to_time().strftime(format).to_string(), Format::Unix => self.seconds.to_string(), Format::Raw => self.to_bstring().to_string(), } @@ -84,9 +50,10 @@ impl Time { } impl Time { - fn to_time(self) -> time::OffsetDateTime { - time::OffsetDateTime::from_unix_timestamp(self.seconds) + fn to_time(self) -> jiff::Zoned { + let offset = jiff::tz::Offset::from_seconds(self.offset).expect("valid offset"); + jiff::Timestamp::from_second(self.seconds) .expect("always valid unix time") - .to_offset(time::UtcOffset::from_whole_seconds(self.offset).expect("valid offset")) + .to_zoned(offset.to_time_zone()) } } diff --git a/gix-date/src/time/init.rs b/gix-date/src/time/init.rs index 7df1e7aee45..e7d9adaf62d 100644 --- a/gix-date/src/time/init.rs +++ b/gix-date/src/time/init.rs @@ -1,5 +1,3 @@ -use std::ops::Sub; - use crate::{time::Sign, OffsetInSeconds, SecondsSinceUnixEpoch, Time}; /// Instantiation @@ -15,9 +13,7 @@ impl Time { /// Return the current time without figuring out a timezone offset pub fn now_utc() -> Self { - let seconds = time::OffsetDateTime::now_utc() - .sub(std::time::SystemTime::UNIX_EPOCH) - .whole_seconds(); + let seconds = jiff::Timestamp::now().as_second(); Self { seconds, offset: 0, @@ -27,28 +23,14 @@ impl Time { /// Return the current local time, or `None` if the local time wasn't available. pub fn now_local() -> Option { - let now = time::OffsetDateTime::now_utc(); - let seconds = now.sub(std::time::SystemTime::UNIX_EPOCH).whole_seconds(); - // TODO: make this work without cfg(unsound_local_offset), see - // https://github.com/time-rs/time/issues/293#issuecomment-909158529 - let offset = time::UtcOffset::local_offset_at(now).ok()?.whole_seconds(); - Self { - seconds, - offset, - sign: offset.into(), - } - .into() + Some(Self::now_local_or_utc()) } /// Return the current local time, or the one at UTC if the local time wasn't available. pub fn now_local_or_utc() -> Self { - let now = time::OffsetDateTime::now_utc(); - let seconds = now.sub(std::time::SystemTime::UNIX_EPOCH).whole_seconds(); - // TODO: make this work without cfg(unsound_local_offset), see - // https://github.com/time-rs/time/issues/293#issuecomment-909158529 - let offset = time::UtcOffset::local_offset_at(now) - .map(time::UtcOffset::whole_seconds) - .unwrap_or(0); + let zdt = jiff::Zoned::now(); + let seconds = zdt.timestamp().as_second(); + let offset = zdt.offset().seconds(); Self { seconds, offset, diff --git a/gix-date/src/time/mod.rs b/gix-date/src/time/mod.rs index e2e1ff77afd..b4d20089a0b 100644 --- a/gix-date/src/time/mod.rs +++ b/gix-date/src/time/mod.rs @@ -19,15 +19,26 @@ pub enum Sign { /// Various ways to describe a time format. #[derive(Debug, Clone, Copy)] -pub enum Format<'a> { - /// A custom format typically defined with the [`format_description`][time::format_description] macro. - Custom(&'a [time::format_description::FormatItem<'a>]), +pub enum Format { + /// A custom format limited to what's in the + /// [`format`](mod@crate::time::format) submodule. + Custom(CustomFormat), /// The seconds since 1970, also known as unix epoch, like `1660874655`. Unix, /// The seconds since 1970, followed by the offset, like `1660874655 +0800` Raw, } +/// A custom format for printing and parsing time. +#[derive(Clone, Copy, Debug)] +pub struct CustomFormat(pub(crate) &'static str); + +impl From for Format { + fn from(custom_format: CustomFormat) -> Format { + Format::Custom(custom_format) + } +} + /// #[allow(clippy::empty_docs)] pub mod format; diff --git a/gix-date/tests/time/format.rs b/gix-date/tests/time/format.rs index ddbf070b7b6..03488d954fb 100644 --- a/gix-date/tests/time/format.rs +++ b/gix-date/tests/time/format.rs @@ -2,7 +2,6 @@ use gix_date::{ time::{format, Format, Sign}, Time, }; -use time::macros::format_description; #[test] fn short() { @@ -72,14 +71,6 @@ fn git_default() { ) } -#[test] -fn custom_compile_time() { - assert_eq!( - time().format(format_description!("[year]-[month]-[day] [hour]:[minute]:[second]")), - "1973-11-30 00:03:09", - ); -} - fn time() -> Time { Time { seconds: 123456789, diff --git a/gix-date/tests/time/parse.rs b/gix-date/tests/time/parse.rs index 8b96cb16ed2..f29457336a8 100644 --- a/gix-date/tests/time/parse.rs +++ b/gix-date/tests/time/parse.rs @@ -146,7 +146,7 @@ mod relative { use std::time::SystemTime; use gix_date::time::Sign; - use time::{Duration, OffsetDateTime}; + use jiff::{ToSpan, Zoned}; #[test] fn large_offsets() { @@ -173,12 +173,19 @@ mod relative { let two_weeks_ago = gix_date::parse("2 weeks ago", Some(now)).unwrap(); assert_eq!(Sign::Plus, two_weeks_ago.sign); assert_eq!(0, two_weeks_ago.offset); - let expected = OffsetDateTime::from(now).saturating_sub(Duration::weeks(2)); - // account for the loss of precision when creating `Time` with seconds - let expected = expected.replace_nanosecond(0).unwrap(); + let expected = Zoned::try_from(now) + .unwrap() + // account for the loss of precision when creating `Time` with seconds + .round( + jiff::ZonedRound::new() + .smallest(jiff::Unit::Second) + .mode(jiff::RoundMode::Trunc), + ) + .unwrap() + .saturating_sub(2.weeks()); assert_eq!( - OffsetDateTime::from_unix_timestamp(two_weeks_ago.seconds).unwrap(), - expected, + jiff::Timestamp::from_second(two_weeks_ago.seconds).unwrap(), + expected.timestamp(), "relative times differ" ); } diff --git a/gix-mailmap/Cargo.toml b/gix-mailmap/Cargo.toml index 06942fe7dee..89be66303e6 100644 --- a/gix-mailmap/Cargo.toml +++ b/gix-mailmap/Cargo.toml @@ -14,19 +14,19 @@ doctest = false [features] ## Data structures implement `serde::Serialize` and `serde::Deserialize`. -serde= ["dep:serde", "bstr/serde", "gix-actor/serde"] +serde = ["dep:serde", "bstr/serde", "gix-actor/serde"] [dependencies] gix-actor = { version = "^0.31.5", path = "../gix-actor" } -gix-date = { version = "^0.8.7", path = "../gix-date" } -bstr = { version = "1.3.0", default-features = false, features = ["std", "unicode"]} +gix-date = { version = "^0.9.0", path = "../gix-date" } +bstr = { version = "1.3.0", default-features = false, features = ["std", "unicode"] } thiserror = "1.0.38" -serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]} +serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } document-features = { version = "0.2.0", optional = true } [dev-dependencies] -gix-testtools = { path = "../tests/tools"} +gix-testtools = { path = "../tests/tools" } [package.metadata.docs.rs] all-features = true diff --git a/gix-negotiate/Cargo.toml b/gix-negotiate/Cargo.toml index a5970cfb071..ccbb38e0ded 100644 --- a/gix-negotiate/Cargo.toml +++ b/gix-negotiate/Cargo.toml @@ -16,7 +16,7 @@ test = false [dependencies] gix-hash = { version = "^0.14.2", path = "../gix-hash" } gix-object = { version = "^0.42.3", path = "../gix-object" } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } gix-commitgraph = { version = "^0.24.3", path = "../gix-commitgraph" } gix-revwalk = { version = "^0.13.2", path = "../gix-revwalk" } thiserror = "1.0.40" diff --git a/gix-object/Cargo.toml b/gix-object/Cargo.toml index 838e418b35f..c4d86357175 100644 --- a/gix-object/Cargo.toml +++ b/gix-object/Cargo.toml @@ -41,7 +41,7 @@ gix-features = { version = "^0.38.2", path = "../gix-features", features = [ gix-hash = { version = "^0.14.2", path = "../gix-hash" } gix-validate = { version = "^0.8.5", path = "../gix-validate" } gix-actor = { version = "^0.31.4", path = "../gix-actor" } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } gix-utils = { version = "^0.1.11", path = "../gix-utils" } itoa = "1.0.1" diff --git a/gix-odb/Cargo.toml b/gix-odb/Cargo.toml index 3a8deee8057..bc7c761636b 100644 --- a/gix-odb/Cargo.toml +++ b/gix-odb/Cargo.toml @@ -20,7 +20,7 @@ serde = ["dep:serde", "gix-hash/serde", "gix-object/serde", "gix-pack/serde"] [dependencies] gix-features = { version = "^0.38.2", path = "../gix-features", features = ["rustsha1", "walkdir", "zlib", "crc32"] } gix-hash = { version = "^0.14.2", path = "../gix-hash" } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } gix-path = { version = "^0.10.9", path = "../gix-path" } gix-quote = { version = "^0.4.12", path = "../gix-quote" } gix-object = { version = "^0.42.3", path = "../gix-object" } diff --git a/gix-protocol/Cargo.toml b/gix-protocol/Cargo.toml index c0cbffe3c22..0db90afb7fe 100644 --- a/gix-protocol/Cargo.toml +++ b/gix-protocol/Cargo.toml @@ -50,7 +50,7 @@ gix-features = { version = "^0.38.2", path = "../gix-features", features = [ ] } gix-transport = { version = "^0.42.2", path = "../gix-transport" } gix-hash = { version = "^0.14.2", path = "../gix-hash" } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } gix-credentials = { version = "^0.24.4", path = "../gix-credentials" } gix-utils = { version = "^0.1.12", path = "../gix-utils" } diff --git a/gix-ref/Cargo.toml b/gix-ref/Cargo.toml index e66171827d6..494fd5efc9f 100644 --- a/gix-ref/Cargo.toml +++ b/gix-ref/Cargo.toml @@ -19,7 +19,7 @@ test = true serde = ["dep:serde", "gix-hash/serde", "gix-actor/serde", "gix-object/serde"] [dependencies] -gix-features = { version = "^0.38.2", path = "../gix-features", features = ["walkdir"]} +gix-features = { version = "^0.38.2", path = "../gix-features", features = ["walkdir"] } gix-fs = { version = "^0.11.2", path = "../gix-fs" } gix-path = { version = "^0.10.9", path = "../gix-path" } gix-hash = { version = "^0.14.2", path = "../gix-hash" } @@ -32,7 +32,7 @@ gix-tempfile = { version = "^14.0.0", default-features = false, path = "../gix-t thiserror = "1.0.34" winnow = { version = "0.6.0", features = ["simd"] } -serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]} +serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } # packed refs memmap2 = "0.9.0" @@ -41,7 +41,7 @@ document-features = { version = "0.2.1", optional = true } [dev-dependencies] gix-testtools = { path = "../tests/tools" } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } [package.metadata.docs.rs] features = ["document-features", "serde"] diff --git a/gix-revision/Cargo.toml b/gix-revision/Cargo.toml index b6a163894d3..f9dd70cf660 100644 --- a/gix-revision/Cargo.toml +++ b/gix-revision/Cargo.toml @@ -19,17 +19,17 @@ default = ["describe"] describe = ["dep:gix-trace", "dep:gix-hashtable"] ## Data structures implement `serde::Serialize` and `serde::Deserialize`. -serde = [ "dep:serde", "gix-hash/serde", "gix-object/serde" ] +serde = ["dep:serde", "gix-hash/serde", "gix-object/serde"] [dependencies] gix-hash = { version = "^0.14.2", path = "../gix-hash" } gix-object = { version = "^0.42.3", path = "../gix-object" } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } gix-hashtable = { version = "^0.5.2", path = "../gix-hashtable", optional = true } gix-revwalk = { version = "^0.13.2", path = "../gix-revwalk" } gix-trace = { version = "^0.1.8", path = "../gix-trace", optional = true } -bstr = { version = "1.3.0", default-features = false, features = ["std"]} +bstr = { version = "1.3.0", default-features = false, features = ["std"] } thiserror = "1.0.26" serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } document-features = { version = "0.2.1", optional = true } diff --git a/gix-revwalk/Cargo.toml b/gix-revwalk/Cargo.toml index a7274283247..8bcf02250c9 100644 --- a/gix-revwalk/Cargo.toml +++ b/gix-revwalk/Cargo.toml @@ -15,7 +15,7 @@ doctest = false [dependencies] gix-hash = { version = "^0.14.2", path = "../gix-hash" } gix-object = { version = "^0.42.3", path = "../gix-object" } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } gix-hashtable = { version = "^0.5.2", path = "../gix-hashtable" } gix-commitgraph = { version = "^0.24.3", path = "../gix-commitgraph" } diff --git a/gix-traverse/Cargo.toml b/gix-traverse/Cargo.toml index 4c8778be3f4..717fd885a7f 100644 --- a/gix-traverse/Cargo.toml +++ b/gix-traverse/Cargo.toml @@ -16,7 +16,7 @@ doctest = false [dependencies] gix-hash = { version = "^0.14.2", path = "../gix-hash" } gix-object = { version = "^0.42.3", path = "../gix-object" } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } gix-hashtable = { version = "^0.5.2", path = "../gix-hashtable" } gix-revwalk = { version = "^0.13.2", path = "../gix-revwalk" } gix-commitgraph = { version = "^0.24.3", path = "../gix-commitgraph" } diff --git a/gix/Cargo.toml b/gix/Cargo.toml index eb3ce133437..2ee93d7951d 100644 --- a/gix/Cargo.toml +++ b/gix/Cargo.toml @@ -306,7 +306,7 @@ gix-tempfile = { version = "^14.0.0", path = "../gix-tempfile", default-features gix-lock = { version = "^14.0.0", path = "../gix-lock" } gix-validate = { version = "^0.8.5", path = "../gix-validate" } gix-sec = { version = "^0.10.7", path = "../gix-sec" } -gix-date = { version = "^0.8.7", path = "../gix-date" } +gix-date = { version = "^0.9.0", path = "../gix-date" } gix-refspec = { version = "^0.23.1", path = "../gix-refspec" } gix-filter = { version = "^0.11.3", path = "../gix-filter", optional = true } gix-dir = { version = "^0.6.0", path = "../gix-dir", optional = true } diff --git a/src/plumbing/main.rs b/src/plumbing/main.rs index c1a41d160c6..02e3b974a15 100644 --- a/src/plumbing/main.rs +++ b/src/plumbing/main.rs @@ -54,11 +54,6 @@ pub mod async_util { pub fn main() -> Result<()> { let args: Args = Args::parse_from(gix::env::args_os()); - #[allow(unsafe_code)] - unsafe { - // SAFETY: we don't manipulate the environment from any thread - time::util::local_offset::set_soundness(time::util::local_offset::Soundness::Unsound); - } let thread_limit = args.threads; let verbose = args.verbose; let format = args.format; diff --git a/src/porcelain/main.rs b/src/porcelain/main.rs index 95645d843d5..3bd15362b07 100644 --- a/src/porcelain/main.rs +++ b/src/porcelain/main.rs @@ -12,11 +12,6 @@ use crate::porcelain::options::{Args, Subcommands}; pub fn main() -> Result<()> { let args: Args = Args::parse_from(gix::env::args_os()); - #[allow(unsafe_code)] - unsafe { - // SAFETY: we don't manipulate the environment from any thread - time::util::local_offset::set_soundness(time::util::local_offset::Soundness::Unsound); - } let should_interrupt = Arc::new(AtomicBool::new(false)); #[allow(unsafe_code)] unsafe { diff --git a/tests/snapshots/panic-behaviour/expected-failure b/tests/snapshots/panic-behaviour/expected-failure index 4091d0774d2..9c6bf892c21 100644 --- a/tests/snapshots/panic-behaviour/expected-failure +++ b/tests/snapshots/panic-behaviour/expected-failure @@ -1,3 +1,3 @@ -thread 'main' panicked at src/porcelain/main.rs:45:42: +thread 'main' panicked at src/porcelain/main.rs:40:42: something went very wrong note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace \ No newline at end of file diff --git a/tests/snapshots/panic-behaviour/expected-failure-in-thread b/tests/snapshots/panic-behaviour/expected-failure-in-thread index 3a8b479c1b4..8ef1ef6a67b 100644 --- a/tests/snapshots/panic-behaviour/expected-failure-in-thread +++ b/tests/snapshots/panic-behaviour/expected-failure-in-thread @@ -1,4 +1,4 @@ -thread 'main' panicked at src/porcelain/main.rs:45:42: +thread 'main' panicked at src/porcelain/main.rs:40:42: something went very wrong note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace  \ No newline at end of file diff --git a/tests/snapshots/panic-behaviour/expected-failure-in-thread-with-progress b/tests/snapshots/panic-behaviour/expected-failure-in-thread-with-progress index 5e21591cab8..d1035857ddf 100644 --- a/tests/snapshots/panic-behaviour/expected-failure-in-thread-with-progress +++ b/tests/snapshots/panic-behaviour/expected-failure-in-thread-with-progress @@ -1,4 +1,4 @@ -[?1049h[?25lthread '' panicked at src/porcelain/main.rs:45:42: +[?1049h[?25lthread '' panicked at src/porcelain/main.rs:40:42: something went very wrong note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace [?25h[?1049l \ No newline at end of file