github GitoxideLabs/gitoxide git-protocol-v0.21.0
git-protocol v0.21.0

2 years ago

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

  • 20 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
    • 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)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.