### New Features

 - diff algorithm is controlled by git configuration `diff.algorithm`
 - Query of `core.logAllRefUpdates` is now fallible.
   This is the same behaviour as shown by `git`, which requires valid
   values or aborts.
 - automatically handle `.keep` files after writing a pack bundle to disk.
   The logic implemented here tries to do the right thing, that is when
   we have reason to believe that the objects in the pack are linked up
   with a ref, we delete the keep file automatically.
   
   However, if there was no local ref edit as the ref specs didn't contain
   local destinations, or if the pack was empty, then keep the .keep file
   and leave it to the caller to handle.
 - Use `core.askpass` when building the credential helper.
   Previously it would only consider the environment variable, which can
   still override the provided git-configuration at core.askpass .
 - `remote::fetch::Prepare::handshake_outcome()` to obtain server information right after listing refs.
 - `open::Options::config_overrides()` for early configuration; support for `init.defaultBranch`.

### Bug Fixes

 - don't allow non-bare repositories to be initialized into non-empty directories.
 - `init_bare()` now creates the destination directory if it doesn't exist.
 - build correct path for `$HOME/.config/…` files.
   The special per-user `ignore` and `attributes` files can also be
   defaulted if some environment variables are set and may be accessed.
   
   Previously the default for `$HOME` was incorrect, as it was missing the
   intermediate `.config/` directory. This is now present to build paths
   exactly like git.
 - ref-map filtering now uses correct prefixes.
   Previously specs could get filtered out server-side as a matching prefix
   was entirely missing.

### Changed (BREAKING)

 - `Repository::branch_remote_name()` returns `reference::remote::Name`.
   That way it's made clear the remote can also be a URL, while rejecting
   illformed UTF8. The latter isn't valid for remote names anyway as these
   only support a very limited character set.
   
   Note that this error currently is degenerated, making it appear if the
   remote name doesn't exists if illformed UTF-8 is found in what appears
   to be a symbolic ref.
 - be specific about the kind of `diff::Error`, moving it to `diff::for_each::Error`.

### New Features (BREAKING)

 - `Tree::lookup_entry*()` returns attached `Entry` type.
   That way chaining gets even easier.

### Bug Fixes (BREAKING)

 - `create::into(…)` takes `create::Kind` to determine if it's bare or not.
   First of all, `bare` is not an option anymore, but a parameter as
   it can't be defaulted.
   Other public signatures change as well to accomodate for it.

### Other (BREAKING)

 - <csr-id-c6f92c15529ddff7539667b74bafa2348f3040e3/> `DiffPlatform::text()` to `*::lines()`.
   This is more specific as one could also do character changes in a single
   line, and it adapts the signature to the new `imra-diff` powered
   mechanism, for a 2x speed boost.

