1649 lines · 126.0 KB · Markdown
RawDownload

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.25.1 (2022-12-22)

A maintenance release without user-facing changes.

Commit Statistics

  • 2 commits contributed to the release.
  • 2 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • prepare changelogs prior to release (68ce15d)
    • Merge branch 'adjustments-for-cargo' (5afa7f5)

0.25.0 (2022-12-19)

New Features

  • fetch::Arguments::use_include_tag() allows to signal include-tag. One can also check for its availability using fetch::Arguments::can_use_include_tag().

    Further there was a bugfix that assues V1 capabilities are correctly interpreted to support include-tag.

  • due to more specific errors one can differentiate if remote authentication failed repeatedly.

  • some errors support is_spurious() to tell if retrying is possible.

Bug Fixes

  • don't pass 'include-tag' as argument by default. This flag always has to be added by the caller based on configuration.

  • don't post packfile-uris capability unless we are able to make use of it. Turns out that this option can be rejected by a server that advertises it, so definitely needs more work to make it work.

  • Parse refs from bytes, not from String. The latter can cause issues around illformed UTF-8 which wouldn't bother git either.

    This comes at the expense of not parsing line by line anymore, but instead reading as fast as possible and parsing afterwards.

    Performance wise I think it doesn't matter, but it will cause more memory to be used. If this ever becomes a problem, for example during pushes where we are stuck with V1, we can consider implementing our own streaming appreach that works with packet lines instead - they are just not exposed here even though they could.

  • don't enforce V2 as protocol, but smoothly downgrade like git does. For backward compatibility the shared handshake implementation allows the transport to control which protocol versions it wants to support to allow optiomizing for one special case, namely to prevent it to read all V1 refs on old servers but abort instead, closing the connection without delay.

    Now we leave this feature for custom transports (who usually come with custom servers) and instead support fallbacks to other protocols if the server demands it.

Commit Statistics

  • 24 commits contributed to the release over the course of 27 calendar days.
  • 27 days passed between releases.
  • 7 commits were understood as conventional.
  • 1 unique issue was worked on: #639

Commit Details

view details
  • #639
    • don't post packfile-uris capability unless we are able to make use of it. (24000fa)
  • Uncategorized
    • 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)
    • prepare chnagelogs prior to git-repository release (7114bbb)
    • don't enforce V2 as protocol, but smoothly downgrade like git does. (5f2276b)
    • Merge branch 'adjustments-for-cargo' (083909b)
    • fetch::Arguments::use_include_tag() allows to signal include-tag. (5a50d95)
    • don't pass 'include-tag' as argument by default. (a872782)
    • Merge branch 'adjustments-for-cargo' (94750e1)
    • due to more specific errors one can differentiate if remote authentication failed repeatedly. (1c0a6c0)
    • Merge branch 'adjustments-for-cargo' (70ccbb2)
    • some errors support is_spurious() to tell if retrying is possible. (2363bcb)
    • adapt to changes in git-transport (527c62e)
    • Merge branch 'fix-638' (eb4c5f0)
    • Merge branch 'fixture-async' (eca6705)
    • async version of ref-line parsing now reads line by line. (dadd896)
    • Add Fixture implementation for async. (b583c2a)
    • Release git-hash v0.10.1, git-hashtable v0.1.0 (7717170)
    • Merge branch 'remove-lines-parsing' (9d8e32d)
    • Parse refs from bytes, not from String. (806b8c2)
    • adapt to changes in git-transport (49461b1)
    • Merge branch 'main' into http-config (6b9632e)
    • Release git-features v0.24.1, git-actor v0.14.1, git-index v0.9.1 (7893502)
    • Merge branch 'main' into http-config (bcd9654)
    • make fmt (0abab7d)

0.24.0 (2022-11-21)

New Features (BREAKING)

  • upgrade edition to 2021 in most crates. MSRV for this is 1.56, and we are now at 1.60 so should be compatible. This isn't more than a patch release as it should break nobody who is adhering to the MSRV, but let's be careful and mark it breaking.

    Note that git-features and git-pack are still on edition 2018 as they make use of a workaround to support (safe) mutable access to non-overlapping entries in a slice which doesn't work anymore in edition 2021.

