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

2 years ago

New Features

  • reqwest as blocking HTTP backend via http-client-reqwest feature toggle.
    Note that despite passing the same tests that curl passes, for
    bulletproof HTTP connections to untrusted servers, the curl backend
    should be preferred. reqwest is known to hang if content-length:
    HTTP headers are longer than the actual content, and no timeout is
    kicking in to stop the hanging. curl has no trouble with this for
    example.
  • Add client::http::Transport::new_http() constructor.
    This goes along with client::http::connect_http() to support
    connections to via custom transports which are passed from calling
    crates, without relying on the implementation to be built-in.
  • Allow defaulting client::Capabilities.
    This can be useful in conjunction with std::mem::take(), even
    though an empty data structure like that doesn't bear any significance
    beyond that.

Bug Fixes

  • set the protocol version for local git transports as well.
    Previously this was only done for ssh based connections, and requires
    setting an environment variable.

  • remove Drop for SpawnProcessOnDemand.
    It is well-intended but is likely to hang the calling process
    if for any reason not all process output was consumed.

    Even though not waiting for the process leaves it running, it will
    stop naturally once its output pipe breaks once once
    our handles for it are inevitable dropped at the same time.

  • compare 'Content-Type' header case-insensitively, as required by the http spec.

Other

  • try to make the transport configurable after being boxed, but…
    …that would force it to be 'static, which is something we excplicitly
    cannot have. We need references to be contained within, if I remember
    correctly.

Changed (BREAKING)

  • client::http::connect() returns Transport<Impl> directly.
    It' can't fail, so no need to return Result<_, Infallible>.

New Features (BREAKING)

  • add fetch::Transport::configure to generically configure any transport.

Commit Statistics

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

Commit Details

view details
  • #450
    • set the protocol version for local git transports as well. (41b0c19)
    • remove Drop for SpawnProcessOnDemand. (6d8b66a)
    • Allow defaulting client::Capabilities. (e05c1fe)
    • Use &dyn Any instead of unspecified serialization format, as it's the right way. (779eefe)
    • add fetch::Transport::configure to generically configure any transport. (78ad3df)
    • client::http::connect() returns Transport<Impl> directly. (1cf66c4)
    • Revert "FAIL: try to make the transport configurable after being boxed, but…" (fbb96e4)
    • try to make the transport configurable after being boxed, but… (5bef0a0)
  • Uncategorized
    • prepare changelogs for release (d232567)
    • Merge branch 'fix-smart-release' (aa80b60)
    • make fmt (7b9c065)
    • reqwest as blocking HTTP backend via http-client-reqwest feature toggle. (8e17534)
    • re-enable last remaining test for reqwest (9ef6a54)
    • Merge branch 'main' into new-http-impl (702a161)
    • and another previously hanging test works - content-length is critical (0b0ba03)
    • clone_v1 now works in reqwest, because… (63d5a01)
    • make fmt (53acf25)
    • Merge branch 'fetch-pack' (f47c891)
    • Merge branch 'fetch-pack' (3c49400)
    • Merge branch 'main' into fetch-pack (93917cb)
    • Shutdown the stream of the mock server for good measure (4e415a8)
    • minor fix to test, but now it hangs. 3 hanging to go… (164f5d3)
    • one more test works - strangely enough this one doesn't hang. (c3150dd)
    • adjust test expectations to pass one part, but now it hangs like clone_v1 (4b731ad)
    • refactor (569c6f2)
    • send error on non-success status codes (7ccd4ff)
    • disable all tests failing under reqwest (except for 1); minor fixes to get it to work (ee4eb69)
    • Properly integrate reqwest to allow testing (even though none of them works yet) (250114a)
    • revise drop of header writer to prevent remote hang (2981c4d)
    • revise error handling; better docs to explain the 'protocol' (fd9634d)
    • in theory, that's what's needed for reqwest to work in blocking mode… (ce62f5d)
    • even more safety when dealing with the remote's error state (b63d69b)
    • rethink error handling during request creation, completing it (1fb0545)
    • frame for filling in the reqwest implementation (943fd15)
    • Add 'http-client-reqwest' feature toggle (2c9b63c)
    • compare 'Content-Type' header case-insensitively, as required by the http spec. (237682a)
    • Merge branch 'paulyoung/git-transport-http-client' (c845c16)
    • Add client::http::Transport::new_http() constructor. (0fd57c6)
    • Introduce http-client feature to decouple from curl (31aa2c9)
    • Make Content-Type header check case-insensitive (7aa8ab8)
    • Merge branch 'fix-git-features' (82fd251)
    • Merge branch 'diff' (25a7726)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.