From c23a457e72abe608715ac76f076f47dc42af07a5 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 30 May 2024 20:31:44 +0200 Subject: Merging upstream version 1.74.1+dfsg1. Signed-off-by: Daniel Baumann --- vendor/gix-protocol/.cargo-checksum.json | 2 +- vendor/gix-protocol/CHANGELOG.md | 269 ++++++++++++++++++++- vendor/gix-protocol/Cargo.toml | 30 +-- vendor/gix-protocol/src/command/mod.rs | 4 +- .../src/fetch/arguments/blocking_io.rs | 4 +- vendor/gix-protocol/src/fetch/arguments/mod.rs | 38 +-- vendor/gix-protocol/src/fetch/delegate.rs | 16 +- vendor/gix-protocol/src/fetch/tests.rs | 5 + vendor/gix-protocol/src/fetch_fn.rs | 8 +- vendor/gix-protocol/src/handshake/function.rs | 8 +- vendor/gix-protocol/src/handshake/mod.rs | 8 +- vendor/gix-protocol/src/handshake/refs/mod.rs | 15 +- vendor/gix-protocol/src/handshake/refs/shared.rs | 99 +++++--- vendor/gix-protocol/src/handshake/refs/tests.rs | 11 +- vendor/gix-protocol/src/ls_refs.rs | 2 +- vendor/gix-protocol/src/remote_progress.rs | 57 ++--- 16 files changed, 458 insertions(+), 118 deletions(-) (limited to 'vendor/gix-protocol') diff --git a/vendor/gix-protocol/.cargo-checksum.json b/vendor/gix-protocol/.cargo-checksum.json index bbbd8dc97..c86c48660 100644 --- a/vendor/gix-protocol/.cargo-checksum.json +++ b/vendor/gix-protocol/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"e1b8982036c7fc04fce72d2a6657463d075be974d129442547ddb0f4ce7032bb","Cargo.toml":"e1eb4bac30258a140f1093eb1f7a9eed667f9e701608c3257a8e4fe1a216f570","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/command/mod.rs":"692abd0c6bef256a68047740fdda77cf27719e76cda879fb43b4b709c3494b14","src/command/tests.rs":"42f5c98a4a8cf1f58c4c97c0f6c61ecf5e6f8380032a8452e8dfd8f093e7a975","src/fetch/arguments/async_io.rs":"5cc55867527012cd27fec718d06d468c075f3f5e9569e389b5d8fbcd9814ca5c","src/fetch/arguments/blocking_io.rs":"913e1071bc589746fd17e42553b6e93bdc7187d36f87d579e1851e44569f77e4","src/fetch/arguments/mod.rs":"5deff5aa39249ed140d30c34c65c77758b122f29341fe451ae722123864aebf3","src/fetch/delegate.rs":"4597719ff3597a934b98b318ab2f8079985aae7ffd04c426c089c7bb6c921e52","src/fetch/error.rs":"63d305d921765056e179a5c19cfe1075319eaaa661877f4cefdc4dc247f3bb44","src/fetch/handshake.rs":"374a0b8394a362cd7fab30aaed2a9fa5a1f047c590da4ee7cfd9c432adc4755a","src/fetch/mod.rs":"94db03392ab0e62d5c33fc02dc6889b8d65c304637d7a9d9b27104f81424c460","src/fetch/response/async_io.rs":"3164a586423029c80bb40e6c9932df068a71b2cdbc0d567d1d463599771b6418","src/fetch/response/blocking_io.rs":"a74308b8f9221ce44898ed4f1d5d6b86ef9cfac80ca1529a2001414e848ca0f2","src/fetch/response/mod.rs":"7fcaac06b56309d0e2eb99be2cebbb755599b95e14c6b8de46c1e8a5a38b1e91","src/fetch/tests.rs":"5c74672d00f254c965b1bcbe7167b8cf024f72e86a9d6c14d57f1ceea394ad6a","src/fetch_fn.rs":"9baa02339dc9d38109a566665cb67d95db36c52a1ef029a0807846f459a0928d","src/handshake/function.rs":"d53c48b8ccd45c219f149b572b4cc4c9241a7c0a858694a4d0912fdbe67d591b","src/handshake/mod.rs":"49a018f60620ccb7e198bebdef8026996c52aa9374fe5dfd6306605bf6e0a13a","src/handshake/refs/async_io.rs":"1f8143928517f5dcdbeb01b4f98774cf17afe6e37db75558752599ba7b88fd20","src/handshake/refs/blocking_io.rs":"9475538f6b90e46174438a08f89b0cc5ba938644ae409d5c32a5d9fd3e023862","src/handshake/refs/mod.rs":"2bd46c247a6b61095942992a7f036a6c0ba235aa11bab6bece92995dc31f48f6","src/handshake/refs/shared.rs":"ab92275101ac597f06d9e09c1192566a707ad730d330ba385e19bd5c499b15ae","src/handshake/refs/tests.rs":"9e7707faafb08d3e2cfb83efe7ee1bee52504ec9ee633eb168732bc18d2936ce","src/lib.rs":"37d70654d2b4bca30f53681b62888bd0b69cc143ee3e5239089842065f1c0b52","src/ls_refs.rs":"8e9003cd2619c64cadf5a2f7b94eb2bb0374898279a1af52b3eeab8167cb678d","src/remote_progress.rs":"cbcb30386c67c86b42f10af863edb72fdc920367aa320bcaf2c54190bd464f43","src/util.rs":"d83861fd81167f09ba0e93278703f827b201299e1991382f6274b6ba8abce6cd"},"package":"92a17058b45c461f0847528c5fb6ee6e76115e026979eb2d2202f98ee94f6c24"} \ No newline at end of file +{"files":{"CHANGELOG.md":"8e4d151deb3e9305a3544c28872eaa680fa34c816f059f093dcf99c6f316dbab","Cargo.toml":"9b452b1e1940c2adf3d83ae5e6b0ff4868905621e7424751cc3ba235f6b00635","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/command/mod.rs":"cfd960eabb45461502c66a1eb520b504e582d9fbdc965ab8b32cc41e014d73b8","src/command/tests.rs":"42f5c98a4a8cf1f58c4c97c0f6c61ecf5e6f8380032a8452e8dfd8f093e7a975","src/fetch/arguments/async_io.rs":"5cc55867527012cd27fec718d06d468c075f3f5e9569e389b5d8fbcd9814ca5c","src/fetch/arguments/blocking_io.rs":"3536611fcfe4958a953314875ae330572a1a5e3160e5a979527ce58bf4465f37","src/fetch/arguments/mod.rs":"7763c6f9352b8bffd28b750da6ea0650215603509aa725b63bda6c896f497c34","src/fetch/delegate.rs":"4ef365ebc3db6beb77fc78d2a877d98d50577afd67d9a357e5365c99f4c324d6","src/fetch/error.rs":"63d305d921765056e179a5c19cfe1075319eaaa661877f4cefdc4dc247f3bb44","src/fetch/handshake.rs":"374a0b8394a362cd7fab30aaed2a9fa5a1f047c590da4ee7cfd9c432adc4755a","src/fetch/mod.rs":"94db03392ab0e62d5c33fc02dc6889b8d65c304637d7a9d9b27104f81424c460","src/fetch/response/async_io.rs":"3164a586423029c80bb40e6c9932df068a71b2cdbc0d567d1d463599771b6418","src/fetch/response/blocking_io.rs":"a74308b8f9221ce44898ed4f1d5d6b86ef9cfac80ca1529a2001414e848ca0f2","src/fetch/response/mod.rs":"7fcaac06b56309d0e2eb99be2cebbb755599b95e14c6b8de46c1e8a5a38b1e91","src/fetch/tests.rs":"12d20117c4744afdcc1ae18f80b9d1ace624e2b33ff704229b3d755913ff3970","src/fetch_fn.rs":"d8a2879b81604eef717cfe32853134280762736c0da672bb34aa8b84748b7084","src/handshake/function.rs":"ce0675aa16493404a8dd2d47ad7200faa96e3e10bd6ade0cb24641b99fc03914","src/handshake/mod.rs":"4f77d9898ef461bdad78adb889fe1abb6a8eff6c720931a7d82f881b01e5eb62","src/handshake/refs/async_io.rs":"1f8143928517f5dcdbeb01b4f98774cf17afe6e37db75558752599ba7b88fd20","src/handshake/refs/blocking_io.rs":"9475538f6b90e46174438a08f89b0cc5ba938644ae409d5c32a5d9fd3e023862","src/handshake/refs/mod.rs":"eeeabd63d239d70a4454d50c70e691f945c774be4bd2d1a9b057666232a96132","src/handshake/refs/shared.rs":"cccf9f168e88de9e04430fada9d699aa8847305758fe04fca8b8503d52b86706","src/handshake/refs/tests.rs":"834c9f783a35b75f5f93727312c9436db1cc91627758f71ac293049a71de5cd9","src/lib.rs":"37d70654d2b4bca30f53681b62888bd0b69cc143ee3e5239089842065f1c0b52","src/ls_refs.rs":"7ce35ad174d57f939f79b2a3ba5b7e8cf040bac2fb4b1a9044a4350f458623a4","src/remote_progress.rs":"2cdbeca25dc66612f8d39eb2be27de6da1b984caaee32390375005f72abe7687","src/util.rs":"d83861fd81167f09ba0e93278703f827b201299e1991382f6274b6ba8abce6cd"},"package":"cc7b700dc20cc9be8a5130a1fd7e10c34117ffa7068431c8c24d963f0a2e0c9b"} \ No newline at end of file diff --git a/vendor/gix-protocol/CHANGELOG.md b/vendor/gix-protocol/CHANGELOG.md index e2309d1b8..1aea1ffb8 100644 --- a/vendor/gix-protocol/CHANGELOG.md +++ b/vendor/gix-protocol/CHANGELOG.md @@ -5,6 +5,272 @@ 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). +## 0.40.0 (2023-09-24) + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 1 commit contributed to the release. + - 15 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec)) +
+ +## 0.39.0 (2023-09-08) + + + +### Chore (BREAKING) + + - update to the latest `prodash` + It makes proper usage of `Progress` types easier and allows them to be used + as `dyn` traits as well. + +### New Features (BREAKING) + + - use `prodash::Count` to indicate that nothing more than counting is performed, in place of `prodash::Progress` + +### Bug Fixes (BREAKING) + + - use `dyn` trait where possible. + This reduces compile time due to avoiding duplication. + +### Commit Statistics + + + + - 19 commits contributed to the release over the course of 17 calendar days. + - 17 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** + - Release 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 ([`1ff3064`](https://github.com/Byron/gitoxide/commit/1ff30641b8724efd6699d8bef5c71d28454e98b9)) + - 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)) + - Use `prodash::Count` to indicate that nothing more than counting is performed, in place of `prodash::Progress` ([`24dd870`](https://github.com/Byron/gitoxide/commit/24dd870919ba444aa8099c63a78ea120d47ec28e)) + - Merge pull request #1009 from epage/proto ([`16cac47`](https://github.com/Byron/gitoxide/commit/16cac4724347401d7dde2c8567b2f26420bf7216)) + - Don't bother with error tracking that is ignored ([`444f970`](https://github.com/Byron/gitoxide/commit/444f970e70e8d24c6593293fec70b3a6f7f2d5bf)) + - Upgrade gix-protocol to winnow 0.5 ([`237657e`](https://github.com/Byron/gitoxide/commit/237657ee59a093a65b3157e637f28282290212bb)) + - Prep for winnow 0.5 upgrade for gix-protocol ([`8c80dba`](https://github.com/Byron/gitoxide/commit/8c80dba1836394b4d1995580f60e1443a386bdac)) + - Resolve winnow deprecations in gix-protocol ([`b213889`](https://github.com/Byron/gitoxide/commit/b213889db2697d27d70b110c863bdfdf71bc0f4f)) + - Upgrade gix-protocol to winnow 0.4 ([`659ebe9`](https://github.com/Byron/gitoxide/commit/659ebe9cf3569f40c0d81eb02b802516c428287a)) + - Prep for winnow 0.4 upgrade for gix-protocol ([`8609aec`](https://github.com/Byron/gitoxide/commit/8609aec804a7191b9c5a074595ef16a08e7d0be4)) + - Resolve winnow deprecations in gix-protocol ([`b46fe9c`](https://github.com/Byron/gitoxide/commit/b46fe9c15f6af4351c6ea7a443f0c79bd0c77969)) + - Migrate gix-protocol to winnow ([`0e8edef`](https://github.com/Byron/gitoxide/commit/0e8edef9882eea72a70b8782d8cf6edc8185b097)) + - Update to the latest `prodash` ([`ed327f6`](https://github.com/Byron/gitoxide/commit/ed327f6163f54756e58c20f86a563a97efb256ca)) + - Merge branch 'adjustments-for-cargo' ([`b7560a2`](https://github.com/Byron/gitoxide/commit/b7560a2445b62f888bf5aa2ba4c5a47ae037cb23)) + - Release gix-date v0.7.4, gix-index v0.23.0, safety bump 5 crates ([`3be2b1c`](https://github.com/Byron/gitoxide/commit/3be2b1ccfe30eeae45711c64b88efc522a2b51b7)) + - Merge branch 'gix-submodule' ([`363ee77`](https://github.com/Byron/gitoxide/commit/363ee77400805f473c9ad66eadad9214e7ab66f4)) +
+ +## 0.38.0 (2023-08-22) + + + +### Chore + + - don't call crate 'WIP' in manifest anymore. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 15 calendar days. + - 19 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Release 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 ([`6c62e74`](https://github.com/Byron/gitoxide/commit/6c62e748240ac0980fc23fdf30f8477dea8b9bc3)) + - 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-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)) +
+ +## 0.37.0 (2023-08-02) + +### New Features + + - add `fetch::Arguments::add_feature()` for unconditional additions of arguments that are supposed to be features. + This differentiation is important to support V1 and V2 correctly, which have a different notion of features with V1 + special-casing them, and V2 just sees everything as arguments. + +### Bug Fixes (BREAKING) + + - `handshake::Ref::Symbolic` now has a `tag` field. + This allows symbolic refs to be parsed which are in fact pointing + to an annotated tag as in-between object. + +### Commit Statistics + + + + - 6 commits contributed to the release over the course of 1 calendar day. + - 10 days passed between releases. + - 2 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Release gix-actor v0.24.2, gix-object v0.33.2, gix-ref v0.33.3, gix-config v0.26.2, gix-prompt v0.5.5, gix-odb v0.50.2, gix-transport v0.34.2, gix-protocol v0.37.0, gix-worktree v0.23.1, gix v0.51.0, safety bump 3 crates ([`231ac1c`](https://github.com/Byron/gitoxide/commit/231ac1c6ad5ca9a84dbeb0dee14bfbf2fef1ae1e)) + - Prepare additional changelogs ([`db63815`](https://github.com/Byron/gitoxide/commit/db6381522395a0de047118e81df5cd3cbeb862b9)) + - Prepare changelogs ([`e4d2890`](https://github.com/Byron/gitoxide/commit/e4d2890a85bf60e9cdb4016dddfab3c4dccbe75e)) + - Merge branch 'fixes-and-improvements' ([`f8b1f55`](https://github.com/Byron/gitoxide/commit/f8b1f553371f25b1bea6bce7cbb2ff1f01194856)) + - Add `fetch::Arguments::add_feature()` for unconditional additions of arguments that are supposed to be features. ([`d1f9c63`](https://github.com/Byron/gitoxide/commit/d1f9c63f8a79dcb00766d94edda80ed9add724ea)) + - `handshake::Ref::Symbolic` now has a `tag` field. ([`0de7117`](https://github.com/Byron/gitoxide/commit/0de7117492fb64c4f2b4f5ee7482813d57b57d40)) +
+ +## 0.36.1 (2023-07-22) + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 1 calendar day. + - 3 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Release gix-diff v0.33.1, gix-discover v0.22.1, gix-ignore v0.5.1, gix-bitmap v0.2.6, gix-index v0.21.1, gix-mailmap v0.16.1, gix-negotiate v0.5.1, gix-pack v0.40.1, gix-odb v0.50.1, gix-packetline v0.16.4, gix-transport v0.34.1, gix-protocol v0.36.1, gix-revision v0.18.1, gix-refspec v0.14.1, gix-worktree v0.23.0, gix v0.50.0 ([`0062971`](https://github.com/Byron/gitoxide/commit/00629710dffeb10fda340665530353703cf5d129)) + - Release gix-tempfile v7.0.2, gix-utils v0.1.5, gix-lock v7.0.2, gix-ref v0.33.1, gix-sec v0.8.4, gix-prompt v0.5.4, gix-url v0.21.1, gix-credentials v0.17.1, gix-diff v0.33.1, gix-discover v0.22.1, gix-ignore v0.5.1, gix-bitmap v0.2.6, gix-index v0.21.1, gix-mailmap v0.16.1, gix-negotiate v0.5.1, gix-pack v0.40.1, gix-odb v0.50.1, gix-packetline v0.16.4, gix-transport v0.34.1, gix-protocol v0.36.1, gix-revision v0.18.1, gix-refspec v0.14.1, gix-worktree v0.23.0, gix v0.50.0 ([`107a64e`](https://github.com/Byron/gitoxide/commit/107a64e734580ad9e2c4142db96394529d8072df)) + - Release gix-features v0.32.1, gix-actor v0.24.1, gix-validate v0.7.7, gix-object v0.33.1, gix-path v0.8.4, gix-glob v0.10.1, gix-quote v0.4.6, gix-attributes v0.16.0, gix-command v0.2.8, gix-packetline-blocking v0.16.4, gix-filter v0.2.0, gix-fs v0.4.1, gix-chunk v0.4.4, gix-commitgraph v0.18.1, gix-hashtable v0.2.4, gix-revwalk v0.4.1, gix-traverse v0.30.1, gix-worktree-stream v0.2.0, gix-archive v0.2.0, gix-config-value v0.12.5, gix-tempfile v7.0.1, gix-utils v0.1.5, gix-lock v7.0.2, gix-ref v0.33.1, gix-sec v0.8.4, gix-prompt v0.5.4, gix-url v0.21.1, gix-credentials v0.17.1, gix-diff v0.33.1, gix-discover v0.22.1, gix-ignore v0.5.1, gix-bitmap v0.2.6, gix-index v0.21.1, gix-mailmap v0.16.1, gix-negotiate v0.5.1, gix-pack v0.40.1, gix-odb v0.50.1, gix-packetline v0.16.4, gix-transport v0.34.1, gix-protocol v0.36.1, gix-revision v0.18.1, gix-refspec v0.14.1, gix-worktree v0.23.0, gix v0.50.0, safety bump 5 crates ([`16295b5`](https://github.com/Byron/gitoxide/commit/16295b58e2581d2e8b8b762816f52baabe871c75)) + - Prepare more changelogs ([`c4cc5f2`](https://github.com/Byron/gitoxide/commit/c4cc5f261d29f712a101033a18293a97a9d4ae85)) + - 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)) +
+ +## 0.36.0 (2023-07-19) + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 4 commits contributed to the release. + - 19 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Release gix-filter v0.1.0, gix-ignore v0.5.0, gix-revwalk v0.4.0, gix-traverse v0.30.0, 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-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.0 ([`4aca8c2`](https://github.com/Byron/gitoxide/commit/4aca8c2ae2ec588fb65ec4faa0c07c19d219569f)) + - Release gix-features v0.32.0, gix-actor v0.24.0, gix-glob v0.10.0, gix-attributes v0.15.0, gix-commitgraph v0.18.0, gix-config-value v0.12.4, gix-fs v0.4.0, gix-object v0.33.0, gix-ref v0.33.0, gix-config v0.26.0, gix-command v0.2.7, gix-url v0.21.0, gix-credentials v0.17.0, gix-diff v0.33.0, gix-discover v0.22.0, gix-filter v0.1.0, gix-ignore v0.5.0, gix-revwalk v0.4.0, gix-traverse v0.30.0, 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-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.0 ([`68ae3ff`](https://github.com/Byron/gitoxide/commit/68ae3ff9d642ec56f088a6a682a073dc16f4e8ca)) + - Adjust package versions (by cargo-smart-release) ([`c70e54f`](https://github.com/Byron/gitoxide/commit/c70e54f163c312c87753a506eeaad462e8579bfb)) + - Prepare changelogs prior to release ([`e4dded0`](https://github.com/Byron/gitoxide/commit/e4dded05138562f9737a7dcfb60570c55769486d)) +
+ +## 0.35.0 (2023-06-29) + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 2 commits contributed to the release. + - 6 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
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)) +
+ +## 0.34.0 (2023-06-22) + + + +### Chore + + - Add `clippy::redundant-closure-for-method-calls` lint + +### Changed (BREAKING) + + - use `SecondsSinceUnixEpoch` type where needed. + Previously we used `usize` which isn't correct on 32 bit systems. + +### Commit Statistics + + + + - 8 commits contributed to the release over the course of 11 calendar days. + - 12 days passed between releases. + - 2 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
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)) + - 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)) + - Use `SecondsSinceUnixEpoch` type where needed. ([`9f8fa22`](https://github.com/Byron/gitoxide/commit/9f8fa221b0e15923de5fc015cf6abb3dd578167e)) +
+ ## 0.33.2 (2023-06-10) ### New Features @@ -18,7 +284,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 2 commits contributed to the release. + - 3 commits contributed to the release. - 2 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -30,6 +296,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-attributes v0.13.1, gix-diff v0.30.1, gix-revwalk v0.1.0, gix-traverse v0.27.0, gix-index v0.18.0, gix-revision v0.15.2, gix-negotiate v0.2.1, gix-pack v0.37.0, gix-odb v0.47.0, gix-protocol v0.33.2, gix-worktree v0.19.0, gix v0.46.0, safety bump 7 crates ([`2560a2c`](https://github.com/Byron/gitoxide/commit/2560a2cc3e1d8c60cd812e15696fa4761d036e19)) - Prepare changelogs prior to release ([`298f3d7`](https://github.com/Byron/gitoxide/commit/298f3d7359c5b183314d8c584e45dcdd559d88b3)) - Support `capabilities^{}` syntax to announce caps in empty repos under V1 ([`c8e8b9f`](https://github.com/Byron/gitoxide/commit/c8e8b9fc55486215bda4c380d3c84a6c6ae5f602))
diff --git a/vendor/gix-protocol/Cargo.toml b/vendor/gix-protocol/Cargo.toml index a0c498aba..038e3192d 100644 --- a/vendor/gix-protocol/Cargo.toml +++ b/vendor/gix-protocol/Cargo.toml @@ -11,9 +11,9 @@ [package] edition = "2021" -rust-version = "1.64" +rust-version = "1.65" name = "gix-protocol" -version = "0.33.2" +version = "0.40.0" authors = ["Sebastian Thiel "] include = [ "src/**/*", @@ -21,8 +21,8 @@ include = [ "CHANGELOG.md", "!**/tests/**/*", ] -description = "A WIP crate of the gitoxide project for implementing git protocols" -license = "MIT/Apache-2.0" +description = "A crate of the gitoxide project for implementing git protocols" +license = "MIT OR Apache-2.0" repository = "https://github.com/Byron/gitoxide" [package.metadata.docs.rs] @@ -77,26 +77,24 @@ version = "1.12.0" optional = true [dependencies.gix-credentials] -version = "^0.15.0" +version = "^0.20.0" + +[dependencies.gix-date] +version = "^0.8.0" [dependencies.gix-features] -version = "^0.30.0" +version = "^0.35.0" features = ["progress"] [dependencies.gix-hash] -version = "^0.11.2" +version = "^0.13.0" [dependencies.gix-transport] -version = "^0.32.0" +version = "^0.37.0" [dependencies.maybe-async] version = "0.2.6" -[dependencies.nom] -version = "7" -features = ["std"] -default-features = false - [dependencies.serde] version = "1.0.114" features = ["derive"] @@ -106,12 +104,16 @@ default-features = false [dependencies.thiserror] version = "1.0.32" +[dependencies.winnow] +version = "0.5.14" +features = ["simd"] + [dev-dependencies.async-std] version = "1.9.0" features = ["attributes"] [dev-dependencies.gix-packetline] -version = "^0.16.2" +version = "^0.16.6" [features] async-client = [ diff --git a/vendor/gix-protocol/src/command/mod.rs b/vendor/gix-protocol/src/command/mod.rs index 1216ba625..9fcc48e87 100644 --- a/vendor/gix-protocol/src/command/mod.rs +++ b/vendor/gix-protocol/src/command/mod.rs @@ -140,7 +140,7 @@ mod with_io { .iter() .find_map(|c| { if c.name() == Command::Fetch.as_str() { - c.values().map(|v| v.map(|f| f.to_owned()).collect()) + c.values().map(|v| v.map(ToOwned::to_owned).collect()) } else { None } @@ -189,7 +189,7 @@ mod with_io { .iter() .find_map(|c| { if c.name() == self.as_str().as_bytes().as_bstr() { - c.values().map(|v| v.map(|f| f.to_string()).collect::>()) + c.values().map(|v| v.map(ToString::to_string).collect::>()) } else { None } diff --git a/vendor/gix-protocol/src/fetch/arguments/blocking_io.rs b/vendor/gix-protocol/src/fetch/arguments/blocking_io.rs index 571792148..c946d46e1 100644 --- a/vendor/gix-protocol/src/fetch/arguments/blocking_io.rs +++ b/vendor/gix-protocol/src/fetch/arguments/blocking_io.rs @@ -45,9 +45,7 @@ impl Arguments { } transport.invoke( Command::Fetch.as_str(), - self.features - .iter() - .filter_map(|(k, v)| v.as_ref().map(|v| (*k, Some(v.as_ref())))), + self.features.iter().filter(|(_, v)| v.is_some()).cloned(), Some(std::mem::replace(&mut self.args, retained_state).into_iter()), ) } diff --git a/vendor/gix-protocol/src/fetch/arguments/mod.rs b/vendor/gix-protocol/src/fetch/arguments/mod.rs index 1adf993bb..50145bb15 100644 --- a/vendor/gix-protocol/src/fetch/arguments/mod.rs +++ b/vendor/gix-protocol/src/fetch/arguments/mod.rs @@ -129,11 +129,11 @@ impl Arguments { self.prefixed("deepen ", depth); } } - /// Deepen the commit history to include all commits from now to `seconds_since_unix_epoch`. - pub fn deepen_since(&mut self, seconds_since_unix_epoch: usize) { + /// Deepen the commit history to include all commits from now to (and including) `seconds` as passed since UNIX epoch. + pub fn deepen_since(&mut self, seconds: gix_date::SecondsSinceUnixEpoch) { debug_assert!(self.deepen_since, "'deepen-since' feature required"); if self.deepen_since { - self.prefixed("deepen-since ", seconds_since_unix_epoch); + self.prefixed("deepen-since ", seconds); } } /// Deepen the commit history in a relative instead of absolute fashion. @@ -165,20 +165,30 @@ impl Arguments { pub fn use_include_tag(&mut self) { debug_assert!(self.supports_include_tag, "'include-tag' feature required"); if self.supports_include_tag { - match self.version { - gix_transport::Protocol::V0 | gix_transport::Protocol::V1 => { - let features = self - .features_for_first_want - .as_mut() - .expect("call use_include_tag before want()"); - features.push("include-tag".into()) - } - gix_transport::Protocol::V2 => { - self.args.push("include-tag".into()); - } + self.add_feature("include-tag"); + } + } + + /// Add the given `feature`, unconditionally. + /// + /// Note that sending an unknown or unsupported feature may cause the remote to terminate + /// the connection. Use this method if you know what you are doing *and* there is no specialized + /// method for this, e.g. [`Self::use_include_tag()`]. + pub fn add_feature(&mut self, feature: &str) { + match self.version { + gix_transport::Protocol::V0 | gix_transport::Protocol::V1 => { + let features = self + .features_for_first_want + .as_mut() + .expect("call add_feature before first want()"); + features.push(feature.into()) + } + gix_transport::Protocol::V2 => { + self.args.push(feature.into()); } } } + fn prefixed(&mut self, prefix: &str, value: impl fmt::Display) { self.args.push(format!("{prefix}{value}").into()); } diff --git a/vendor/gix-protocol/src/fetch/delegate.rs b/vendor/gix-protocol/src/fetch/delegate.rs index e90022d41..e6f187402 100644 --- a/vendor/gix-protocol/src/fetch/delegate.rs +++ b/vendor/gix-protocol/src/fetch/delegate.rs @@ -183,7 +183,7 @@ mod blocking_io { ops::DerefMut, }; - use gix_features::progress::Progress; + use gix_features::progress::NestedProgress; use crate::{ fetch::{DelegateBlocking, Response}, @@ -207,7 +207,7 @@ mod blocking_io { fn receive_pack( &mut self, input: impl io::BufRead, - progress: impl Progress, + progress: impl NestedProgress + 'static, refs: &[Ref], previous_response: &Response, ) -> io::Result<()>; @@ -217,7 +217,7 @@ mod blocking_io { fn receive_pack( &mut self, input: impl BufRead, - progress: impl Progress, + progress: impl NestedProgress + 'static, refs: &[Ref], previous_response: &Response, ) -> io::Result<()> { @@ -229,7 +229,7 @@ mod blocking_io { fn receive_pack( &mut self, input: impl BufRead, - progress: impl Progress, + progress: impl NestedProgress + 'static, refs: &[Ref], previous_response: &Response, ) -> io::Result<()> { @@ -246,7 +246,7 @@ mod async_io { use async_trait::async_trait; use futures_io::AsyncBufRead; - use gix_features::progress::Progress; + use gix_features::progress::NestedProgress; use crate::{ fetch::{DelegateBlocking, Response}, @@ -272,7 +272,7 @@ mod async_io { async fn receive_pack( &mut self, input: impl AsyncBufRead + Unpin + 'async_trait, - progress: impl Progress, + progress: impl NestedProgress + 'static, refs: &[Ref], previous_response: &Response, ) -> io::Result<()>; @@ -282,7 +282,7 @@ mod async_io { async fn receive_pack( &mut self, input: impl AsyncBufRead + Unpin + 'async_trait, - progress: impl Progress, + progress: impl NestedProgress + 'static, refs: &[Ref], previous_response: &Response, ) -> io::Result<()> { @@ -297,7 +297,7 @@ mod async_io { async fn receive_pack( &mut self, input: impl AsyncBufRead + Unpin + 'async_trait, - progress: impl Progress, + progress: impl NestedProgress + 'static, refs: &[Ref], previous_response: &Response, ) -> io::Result<()> { diff --git a/vendor/gix-protocol/src/fetch/tests.rs b/vendor/gix-protocol/src/fetch/tests.rs index 80dc752dd..93cf6e8db 100644 --- a/vendor/gix-protocol/src/fetch/tests.rs +++ b/vendor/gix-protocol/src/fetch/tests.rs @@ -319,6 +319,7 @@ mod arguments { assert!(arguments.is_stateless(true), "V2 is stateless…"); assert!(arguments.is_stateless(false), "…in all cases"); + arguments.add_feature("no-progress"); arguments.deepen(1); arguments.deepen_relative(); arguments.want(id("7b333369de1221f9bfbbe03a3a13e9a09bc1c907")); @@ -329,6 +330,7 @@ mod arguments { b"0012command=fetch 0001000ethin-pack 000eofs-delta +0010no-progress 000ddeepen 1 0014deepen-relative 0032want 7b333369de1221f9bfbbe03a3a13e9a09bc1c907 @@ -347,6 +349,7 @@ mod arguments { let mut t = transport(&mut out, *is_stateful); let mut arguments = arguments_v2(Some("shallow")); + arguments.add_feature("no-progress"); arguments.deepen(1); arguments.deepen_since(12345); arguments.shallow(id("7b333369de1221f9bfbbe03a3a13e9a09bc1c9ff")); @@ -362,6 +365,7 @@ mod arguments { b"0012command=fetch 0001000ethin-pack 000eofs-delta +0010no-progress 000ddeepen 1 0017deepen-since 12345 0035shallow 7b333369de1221f9bfbbe03a3a13e9a09bc1c9ff @@ -371,6 +375,7 @@ mod arguments { 00000012command=fetch 0001000ethin-pack 000eofs-delta +0010no-progress 000ddeepen 1 0017deepen-since 12345 0035shallow 7b333369de1221f9bfbbe03a3a13e9a09bc1c9ff diff --git a/vendor/gix-protocol/src/fetch_fn.rs b/vendor/gix-protocol/src/fetch_fn.rs index 64d457711..b350976ef 100644 --- a/vendor/gix-protocol/src/fetch_fn.rs +++ b/vendor/gix-protocol/src/fetch_fn.rs @@ -1,6 +1,6 @@ use std::borrow::Cow; -use gix_features::progress::Progress; +use gix_features::progress::NestedProgress; use gix_transport::client; use maybe_async::maybe_async; @@ -59,7 +59,7 @@ where F: FnMut(credentials::helper::Action) -> credentials::protocol::Result, D: Delegate, T: client::Transport, - P: Progress, + P: NestedProgress + 'static, P::SubProgress: 'static, { let crate::handshake::Outcome { @@ -136,7 +136,7 @@ where .await?; previous_response = if response.has_pack() { progress.step(); - progress.set_name("receiving pack"); + progress.set_name("receiving pack".into()); if !sideband_all { setup_remote_progress(&mut progress, &mut reader); } @@ -159,7 +159,7 @@ where fn setup_remote_progress

(progress: &mut P, reader: &mut Box) where - P: Progress, + P: NestedProgress, P::SubProgress: 'static, { reader.set_progress_handler(Some(Box::new({ diff --git a/vendor/gix-protocol/src/handshake/function.rs b/vendor/gix-protocol/src/handshake/function.rs index 6324fb3e1..9e75c18d0 100644 --- a/vendor/gix-protocol/src/handshake/function.rs +++ b/vendor/gix-protocol/src/handshake/function.rs @@ -24,12 +24,12 @@ where { let (server_protocol_version, refs, capabilities) = { progress.init(None, progress::steps()); - progress.set_name("handshake"); + progress.set_name("handshake".into()); progress.step(); let extra_parameters: Vec<_> = extra_parameters .iter() - .map(|(k, v)| (k.as_str(), v.as_ref().map(|s| s.as_str()))) + .map(|(k, v)| (k.as_str(), v.as_deref())) .collect(); let supported_versions: Vec<_> = transport.supported_protocol_versions().into(); @@ -43,13 +43,13 @@ where Err(client::Error::Io(ref err)) if err.kind() == std::io::ErrorKind::PermissionDenied => { drop(result); // needed to workaround this: https://github.com/rust-lang/rust/issues/76149 let url = transport.to_url().into_owned(); - progress.set_name("authentication"); + progress.set_name("authentication".into()); let credentials::protocol::Outcome { identity, next } = authenticate(credentials::helper::Action::get_for_url(url.clone()))? .ok_or(Error::EmptyCredentials)?; transport.set_identity(identity)?; progress.step(); - progress.set_name("handshake (authenticated)"); + progress.set_name("handshake (authenticated)".into()); match transport.handshake(service, &extra_parameters).await { Ok(v) => { authenticate(next.store())?; diff --git a/vendor/gix-protocol/src/handshake/mod.rs b/vendor/gix-protocol/src/handshake/mod.rs index 6d70ed145..28243e96d 100644 --- a/vendor/gix-protocol/src/handshake/mod.rs +++ b/vendor/gix-protocol/src/handshake/mod.rs @@ -21,7 +21,7 @@ pub enum Ref { /// The hash of the object the ref points to. object: gix_hash::ObjectId, }, - /// A symbolic ref pointing to `target` ref, which in turn points to an `object` + /// A symbolic ref pointing to `target` ref, which in turn, ultimately after possibly following `tag`, points to an `object` Symbolic { /// The name at which the symbolic ref is located, like `HEAD`. full_ref_name: BString, @@ -31,7 +31,11 @@ pub enum Ref { /// /// [#205]: https://github.com/Byron/gitoxide/issues/205 target: BString, - /// The hash of the object the `target` ref points to. + /// The hash of the annotated tag the ref points to, if present. + /// + /// Note that this field is also `None` if `full_ref_name` is a lightweight tag. + tag: Option, + /// The hash of the object the `target` ref ultimately points to. object: gix_hash::ObjectId, }, /// A ref is unborn on the remote and just points to the initial, unborn branch, as is the case in a newly initialized repository diff --git a/vendor/gix-protocol/src/handshake/refs/mod.rs b/vendor/gix-protocol/src/handshake/refs/mod.rs index 889842e4c..39c6c85a9 100644 --- a/vendor/gix-protocol/src/handshake/refs/mod.rs +++ b/vendor/gix-protocol/src/handshake/refs/mod.rs @@ -38,10 +38,17 @@ impl Ref { /// If `unborn`, the first object id will be the null oid. pub fn unpack(&self) -> (&BStr, Option<&gix_hash::oid>, Option<&gix_hash::oid>) { match self { - Ref::Direct { full_ref_name, object } - | Ref::Symbolic { - full_ref_name, object, .. - } => (full_ref_name.as_ref(), Some(object), None), + Ref::Direct { full_ref_name, object } => (full_ref_name.as_ref(), Some(object), None), + Ref::Symbolic { + full_ref_name, + tag, + object, + .. + } => ( + full_ref_name.as_ref(), + Some(tag.as_deref().unwrap_or(object)), + tag.as_deref().map(|_| object.as_ref()), + ), Ref::Peeled { full_ref_name, tag: object, diff --git a/vendor/gix-protocol/src/handshake/refs/shared.rs b/vendor/gix-protocol/src/handshake/refs/shared.rs index 046a2a1b1..45aefe68b 100644 --- a/vendor/gix-protocol/src/handshake/refs/shared.rs +++ b/vendor/gix-protocol/src/handshake/refs/shared.rs @@ -8,20 +8,33 @@ impl From for Ref { InternalRef::Symbolic { path, target: Some(target), + tag, object, } => Ref::Symbolic { full_ref_name: path, target, + tag, object, }, InternalRef::Symbolic { path, target: None, + tag: None, object, } => Ref::Direct { full_ref_name: path, object, }, + InternalRef::Symbolic { + path, + target: None, + tag: Some(tag), + object, + } => Ref::Peeled { + full_ref_name: path, + tag, + object, + }, InternalRef::Peeled { path, tag, object } => Ref::Peeled { full_ref_name: path, tag, @@ -56,6 +69,7 @@ pub(crate) enum InternalRef { /// /// The latter is more of an edge case, please [this issue][#205] for details. target: Option, + tag: Option, object: gix_hash::ObjectId, }, /// extracted from V1 capabilities, which contain some important symbolic refs along with their targets @@ -155,6 +169,7 @@ pub(in crate::handshake::refs) fn parse_v1( Some(position) => match out_refs.swap_remove(position) { InternalRef::SymbolicForLookup { path: _, target } => out_refs.push(InternalRef::Symbolic { path: path.into(), + tag: None, // TODO: figure out how annotated tags work here. object, target, }), @@ -172,7 +187,7 @@ pub(in crate::handshake::refs) fn parse_v1( pub(in crate::handshake::refs) fn parse_v2(line: &BStr) -> Result { let trimmed = line.trim_end(); - let mut tokens = trimmed.splitn(3, |b| *b == b' '); + let mut tokens = trimmed.splitn(4, |b| *b == b' '); match (tokens.next(), tokens.next()) { (Some(hex_hash), Some(path)) => { let id = if hex_hash == b"unborn" { @@ -183,7 +198,9 @@ pub(in crate::handshake::refs) fn parse_v2(line: &BStr) -> Result { if path.is_empty() { return Err(Error::MalformedV2RefLine(trimmed.to_owned().into())); } - Ok(if let Some(attribute) = tokens.next() { + let mut symref_target = None; + let mut peeled = None; + for attribute in tokens.by_ref().take(2) { let mut tokens = attribute.splitn(2, |b| *b == b':'); match (tokens.next(), tokens.next()) { (Some(attribute), Some(value)) => { @@ -191,32 +208,12 @@ pub(in crate::handshake::refs) fn parse_v2(line: &BStr) -> Result { return Err(Error::MalformedV2RefLine(trimmed.to_owned().into())); } match attribute { - b"peeled" => Ref::Peeled { - full_ref_name: path.into(), - object: gix_hash::ObjectId::from_hex(value.as_bytes())?, - tag: id.ok_or(Error::InvariantViolation { - message: "got 'unborn' as tag target", - })?, - }, - b"symref-target" => match value { - b"(null)" => Ref::Direct { - full_ref_name: path.into(), - object: id.ok_or(Error::InvariantViolation { - message: "got 'unborn' while (null) was a symref target", - })?, - }, - name => match id { - Some(id) => Ref::Symbolic { - full_ref_name: path.into(), - object: id, - target: name.into(), - }, - None => Ref::Unborn { - full_ref_name: path.into(), - target: name.into(), - }, - }, - }, + b"peeled" => { + peeled = Some(gix_hash::ObjectId::from_hex(value.as_bytes())?); + } + b"symref-target" => { + symref_target = Some(value); + } _ => { return Err(Error::UnknownAttribute { attribute: attribute.to_owned().into(), @@ -227,13 +224,53 @@ pub(in crate::handshake::refs) fn parse_v2(line: &BStr) -> Result { } _ => return Err(Error::MalformedV2RefLine(trimmed.to_owned().into())), } - } else { - Ref::Direct { + } + if tokens.next().is_some() { + return Err(Error::MalformedV2RefLine(trimmed.to_owned().into())); + } + Ok(match (symref_target, peeled) { + (Some(target_name), peeled) => match target_name { + b"(null)" => match peeled { + None => Ref::Direct { + full_ref_name: path.into(), + object: id.ok_or(Error::InvariantViolation { + message: "got 'unborn' while (null) was a symref target", + })?, + }, + Some(peeled) => Ref::Peeled { + full_ref_name: path.into(), + object: peeled, + tag: id.ok_or(Error::InvariantViolation { + message: "got 'unborn' while (null) was a symref target", + })?, + }, + }, + name => match id { + Some(id) => Ref::Symbolic { + full_ref_name: path.into(), + tag: peeled.map(|_| id), + object: peeled.unwrap_or(id), + target: name.into(), + }, + None => Ref::Unborn { + full_ref_name: path.into(), + target: name.into(), + }, + }, + }, + (None, Some(peeled)) => Ref::Peeled { + full_ref_name: path.into(), + object: peeled, + tag: id.ok_or(Error::InvariantViolation { + message: "got 'unborn' as tag target", + })?, + }, + (None, None) => Ref::Direct { object: id.ok_or(Error::InvariantViolation { message: "got 'unborn' as object name of direct reference", })?, full_ref_name: path.into(), - } + }, }) } _ => Err(Error::MalformedV2RefLine(trimmed.to_owned().into())), diff --git a/vendor/gix-protocol/src/handshake/refs/tests.rs b/vendor/gix-protocol/src/handshake/refs/tests.rs index 7d995da5c..3a6af8d2f 100644 --- a/vendor/gix-protocol/src/handshake/refs/tests.rs +++ b/vendor/gix-protocol/src/handshake/refs/tests.rs @@ -17,6 +17,7 @@ unborn refs/heads/symbolic symref-target:refs/heads/target 808e50d724f604f69ab93c6da2919c014667bedb refs/heads/main 7fe1b98b39423b71e14217aa299a03b7c937d656 refs/tags/foo peeled:808e50d724f604f69ab93c6da2919c014667bedb 7fe1b98b39423b71e14217aa299a03b7c937d6ff refs/tags/blaz +978f927e6397113757dfec6332e7d9c7e356ac25 refs/heads/symbolic symref-target:refs/tags/v1.0 peeled:4d979abcde5cea47b079c38850828956c9382a56 " .as_bytes(), ); @@ -29,6 +30,7 @@ unborn refs/heads/symbolic symref-target:refs/heads/target Ref::Symbolic { full_ref_name: "HEAD".into(), target: "refs/heads/main".into(), + tag: None, object: oid("808e50d724f604f69ab93c6da2919c014667bedb") }, Ref::Direct { @@ -56,8 +58,14 @@ unborn refs/heads/symbolic symref-target:refs/heads/target full_ref_name: "refs/tags/blaz".into(), object: oid("7fe1b98b39423b71e14217aa299a03b7c937d6ff") }, + Ref::Symbolic { + full_ref_name: "refs/heads/symbolic".into(), + target: "refs/tags/v1.0".into(), + tag: Some(oid("978f927e6397113757dfec6332e7d9c7e356ac25")), + object: oid("4d979abcde5cea47b079c38850828956c9382a56") + }, ] - ) + ); } #[maybe_async::test(feature = "blocking-client", async(feature = "async-client", async_std::test))] @@ -86,6 +94,7 @@ dce0ea858eef7ff61ad345cc5cdac62203fb3c10 refs/tags/gix-commitgraph-v0.0.0 Ref::Symbolic { full_ref_name: "HEAD".into(), target: "refs/heads/main".into(), + tag: None, object: oid("73a6868963993a3328e7d8fe94e5a6ac5078a944") }, Ref::Direct { diff --git a/vendor/gix-protocol/src/ls_refs.rs b/vendor/gix-protocol/src/ls_refs.rs index d0b2e9ba0..c5b71da93 100644 --- a/vendor/gix-protocol/src/ls_refs.rs +++ b/vendor/gix-protocol/src/ls_refs.rs @@ -86,7 +86,7 @@ pub(crate) mod function { ); progress.step(); - progress.set_name("list refs"); + progress.set_name("list refs".into()); let mut remote_refs = transport .invoke( ls_refs.as_str(), diff --git a/vendor/gix-protocol/src/remote_progress.rs b/vendor/gix-protocol/src/remote_progress.rs index 538a767fc..b516a06bf 100644 --- a/vendor/gix-protocol/src/remote_progress.rs +++ b/vendor/gix-protocol/src/remote_progress.rs @@ -1,10 +1,11 @@ use std::convert::TryFrom; use bstr::ByteSlice; -use nom::{ - bytes::complete::{tag, take_till, take_till1}, - combinator::{map_res, opt}, - sequence::{preceded, terminated}, +use winnow::{ + combinator::opt, + combinator::{preceded, terminated}, + prelude::*, + token::{tag, take_till0, take_till1}, }; /// The information usually found in remote progress messages as sent by a git server during @@ -25,8 +26,8 @@ pub struct RemoteProgress<'a> { impl<'a> RemoteProgress<'a> { /// Parse the progress from a typical git progress `line` as sent by the remote. - pub fn from_bytes(line: &[u8]) -> Option> { - parse_progress(line).ok().and_then(|(_, r)| { + pub fn from_bytes(mut line: &[u8]) -> Option> { + parse_progress(&mut line).ok().and_then(|r| { if r.percent.is_none() && r.step.is_none() && r.max.is_none() { None } else { @@ -73,36 +74,36 @@ impl<'a> RemoteProgress<'a> { } } -fn parse_number(i: &[u8]) -> nom::IResult<&[u8], usize> { - map_res(take_till(|c: u8| !c.is_ascii_digit()), btoi::btoi)(i) +fn parse_number(i: &mut &[u8]) -> PResult { + take_till0(|c: u8| !c.is_ascii_digit()) + .try_map(btoi::btoi) + .parse_next(i) } -fn next_optional_percentage(i: &[u8]) -> nom::IResult<&[u8], Option> { +fn next_optional_percentage(i: &mut &[u8]) -> PResult, ()> { opt(terminated( preceded( - take_till(|c: u8| c.is_ascii_digit()), - map_res(parse_number, u32::try_from), + take_till0(|c: u8| c.is_ascii_digit()), + parse_number.try_map(u32::try_from), ), tag(b"%"), - ))(i) + )) + .parse_next(i) } -fn next_optional_number(i: &[u8]) -> nom::IResult<&[u8], Option> { - opt(preceded(take_till(|c: u8| c.is_ascii_digit()), parse_number))(i) +fn next_optional_number(i: &mut &[u8]) -> PResult, ()> { + opt(preceded(take_till0(|c: u8| c.is_ascii_digit()), parse_number)).parse_next(i) } -fn parse_progress(line: &[u8]) -> nom::IResult<&[u8], RemoteProgress<'_>> { - let (i, action) = take_till1(|c| c == b':')(line)?; - let (i, percent) = next_optional_percentage(i)?; - let (i, step) = next_optional_number(i)?; - let (i, max) = next_optional_number(i)?; - Ok(( - i, - RemoteProgress { - action: action.into(), - percent, - step, - max, - }, - )) +fn parse_progress<'i>(line: &mut &'i [u8]) -> PResult, ()> { + let action = take_till1(|c| c == b':').parse_next(line)?; + let percent = next_optional_percentage.parse_next(line)?; + let step = next_optional_number.parse_next(line)?; + let max = next_optional_number.parse_next(line)?; + Ok(RemoteProgress { + action: action.into(), + percent, + step, + max, + }) } -- cgit v1.2.3