Commit Statistics

  • 4 commits contributed to the release over the course of 2 calendar days.
  • 4 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • 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)
    • prepare changelogs prior to release (e4648f8)
    • Merge branch 'version2021' (0e4462d)
    • upgrade edition to 2021 in most crates. (3d8fa8f)

0.23.0 (2022-11-17)

New Features

  • expose futures_lite for convenience in downstream crates.

Changed (BREAKING)

  • move fetch::refs(…, protocol, …) to the crate root as ls_refs(…). This move also removes the protocol parameter as ls-refs is only available in V2 and the caller is forced to know that after running a handshake(…) anyway which yields the actual protocol used by the server.

    Note that the client can suggest the version to use when connecting, which is specific to the transport at hand.

  • move fetch::Command into the crate root. This represents much better on how it is actually used, which is for validation of any Command invoked through the protocol independenty.

  • move fetch::agent|indicate_end_of_interaction to crate root These are generally useful in all interactions, including push.

  • handshake(…) is now generalized to support git-receive-pack as well. Note that fetch::handshake() is still present, selecting the correct service like before, but most of the fetch::Ref parsing is now handled by handshake::Ref in it's more general location.

    There is still fetch::refs(…) which just invokes a V2 ls-refs command (without that being generalized) as git-receive-pack just supports V1 at the moment, and making the fetch::LsRefs Command more general would mean that every command has to be general, at is doesn't matter anymore if it's used for Fetch or Push.

    As long as git won't support V2 for pushes, which it never might, there is no need to introduce this breakage even though it should probably be done before going 1.0.

  • fetch::agent() returns agent string only; fetch() takes agent name as parameter.

  • don't auto-insert user agent, instead prepare to insert it later.

  • fetch::agent() now returns the agent name, fetch::agent_tuple() returns specific key-value pair. This is in preparation for allowing user-defined agent strings.

Commit Statistics

  • 20 commits contributed to the release over the course of 8 calendar days.
  • 10 days passed between releases.
  • 8 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates (0c253b1)
    • prepare changelogs prior to release (fe5721f)
    • Merge branch 'http-config' (665b53e)
    • fix docs (b5c316e)
    • move fetch::refs(…, protocol, …) to the crate root as ls_refs(…). (09070a7)
    • move fetch::Command into the crate root. (35f7b4d)
    • move fetch::agent|indicate_end_of_interaction to crate root (a03f8f6)
    • handshake(…) is now generalized to support git-receive-pack as well. (a3bcf82)
    • migrate independent parts of ref parsing to generalized handshake. (611a139)
    • prepare for handshake generalization by copying it into position; parameterize service (7691353)
    • Merge branch 'main' into http-config (f4ff821)
    • Merge branch 'async-fetch' (0c9c48b)
    • expose futures_lite for convenience in downstream crates. (68c65a9)
    • Set exact patch level for git-transport (b46e3bb)
    • adjust for changes in git-transport (f88569b)
    • adapt to changes in git-transport (226f33a)
    • make trait parameter more open, no need for 'static (68dc86f)
    • fetch::agent() returns agent string only; fetch() takes agent name as parameter. (d05b0b8)
    • don't auto-insert user agent, instead prepare to insert it later. (aab278f)
    • fetch::agent() now returns the agent name, fetch::agent_tuple() returns specific key-value pair. (f957d9a)

0.22.0 (2022-11-06)

Changed (BREAKING)

  • fetch::Ref::unpack() returns Option<oid>. That way the caller has to be aware of the possibility of an unborn branch (probably the only unborn branch) on the remote.

New Features (BREAKING)

  • Support for unborn ls-refs capability if server supports it. We can also parse it, adding yet another variant to fetch::Refs.

Commit Statistics

  • 13 commits contributed to the release over the course of 23 calendar days.
  • 27 days passed between releases.
  • 2 commits were understood as conventional.
  • 1 unique issue was worked on: #450

Thanks Clippy

Clippy helped 2 times to make code idiomatic.

Commit Details

