### 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](https://www.conventionalcommits.org).
- 1 unique issue was worked on: #450
### Commit 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)