### Commit Statistics

 - 113 commits contributed to the release over the course of 27 calendar days.
 - 27 days passed between releases.
 - 15 commits were understood as [conventional](https://www.conventionalcommits.org).
 - 1 unique issue was worked on: #450

### Thanks Clippy

[Clippy](https://github.com/rust-lang/rust-clippy) helped 12 times to make code idiomatic. 

### Commit Details

 * **#450**
    - make last test work to allow us to clone properly (3890f1a)
    - initail implementation of writing branch tracking information (e2a5714)
    - adapt to changes in `git-protocol` (d61eb2c)
    - Don't deviate by creating strange reflogs (with null-source & null-destination) (f1b5570)
    - Support unborn remotes and pick up their default branch name. (619fd61)
    - adapt to changes in `git-protocol` (179ccd7)
    - prepare test for handling the 'unborn' lsrefs extension (547e450)
    - fix: support for proper identification of '.' remote paths in `reference::remote::Name` (b219033)
    - `Repository::branch_remote_name()` returns `reference::remote::Name`. (449ff06)
    - failing test for us setting up remote information after cloning (07efbce)
    - update docs (c788b51)
    - refactor (7bd5263)
    - definitely write all non-symbolic refs into packed-refs (b62d5b4)
    - auto-pack references when creating them during clone (a9a621e)
    - refactor (728f688)
    - use `tempfile` via `git-testools` (2c9edff)
    - failing test to show we don't pack refs yet (58cc01a)
    - sort out last test-case to assure setting symbolic refs is safe (d06900d)
    - adjust to changes in `git-ref` (669249a)
    - assure that inital refs are placed into the correct spot (3e4c0cb)
    - and show that we don't manage to write the reflog for some reason (a70a6aa)
    - the first successful test showing that we can write symbolic refs (2330305)
    - figure out more details on how to handle symbolic refs just enough (86a18bd)
    - finally figure out how symbolic ref updates should work (376829a)
    - first step towards supporting writing of symbolic refs locally (61cd430)
    - failing test to check for presence of remote HEAD (2f649e9)
    - thanks clippy (767fb7b)
    - Use correct diff algorithm when diffing text (6fe93c2)
    - refactor (71c6a20)
    - be specific about the kind of `diff::Error`, moving it to `diff::for_each::Error`. (71f15fc)
    - initial support for obtaining the `diff.algorithm` lazily (f362ab2)
    - refactor (af0c28d)
    - proper reflog entries for all other updated refs during cloning (ff4412e)
    - show that HEAD's referent also has the correct reflog (c25cb00)
    - the first test to prove that HEAD reflogs are correct (1e7fd4e)
    - canonicalize URL right away for it to manifest in the changelog (3cfe13d)
    - Query of `core.logAllRefUpdates` is now fallible. (072f5bc)
    - Fully reload in-memory configuration after configuration changes… (bc5b4e7)
    - allow to re-read the logallrefupdates config after overrides (ff06de4)
    - re-apply overrides more correctly after clone, however… (372e9d4)
    - validate that the remote HEAD branch overrides local init.defaultBranch settings (1c3dd3a)
    - assure stored file urls are absolute (5d7a055)
    - make it possible to clone empty remote repositories (e97eeda)
    - refactor (d29bb62)
    - test for cloning empty repositories (0aa97fe)
    - checkout returns index checkout result (2ef8d53)
    - avoid showing thread progress during clone-pack-resolution (056f4dd)
    - `create::into(…)` takes `create::Kind` to determine if it's bare or not. (2bece79)
    - less noisy way of writing trait bounds (b593806)
    - upgrade to `prodash` v21 (a0655dc)
    - don't allow non-bare repositories to be initialized into non-empty directories. (f869b22)
    - assure the reflog settings aren't permanently overidden during init/fetch (bc5e3e4)
    - Make it possible to ignore specs that don't match when iterating mappings. (bc991ff)
    - `init_bare()` now creates the destination directory if it doesn't exist. (91baefa)
    - first rough sketch of `gix clone` (23a5e8b)
    - the first working checkout as per simple simple test (9ce28ac)
    - finally perform actual checkout, but test fails without clear reason (3821b4f)
    - prepare attribute-group setup as far as possible. (f5e2eeb)
    - build correct path for `$HOME/.config/…` files. (5c11b84)
    - sketch access to the attributes file, realize that there is an issue to be fixed first (0081e2f)
    - refactor (28de9df)
    - read core.checkstat to configure the checkout as well (05a666c)
    - refactor (2f1c9dc)
    - don't be lenient towards paths that can't be interpolated in case of excludes file (3df7788)
    - collect all filesystem attributes affecting checkout (91b360f)
    - prepare to move checkout_options into `config` (e731757)
    - Use `core.askpass` when building the credential helper. (8b9fbd4)
    - obtain worker count from configuration; prep for more options (d947d8b)
    - write index from root tree and get ready for checkout (485a252)
    - prepare checkout, but needs to be able to create an index from a tree (e462bd5)
    - also update the HEAD reference after a fetch (e561021)
    - ref-map filtering now uses correct prefixes. (275e80f)
    - prepare for handling the server object-format correctly. (54c91eb)
    - a sketch to check and update the object format upon cloning. (ebfd7d6)
    - refactor (36c5ca9)
    - `remote::fetch::Prepare::handshake_outcome()` to obtain server information right after listing refs. (a9d1449)
    - refactor (992522a)
    - `open::Options::config_overrides()` for early configuration; support for `init.defaultBranch`. (0b5c53e)
 * **Uncategorized**
    - prepare changelogs prior to release (423af90)
    - Merge branch 'main' into write-sparse-index (upgrade to Rust 1.65) (5406630)
    - fix tests on windows (f2a8a45)
    - thanks clippy (04cfa63)
    - Merge branch 'main' into write-sparse-index (c4e6849)
    - make fmt (ea2136b)
    - Merge branch 'gix-clone' (def53b3)
    - thanks clippy (3495c56)
    - fix build and docs (971fe0c)
    - diff algorithm is controlled by git configuration `diff.algorithm` (b1edb9e)
    - Merge branch 'main' into gix-clone (fa27570)
    - Merge branch 'imra-diff' (f53f942)
    - fix docs (7d5fb3c)
    - thanks clippy (24254a4)
    - `DiffPlatform::text()` to `*::lines()`. (c6f92c1)
    - thanks clippy (d2f56df)
    - Merge branch 'main' into gix-clone (3b48317)
    - thanks clippy (93e7691)
    - automatically handle `.keep` files after writing a pack bundle to disk. (2eaf69e)
    - thanks clippy (6f8356c)
    - thanks clippy (700cc2d)
    - thanks clippy (73b6ec0)
    - thanks clippy (f22bdc0)
    - Merge branch 'main' into gix-clone (de4fe06)
    - thanks clippy (6ac6580)
    - thanks clippy (c6e7663)
    - Mark the upcoming usage of init.defaultBranch. (6225f35)
    - realize that we don't know hot to set HEAD correctly just yet (11d636c)
    - Merge branch 'fix-gix-index-from-tree' (da5f63c)
    - adjust to changes in `git-index` (fa6bcde)
    - fix docs (34b3e03)
    - sketch of method to checkout the main worktree (a88d5a3)
    - finish sketch of `fetch_and_checkout()` (e39a9d5)
    - sketch checkout API and refactor (9145a32)
    - `Tree::lookup_entry*()` returns attached `Entry` type. (7413a28)