view details
  • #450
    • don't degenerate information about the unborn fetch ref's path. (42c977f)
    • fetch::Ref::unpack() returns Option<oid>. (cd867ad)
    • Support for unborn ls-refs capability if server supports it. (02e37f0)
    • less noisy way of writing trait bounds (b593806)
    • upgrade to prodash v21 (a0655dc)
    • improve docs slightly (306ebef)
  • Uncategorized
    • Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates (d071583)
    • prepare changelogs prior to release (423af90)
    • Merge branch 'main' into write-sparse-index (upgrade to Rust 1.65) (5406630)
    • thanks clippy (04cfa63)
    • Merge branch 'main' into write-sparse-index (c4e6849)
    • Merge branch 'gix-clone' (def53b3)
    • thanks clippy (bc9c780)

0.21.0 (2022-10-10)

Changed

  • turn prepare_ls_refs in fetch::refs() into FnOnce.

New Features

  • Allow defaulting fetch::handshake::Outcome. This is useful in conjunction with std::mem::take().
  • fetch::Arguments::is_empty() to help decide if arguments should be sent at all. Furthermore, the Debug trait was added.
  • make some private methods public to give callers more flexibility. This allows to implement the fetch-negotiation part oneself and break free from constraints of the delegate.
  • add client::fetch_pack() allowing to fetch a pack after a handshake.

Bug Fixes

  • support keepalive packets. Keepalive packets are side-band only empty datalines that should just be ignored. This is now happening, allowing longer git operations to work as they will send keepalive packets every 5 seconds, and previously we would choke on it.

    Note that empty datalines are never send otherwise, making it a previously unused marker that can safely be skipped.

  • Link up Io error as source for error chaining; add Debug to client::fetch::Response

Reverted

  • client::fetch_pack() isn't worth it after all. The overhead required to make it work isn't worth the logic we are enabling. Instead, it's OK to re-implement custom logic on the consumer side based on this one.

Commit Statistics

  • 21 commits contributed to the release over the course of 20 calendar days.
  • 20 days passed between releases.
  • 8 commits were understood as conventional.
  • 1 unique issue was worked on: #450

Commit Details

view details
  • #450
    • support keepalive packets. (d7f62b4)
    • properly implement fetch::Arguments::is_empty() (df36ede)
    • Link up Io error as source for error chaining; add Debug to client::fetch::Response (266395e)
    • Allow defaulting fetch::handshake::Outcome. (aed93d2)
    • fetch::Arguments::is_empty() to help decide if arguments should be sent at all. (0bcb2fd)
    • make some private methods public to give callers more flexibility. (31a7089)
    • Use &dyn Any instead of unspecified serialization format, as it's the right way. (779eefe)
    • adapt to changes in git-transport (e842843)
    • client::fetch_pack() isn't worth it after all. (f87b7eb)
    • add client::fetch_pack() allowing to fetch a pack after a handshake. (744ed03)
    • refactor (c3e4b2a)
    • update fetch feature list with wait-for-done (02245a6)
    • turn prepare_ls_refs in fetch::refs() into FnOnce. (3a38d1b)
    • improve docs a little (45394d5)
  • Uncategorized
    • Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates (104d922)
    • prepare changelogs for release (d232567)
    • Merge branch 'main' into new-http-impl (702a161)
    • Merge branch 'fetch-pack' (f47c891)
    • Merge branch 'fetch-pack' (3c49400)
    • Merge branch 'fix-git-features' (82fd251)
    • Merge branch 'diff' (25a7726)

0.20.0 (2022-09-20)

Changed (BREAKING)

  • fetch::Ref::unpack() returns &BStr instead of &BString as ref name.
  • fetch::Ref::unpack() now returns the peeled object as well.
  • rename fetch::Ref::path to fetch::Ref::full_ref_name. Previously it was inaccurately named and described due to an insufficient understanding of the ref database.
  • upgrade bstr to 1.0.1

Commit Statistics

  • 21 commits contributed to the release over the course of 22 calendar days.
  • 22 days passed between releases.
  • 4 commits were understood as conventional.
  • 2 unique issues were worked on: #450, #470

Commit Details

view details
  • #450
    • option to print server information about the connection (4720666)
    • adjust to changes in git-refspec (ffa24a1)
    • fetch::Ref::unpack() returns &BStr instead of &BString as ref name. (91f193f)
    • fetch::Ref::unpack() now returns the peeled object as well. (d2c772e)
    • rename fetch::Ref::path to fetch::Ref::full_ref_name. (bab5860)
    • upgrade bstr to 1.0.1 (99905ba)
  • #470
    • update changelogs prior to release (caa7a1b)
  • Uncategorized
    • Release 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 (f5c36d8)
    • 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)
    • Merge branch 'filter-refs' (3773b92)
    • Merge branch 'filter-refs' (fd14489)
    • Release git-features v0.22.6 (c9eda72)
    • make fmt (535e967)
    • Merge branch 'filter-refs-by-spec' (5c05198)
    • Merge branch 'main' into filter-refs-by-spec (9aa1d3d)
    • Release git-features v0.22.4, git-url v0.8.0, safety bump 4 crates (1d4600a)
    • Merge branch 'main' into filter-refs-by-spec (1f6e5ab)
    • Merge branch 'fix-522' (5869e9f)
    • Release git-hash v0.9.9 (da0716f)
    • Merge branch 'main' into index-from-tree (bc64b96)
    • Merge branch 'main' into filter-refs-by-spec (cef0b51)

0.19.1 (2022-08-28)

Maintenance release without user-facing changes.

New Features

  • helper::main to easily create credential helper implementations

Commit Statistics

  • 12 commits contributed to the release over the course of 4 calendar days.
  • 4 days passed between releases.
  • 1 commit was understood as conventional.
  • 2 unique issues were worked on: #450, #XXX

Commit Details

view details
  • #450
    • adjust to changes in git-credentials (32758e8)
    • adapt to changes in git-credentials (27c9da5)
    • improved error when identity could not be obtained (08c1287)
    • helper::main to easily create credential helper implementations (eaff67c)
    • adjust to changes in git-credentials (33f1347)
    • adjust to changes in git-credentials (fe1a06d)
    • adjust to changes in git-credentials (40cc1dc)
    • refactor (077ab57)
  • #XXX
    • prepare changelogs prior to release (8c0bca3)
  • Uncategorized
    • Release git-object v0.20.3, git-ref v0.15.4, git-config v0.7.1, git-diff v0.18.0, git-traverse v0.16.3, git-pack v0.22.0, git-odb v0.32.0, git-url v0.7.3, git-transport v0.19.3, git-protocol v0.19.1, git-refspec v0.1.1, git-repository v0.23.0, safety bump 6 crates (85a3bed)
    • Release git-features v0.22.3, git-revision v0.4.4 (c2660e2)
    • Merge branch 'main' into filter-refs-by-spec (cfa1440)

0.19.0 (2022-08-24)

Chore

  • uniformize deny attributes

New Features

  • provide a function to gracefully shut donw a fetch transport
  • use docsrs feature in code to show what is feature-gated automatically on docs.rs
  • pass --cfg docsrs when compiling for https://docs.rs
  • re-export maybe_async That way, API users can also provide dynamically sync or async APIs.

Commit Statistics

  • 10 commits contributed to the release over the course of 5 calendar days.
  • 6 days passed between releases.
  • 5 commits were understood as conventional.
  • 1 unique issue was worked on: #450

Commit Details

view details
  • #450
    • provide a function to gracefully shut donw a fetch transport (5ba9e1d)
    • re-export maybe_async (d6b4878)
  • Uncategorized
    • Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates (4974eca)
    • Merge branch 'remote-ls-refs' (39d585d)
    • Merge branch 'main' into remote-ls-refs (e2ee3de)
    • Merge branch 'docsrs-show-features' (31c2351)
    • use docsrs feature in code to show what is feature-gated automatically on docs.rs (b1c40b0)
    • uniformize deny attributes (f7f136d)
    • pass --cfg docsrs when compiling for https://docs.rs (5176771)
    • Merge branch 'main' into remote-ls-refs (bd5f3e8)

0.18.1 (2022-08-17)

A maintenance release without user facing changes.

Changed (BREAKING)

Lines 1–500 of 1649.