### New Features

 - following includes is now non-fatal by default
   Otherwise it would be relatively easy to fail gitoxide startup,
   and we want to be closer to the behaviour in git which ignores
   most of the errors.
 - `File::from_git_dir()` as comfortable way to instantiate most complete git configuration.
 - `File` now compares actual content, ignoring whitespace and comments.
 - `File::new_environment_overrides()` to easily instantiate overrides from the environment.
 - `File::new_globals()` can instantiate non-local configuration with zero-configuration.
 - `Source::storage_location()` to know where files should be located.
 - `file::ValueMut::(section|into_section_mut)()` to go from value to the owning section.
   This can be useful if the value was obtained using `raw_value_mut()`.
 - `Source::is_in_repository()` to find out if a source is in the repository.
 - `parse::key` to parse a `remote.origin.url`-like key to identify a value
 - Add `File::detect_newline_style()`, which does at it says.
 - `File::frontmatter()` and `File::sections_and_postmatter()`.
 - `parse::Event::to_bstr_lossy()` to get a glimpse at event content.
 - `File::append()` can append one file to another rather losslessly.
   The loss happens as we, maybe for the wrong reasons, automatically
   insert newlines where needed which can only be done while we still know
   the file boundaries.
 - `file::Section::meta()` to access a section's metadata.
 - `File::sections()` to obtain an iterator over all sections, in order.
 - place spaces around `key = value` pairs, or whatever is used in the source configuration.
 - proper escaping of value bytes to allow round-tripping after mutation
 - whitespace in newly pushed keys is derived from first section value.
   That way, newly added key-value pairs look like they should assuming
   all keys have the same indentation as the first key in the section.
   
   If there is no key, then the default whitespace will be double-tabs
   like what's commmon in git.
 - `File::from_str()` implementation, to support `let config: File = "[core]".parse()?`
 - whitespace in mutable sections can be finely controlled, and is derived from existing sections
 - `parse::Header::new(…)` with sub-section name validation
 - Add `parse::(Event|section::Header|Comment)::write_to(…)`.
   Now it's possible to serialize these types in a streaming fashion and
   without arbitrarily enforcing UTF-8 on it
 - `serde1` feature to add limited serde support

### Bug Fixes

 - maintain insertion order of includes on per-section basis at least.
   Note that git inserts values right after the include directive,
   'splitting' the section, but we don't do that and insert new values
   after the section. Probably no issue in practice while keeping
   our implementation simple.
 - maintain newline format depending on what's present or use platform default.
   Previously implicit newlines when adding new sections or keys to
   sections was always `\n` which isn't correct on windows.
   
   Now the newline style is detected and used according to what's present,
   or in the lack of content, defaults to what's correct for the platform.
 - validate incoming conifguration keys when interpreting envirnoment variables.
 - `Boolean` can use numbers to indicate true or false, drops support for `one` and `zero`.
 - `file::MutableSection::remove()` now actually removes keys _and_ values.
 - `file::MutableMultiValue` escapes input values and maintains key separator specific whitespace.
 - value normalization (via `value::normalize()` handles escape sequences.
   The latter ones are `\n`, `\t` and `\b` which are the only supported
   ones in values of git-config files.
 - stable sort order for `File::sections_by_name_with_header()`
 - count newlines (for error display) in multi-line values as well
 - auto-normalize string values to support quote removal in case of strings.
   Related to https://github.com/starship/starship/pull/3883 .

### Other

 - <csr-id-32d5b3c695d868ba93755123a25b276bfbe55e0a/> :Events::from_bytes()` with `filter` support.

### Changed (BREAKING)

 - add `File::resolve_includes()` and move its error type to `file::includes`.
 - add `File::from_bytes_owned()` and remove `File::from_path_with_buf()`
 - remove `File::from_env_paths()`.
   It's replaced by its more comfortable `new_globals()`.
 - untangle `file::init::…` `Option` and `Error` types.
   This moves types to where they belong which is more specific instead
   of having a catch-all `Error` and `Options` type.
 - rename `parse::Comment::(comment_tag|comment)` to `::tag|text` and `parse::Section::section_header` to `::header`.
 - Associate `file::Metadata` with each `File`.
   This is the first step towards knowing more about the source of each
   value to filter them based on some properties.
   
   This breaks various methods handling the instantiation of configuration
   files as `file::Metadata` typically has to be provided by the caller
   now or be associated with each path to read configuration from.
 - rename `file::SectionBody` to `file::section::Body`.
 - Remove `File::sections_by_name_with_header()` as `::sections_by_name()` now returns entire sections.
 - create `resolve_includes` options to make space for more options when loading paths.
 - rename `path::Options` into `path::Context`.
   It's not an option if it's required context to perform a certain
   operation.
 - All accessors in `File` are now using `impl AsRef<str>` where possible for added comfort.
 - Much more comfortable API `file::*Mut` types thanks to `impl Into/AsRef`.
 - Rename `Mutable*` into `$1Mut` for consistency.
 - conform APIs of `file::MutableValue` and `file::MutableMultiValue`.
   There are more renames and removals than worth mentioning here given the
   current adoption of the crate.
 - rename `file::MutableSection::set_leading_space()` to `set_leading_whitespace()`.
   The corresponding getter was renamed as well to `leading_whitespace()`.
 - Enforce `parse::section::Header::new()` by making its fields private.
 - Add `File::write_to()` and `File::to_bstring()`; remove some `TryFrom` impls.
   Now `File` can be serialized in a streaming fashion and without the
   possibility for UTF8 conversion issues.
   
   Note that `Display` is still imlpemented with the usual caveats.
 - remove `Integer::to_bstring()` as well as some `TryFrom` impls.
   Note that it can still display itself like before via
   `std::fmt::Display`.
 - remove `Boolean::to_bstring()` along with a few `From` impls.
   These were superfluous and aren't useful in practice.
   Note that serialization is still implemented via `Display`.
 - allocation free `File::sections_by_name()` and `File::sections_by_name_with_header()`.
 - `Path::interpolate()` now takes `path::interpolate::Options` instead of three parameters.
 - remove `String` type in favor of referring to the `File::string()` method.
   The wrapper had no effect whatsoever except for adding complexity.
 - Simplify `Boolean` to be a wrapper around `bool`.
   Previously it tried hard not to degenerate information, making it a
   complicated type.
   
   However, in practice nobody cares about the exact makeup of the boolean,
   and there is no need to serialize a boolean faithfully either.
   
   Instead, those who want to set a value just set any value as a string,
   no need for type safety there, and we take care of escaping values
   properly on write.
 - Use bitflags for `color::Attribute` instead of `Vec` of enums.
   This is less wasteful and sufficient for git, so it should be sufficient
   for us, especially since attributes are indeed a set and declaring
   one twice has no effect.
 - simplify `Color` API.
   For now we only parse and serialize for display, but more uses are
   enabled when needed and trivially.
 - remove `parse::Events::from_path` and `File::at`
   The latter has been replaced with `File::from_path_with_buf(…)` and
   is a low-level way to load just a single config file, purposefully
   uncomfortable as it will not resolve includes.
   
   The initialization API will need some time to stabilize.
 - Slim down API surface of `parse::Events`.
   It's more of a 'dumb' structure now than before, merely present
   to facilitate typical parsing than something special on its own.
 - remove `File::new()` method in favor of `File::default()`.
 - rename `parse::event::List` to `parse::Events`
 - rename `parse::State` to `parse::event::List`
 - move `value::*` into the crate root, except for `Error` and `normalize_*()`.
 - rename `value::parse::Error` to `value::Error`.
 - rename `value::TrueVariant` to `value::boolean::True`
 - rename `IntegerSuffix` to `integer::Suffix`
 - rename `value::Color(Attribute|Value)` to `value::color::Attribute` and `value::color::Name`.
 - Turn `parse::ParseOrIoError` into `parse::state::from_path::Error`
 - rename `parse::ParsedComment` into `parse::Comment`
 - rename `parse::Section*` related types.
   These are now located in `section::*`.
 - rename `parse::Parser` to `parse::State`.
   Furthermore, make `State` the entry point for all parsing, removing
   all free-standing functions that returned a `State`.
 - rename `parser` module to `parse`
 - rename `normalize_cow()` to `normalize()` and move all `normalize*` functions from `values` to the `value` module
 - move `Path` from `values` to `value` module
 - Move `Boolean` and `String` from `values` into `value` module
 - move `values::Integer` into `value` module
 - move `Color` to own `value` module
 - remove `values::Bytes` - use `values::String` instead.
   Note that these values are always normalized and it's only possible
   to get a raw values using the `raw_value()` API.

### New Features (BREAKING)

 - Support for `lossy` load mode.
   There is a lot of breaking changes as `file::from_paths::Options` now
   became `file::init::Options`, and the same goes for the error type.
 - add `_filter()` versions to most access methods.
   That way it's possible to filter values by their origin.
   
   Note that the `remove_section()` methods now return the entire
   removed section, not just the body, which yields more information
   than before including section metadata.
 - section names are now validated.
 - filtering supportort for `parse::Events`.
   That way it's possible to construct Files which are not destined to be
   written back as they only keep events necessary for value access,
   greatly reducing allocations.
 - change mostily internal uses of [u8] to BString/BStr
 - Path-interpolation makes `home-dir` configurable.
   That way the caller has full control over how the environment is used,
   which also allows more fine-grained control over which config files
   can be included.

### Bug Fixes (BREAKING)

 - Simplify specifying keys when mutating config values.
 - `File::rename_section()` with validation of input arguments.
 - improve normalization; assure no extra copies are made on query.
   We now return our own content, rather than the originals with their
   lifetimes, meaning we bind lifetimes of returned values to our own
   `File` instance. This allows them to be referenced more often, and
   smarter normalization assures we don't copy in the simple cases
   either.
   
   More tests were added as well.
   This is breaking as lifetime changes can cause distruptions, and
   `values?_as()` was removed as well as it's somewhat duplicate
   to higher-level APIs and it wasn't tested at all.
 - Remove `git-config` test utilities from `git-path`.

### Other (BREAKING)

 - <csr-id-9cd99337333f5ef4b30e0ec9461fc087699576e6/> `File::raw_multi_value()` to `File::raw_values()`
 - <csr-id-0076dcf9b37f1d633bdad5573b40d34a9fbaba90/> `File::raw_multi_value_mut()` to `File::raw_values_mut()`
 - <csr-id-a8604a237782f8d60a185d4730db57bad81424a6/> `File::multi_value()` to `File::values()`.
   The latter is better in line with `string()/strings()`

### Commit Statistics

 - 314 commits contributed to the release over the course of 33 calendar days.
 - 39 days passed between releases.
 - 93 commits where understood as [conventional](https://www.conventionalcommits.org).
 - 1 unique issue was worked on: #331

### Thanks Clippy

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

### Commit Details

 * **#331**
    - final documentation review + adjustments prior to release candidate (06b86e0)
    - refactor (4dc6594)
    - exclude particular assertion which fails on the linux CI. (5e0f889)
    - first sketch of using configuration and environment variables for author/committer (330d0a1)
    - remove `Permissions` as there is no need for that here. (1954ef0)
    - following includes is now non-fatal by default (1bc96bf)
    - Allow to skip non-existing input paths without error (989603e)
    - `File::from_git_dir()` as comfortable way to instantiate most complete git configuration. (f9ce1b5)
    - Add a way to load multiple configuration files without allocating a read buffer (acb4520)
    - refactor (ec21e95)
    - move `Env` test utility into `git-testtools` (bd3f4d0)
    - refactor (b073e29)
    - another failing tests that can't be fixed without a refactor (e4d8fd7)
    - an attempt to hack newline handling into place for windows newlines (dac1463)
    - Serialize lossily-read configuration files correctly anyway. (cfda0c3)
    - multi-path include test (3d89a46)
    - refactor (8a7fb15)
    - fix windows tests (fbcf40e)
    - finally proper whitespace handling in all the right places for perfect roundtripping to/from string (97e5ede)
    - serializations maintains some invariants about whitespace where possible. (ee10dd5)
    - refactor (9c248ee)
    - `File` now compares actual content, ignoring whitespace and comments. (14a68a6)
    - maintain insertion order of includes on per-section basis at least. (6c1588f)
    - allow insertion of sections while preserving order (f5580a3)
    - a test showing that include ordering isn't correct compared to the including config. (4e47df5)
    - add `File::resolve_includes()` and move its error type to `file::includes`. (17c83d5)
    - add `File::from_bytes_owned()` and remove `File::from_path_with_buf()` (5221676)
    - make it necessary to deal with the possibility of no-input in `from_paths_metadata()` . (612645f)
    - Don't fail on empty input on the comfort level (61ecaca)
    - `File::new_environment_overrides()` to easily instantiate overrides from the environment. (7dadfd8)
    - prepare for supporting comfortable version of environment overrides (45c964a)
    - remove `File::from_env_paths()`. (98d45c2)
    - `File::new_globals()` can instantiate non-local configuration with zero-configuration. (146eeb0)
    - Classify `Source` in accordance for what git actually does. (97374e4)
    - `Source::storage_location()` to know where files should be located. (e701e05)
    - `file::ValueMut::(section|into_section_mut)()` to go from value to the owning section. (fff0884)
    - `Source::is_in_repository()` to find out if a source is in the repository. (f5f2d9b)
    - `parse::key` to parse a `remote.origin.url`-like key to identify a value (91e718f)
    - maintain newline format depending on what's present or use platform default. (f7bd2ca)
    - prepare for passing through newline (3c06f88)
    - Add `File::detect_newline_style()`, which does at it says. (26147a7)
    - fix docs (78e85d9)
    - a test for lossy File parsing (5e8127b)
    - 'lossy' is now inherited by includes processing (88c6b18)
    - untangle `file::init::…` `Option` and `Error` types. (230a523)
    - Support for `lossy` load mode. (d003c0f)
    - :Events::from_bytes()` with `filter` support. (32d5b3c)
    - try to fix attributes, once more (a50a396)
    - `File::frontmatter()` and `File::sections_and_postmatter()`. (0ad1c9a)
    - add `_filter()` versions to most access methods. (1ea26d8)
    - even better handling of newlines (50c1753)
    - refactor (df94c67)
    - rename `parse::Comment::(comment_tag|comment)` to `::tag|text` and `parse::Section::section_header` to `::header`. (3f3ff11)
    - `parse::Event::to_bstr_lossy()` to get a glimpse at event content. (fc7e311)
    - finally fix newline behaviour (c70e135)
    - Be smarter about which newline style to use by guessing it based onprior events (25ed92e)
    - `File::append()` can append one file to another rather losslessly. (09966a8)
    - A test to validate frontmatter isn't currently handled correctly when appending (4665e87)
    - `file::Section::meta()` to access a section's metadata. (56ae574)
    - refactor (d60025e)
    - `File::sections()` to obtain an iterator over all sections, in order. (6f97bf0)
    - Associate `file::Metadata` with each `File`. (6f4eea9)
    - rename `file::SectionBody` to `file::section::Body`. (b672ed7)
    - Remove `File::sections_by_name_with_header()` as `::sections_by_name()` now returns entire sections. (3bea26d)
    - A way to more easily set interpolation even without following includes. (9aa5acd)
    - create `resolve_includes` options to make space for more options when loading paths. (41b3e62)
    - rename `path::Options` into `path::Context`. (cabc8ef)
    - try to fix attributes, once more (207e483)
    - validate incoming conifguration keys when interpreting envirnoment variables. (0d07ef1)
    - try to fix filter settings, but it doesn't seem to work (9750b7a)
    - sketch new section and metadata (9cb9acb)
    - add `Source` type to allow knowing where a particular value is from. (c92d5c6)
    - `Boolean` can use numbers to indicate true or false, drops support for `one` and `zero`. (6b90184)
    - All accessors in `File` are now using `impl AsRef<str>` where possible for added comfort. (3de0cfd)
    - Much more comfortable API `file::*Mut` types thanks to `impl Into/AsRef`. (3d25fe6)
    - Rename `Mutable*` into `$1Mut` for consistency. (393b392)
    - `file::MutableSection::remove()` now actually removes keys _and_ values. (94dde44)
    - many more tests for MutableSection (ac843cb)
    - refactor (701266e)
    - conform APIs of `file::MutableValue` and `file::MutableMultiValue`. (0a7391a)
    - `file::MutableMultiValue` escapes input values and maintains key separator specific whitespace. (048b925)
    - place spaces around `key = value` pairs, or whatever is used in the source configuration. (5418bc7)
    - avoid extra copies when setting values and escaping them (a7eff01)
    - refactor (15cd1d2)
    - more empty-value tests (511985a)
    - default space is just a single tab, not two ones (7e03b83)
    - proper escaping of value bytes to allow round-tripping after mutation (8118644)
    - refactor (afa736a)
    - a few tests for `MutableValue` showing that it's too buggy right now (5e6f9d9)
    - rename `file::MutableSection::set_leading_space()` to `set_leading_whitespace()`. (83a0922)
    - whitespace in newly pushed keys is derived from first section value. (9f59356)
    - `File::from_str()` implementation, to support `let config: File = "[core]".parse()?` (db1f34d)
    - whitespace in mutable sections can be finely controlled, and is derived from existing sections (9157717)
    - refactor (c88eea8)
    - refactor (a0d6caa)
    - auto-compute whitespace for sections, even though it probably needs to be better than that (ee9ac95)
    - validation for Keys and header names (59ec7f7)
    - Simplify specifying keys when mutating config values. (a93a156)
    - `File::rename_section()` with validation of input arguments. (895ce40)
    - re-add newlines after multi-line values (9a2f597)
    - more header escaping tests (12cf005)
    - Enforce `parse::section::Header::new()` by making its fields private. (219cf7a)
    - `parse::Header::new(…)` with sub-section name validation (ae3895c)
    - section names are now validated. (cfd974f)
    - prepare for validation of `parse::section::Header` (00592f6)
    - basic escaping of subsection names during serialization (00d1a9b)
    - refactor (9fac8e0)
    - new roundtrip test on file level (78bb93c)
    - Add `File::write_to()` and `File::to_bstring()`; remove some `TryFrom` impls. (4f6cd8c)
    - remove `Integer::to_bstring()` as well as some `TryFrom` impls. (0e392f8)
    - remove `Boolean::to_bstring()` along with a few `From` impls. (b22732a)
    - Add `parse::(Event|section::Header|Comment)::write_to(…)`. (d087f12)
    - fix tests on windows (3d7fc18)
    - value normalization (via `value::normalize()` handles escape sequences. (f911707)
    - refactor normalization and more tests (cf3bf4a)
    - more escape characters for normalization (b92bd58)
    - review docs of `file::mutating` (2d5703e)
    - stable sort order for `File::sections_by_name_with_header()` (44dfec0)
    - review `file::raw` module (6acf4a4)
    - don't over-normalize in comfort layer - all values are normalized now (b979a3b)
    - docs for comfort level File API (eafc6ce)
    - review and refactor 'File::value' module (7aa8a0b)
    - allocation free `File::sections_by_name()` and `File::sections_by_name_with_header()`. (65c520c)
    - refactor (2abffd6)
    - refactor (539c2f6)
    - refactor (f1668e9)
    - refactor (2599680)
    - refactor (879fad5)
    - fix docs (b2b82da)
    - once again zero-allocation for SectionBodyIter (ba69124)
    - refactor (33efef6)
    - docs and refactor (700d6aa)
    - `Path::interpolate()` now takes `path::interpolate::Options` instead of three parameters. (ac57c44)
    - refactor `from_env` (c8693f9)
    - make fmt (a7d7751)
    - more doc adjustments (95fc20a)
    - review docs of 'parse' module; refactor (a361c7f)
    - refactor (8e84fda)
    - `File::raw_multi_value()` to `File::raw_values()` (9cd9933)
    - `File::raw_multi_value_mut()` to `File::raw_values_mut()` (0076dcf)
    - `File::multi_value()` to `File::values()`. (a8604a2)
    - remove `String` type in favor of referring to the `File::string()` method. (0915051)
    - fix docs (8fa7600)
    - refactor (b78e3fa)
    - change! Add `home_for_user` in `Path::interpolate(…)`. (f9e0ef3)
    - Simplify `Boolean` to be a wrapper around `bool`. (9cadc6f)
    - Use bitflags for `color::Attribute` instead of `Vec` of enums. (703922d)
    - A bitflag version of color attributes (23ec673)
    - refactor (4f21d1e)
    - simplify `Color` API. (3fc4ac0)
    - deduplicate (c1b9cd4)
    - first tests for colors specifically; fix space between tokens (e2bd055)
    - count newlines (for error display) in multi-line values as well (1ea919d)
    - zero-copy for section names (25b9760)
    - prepare for copy-on-write subsections (7474997)
    - another normalization case (637fe8f)
    - allow backspaces in value parser (199e546)
    - another failing test pointing at issues with normalization/escaping in parser (3c29321)
    - found failing test with complex multi-line value (117401d)
    - review `git-config::File` docs and rename some internal symbols (5a8b111)
    - more correctness for sub-section parsing (910af94)
    - reduce top-level docs (cdfb13f)
    - refactor; remove unnecessary docs (c95e0b9)
    - assure no important docs are missed (f5026fb)
    - filtering supportort for `parse::Events`. (6ba2f80)
    - deduplicate events instantiation (ead757c)
    - unclutter lifetime declarations (e571fdb)
    - remove redundant documentation about errors (183c7ae)
    - adjust to changes in `git-config` (c52cb95)
    - remove `parse::Events::from_path` and `File::at` (14149ee)
    - try to strike a balance between allocations and memory footprint (52bd1e7)
    - allocation-free parsing as callback is passed through (ed00e22)
    - foundation for allocation free (and smallvec free) parsing (307c1af)
    - Slim down API surface of `parse::Events`. (73adcee)
    - remove `File::new()` method in favor of `File::default()`. (2e47167)
    - a greatly simplified Events->File conversion (c5c4398)
    - fix docs (5022be3)
    - about 30% faster parsing due to doing no less allocations for section events (050d0f0)
    - allocation-free fuzzing, with optimized footprints (2e149b9)
    - allocation-free sections (d3a0c53)
    - allocation-free frontmatter (6c3f326)
    - remove last duplicate of top-level parse function (cd7a21f)
    - workaround lack of GAT! (4fb327c)
    - remove duplication of top-level parser (0f5c99b)
    - a minimally invasive sketch of a parse Delegate (5958ffb)
    - fix docs (2186456)
    - fix fuzz crash in parser (86e1a76)
    - rename `parse::event::List` to `parse::Events` (ea67650)
    - rename `parse::State` to `parse::event::List` (89f5fca)
    - update fuzz instructions and make it work (19300d5)
    - improve normalization; assure no extra copies are made on query. (4a01d98)
    - refactor; assure `normalize` doesn't copy unnecessarily (ce069ca)
    - normalize values in all the right places (91ba2dd)
    - avoid unnecessary clones (e684488)
    - adapt to changes in `git-config` (363a826)
    - move `value::*` into the crate root, except for `Error` and `normalize_*()`. (3cdb089)
    - rename `value::parse::Error` to `value::Error`. (748d921)
    - rename `value::TrueVariant` to `value::boolean::True` (7e8a225)
    - rename `IntegerSuffix` to `integer::Suffix` (8bcaec0)
    - rename `value::Color(Attribute|Value)` to `value::color::Attribute` and `value::color::Name`. (d085037)
    - refactor (a0f7f44)
    - refactor (0845c84)
    - keep str in value API (ef5b48c)
    - Keep BStr even though str could be used. (aeca6cc)
    - Turn `parse::ParseOrIoError` into `parse::state::from_path::Error` (a0f6252)
    - rename `parse::ParsedComment` into `parse::Comment` (b6b31e9)
    - Allocation-free hashing for section keys and names (44d0061)
    - allocation-free case-inequality tests for section keys and names (94608db)
    - rename `parse::Section*` related types. (239cbfb)
    - adjustments required due to changed in `git-config` (41bfd3b)
    - rename `parse::Parser` to `parse::State`. (60af4c9)
    - rename `parser` module to `parse` (3724850)
    - fix docs (b05aed1)
    - refactor (8bd9cd6)
    - refactor (90dd2ce)
    - fix docs (0d1be2b)
    - rename `normalize_cow()` to `normalize()` and move all `normalize*` functions from `values` to the `value` module (58b2215)
    - Documentation for feature flags (26e4a9c)
    - `serde1` feature to add limited serde support (5a8f242)
    - remove unused serde feature (66a8237)
    - move `Path` from `values` to `value` module (767bedc)
    - Move `Boolean` and `String` from `values` into `value` module (6033f3f)
    - move `values::Integer` into `value` module (d4444e1)
    - move `Color` to own `value` module (38f3117)
    - Make symlink tests so that they test real-path conversion (d4fbf2e)
    - adjustments due to breaking changes in `git_path` (4420ae9)
    - a test to validate relative includepaths aren't valid for includeIf (7d27dd5)
    - reuse the initialized environment for a little speed (6001613)
    - Also test against git baseline (adcddb0)
    - refactor (0229e25)
    - prevent race when calling `git` around `GIT_CONFIG_*` env vars (53efbf5)
    - remove duplicate gitdir tests that don't have a baseline (5c71394)
    - remove unmotivated forward-slash conversion (3af09e5)
    - improved slash/backslash handling on windows (a3b7828)
    - fix build warnings on windows (9d48b2f)
    - fix windows test (a922f0a)
    - refactor (d76aee2)
    - conforming subsection parsing handling backslashes like git (6366148)
    - Only copy pattern if required (b3a752a)
 * **Uncategorized**
    - Release git-hash v0.9.6, git-features v0.22.0, git-date v0.0.2, git-actor v0.11.0, git-glob v0.3.1, git-path v0.4.0, git-attributes v0.3.0, git-tempfile v2.0.2, git-object v0.20.0, git-ref v0.15.0, git-sec v0.3.0, git-config v0.6.0, git-credentials v0.3.0, git-diff v0.17.0, git-discover v0.3.0, git-index v0.4.0, git-mailmap v0.3.0, git-traverse v0.16.0, git-pack v0.21.0, git-odb v0.31.0, git-url v0.7.0, git-transport v0.19.0, git-protocol v0.18.0, git-revision v0.3.0, git-worktree v0.4.0, git-repository v0.20.0, git-commitgraph v0.8.0, gitoxide-core v0.15.0, gitoxide v0.13.0, safety bump 22 crates (4737b1e)
    - prepare changelog prior to release (3c50625)
    - thanks clippy (fddc720)
    - thanks fuzzy (15a379a)
    - thanks clippy (15fee74)
    - thanks clippy (0b05be8)
    - thanks clippy (693e304)
    - fix git-config/tests/.gitattributes (a741766)
    - Merge branch 'config-metadata' (453e9bc)
    - forced checkin to fix strange crlf issue (5d0a5c0)
    - thanks clippy (e5ba0f5)
    - thanks clippy (00bfbca)
    - thanks clippy (09e2374)
    - thanks clippy (e842633)
    - thanks clippy (3ca8027)
    - make fmt (aa9fdb0)
    - thanks clippy (c9a2390)
    - thanks clippy (badd00c)
    - make fmt (0700b09)
    - thanks clippy (b246f0a)
    - thanks clippy (08441de)
    - thanks clippy (8b29dda)
    - thanks clippy (cff6e01)
    - thanks clippy (f7be3b0)
    - thanks clippy (7a2a31e)
    - Allow backslashes in subsections (6f4f325)
    - fix build after changes to `git-url` and `git-config` (1f02420)
    - thanks clippy (9b6a67b)
    - remove `values::Bytes` - use `values::String` instead. (aa630ad)
    - change mostily internal uses of [u8] to BString/BStr (311d4b4)
    - Definitely don't unconditionally convert to forward slashes (146eb0c)
    - avoid panics and provide errors instead of just not matching (a0f842c)
    - try to fix git-config tests on windows even harder (16778d4)
    - try once more to get failing tests under control on windows (c26c2e9)
    - thanks clippy (27b2dde)
    - fix test with brute force; take some notes for later (2eda529)
    - Merge branch 'main' into cont_include_if (daa71c3)
    - Take GitEnv by ref. (937d7ee)
    - remove leftover debug printing (7d1cf34)
    - auto-normalize string values to support quote removal in case of strings. (1e71e71)
    - refactor (1d6ba9b)
    - avoid unwrap() more as the test code matures (c2d7e80)
    - refactor (b5c0b30)
    - Merge branch 'main' into cont_include_if (0e9df36)
    - make '..' related tests work (5f11318)
    - find a few cases that aren't according to spec by failing (and ignored) tests (f0e6ea9)
    - refactor (62e5396)
    - generally avoid using `target_os = "windows"` in favor of `cfg(windows)` and negations (91d5402)
    - Invoke git only when necessary (556c7cf)
    - Also use git_path::realpath() in other places that used canonicalize before (08af648)
    - Our own git_path::realpath doesn't have the questionmark? issue on windows (cfe196b)
    - fix windows tests (47f10fe)
    - more debugging for windows failures (e0a72e6)
    - no need for serial anymore (34bb715)
    - Make a note to be sure we use the home-dir correctly in git-repository; avoid `dirs` crate (0e8cf19)
    - finally all tests work without the need for dirs::home_dir() (180ce99)
    - refactor (00ba5d8)
    - refactor (0eb7ced)
    - Path-interpolation makes `home-dir` configurable. (edd2267)
    - refactor (aab9865)
    - Change last test to new simplified symlink  setup (a40e3c9)
    - refactor (67677b0)
    - assure the IDE doesn't confuse a module with a test (7be0b05)
    - refactor (1203a14)
    - refactor (a721efe)
    - refactor (2c8c6e5)
    - refactor (eb0ace1)
    - refactor (8f8f873)
    - Merge branch 'main' into cont_include_if (41ea8ba)
    - Release git-path v0.3.0, safety bump 14 crates (400c9be)
    - Remove `git-config` test utilities from `git-path`. (c9933c0)
    - Add repo_dir to EnvOverwrite. (ed5c442)
    - Use EnvOverwrite struct. (f2e124f)
    - tempdir lives long enough for sure. (a41002f)
    - Disable symlink tests on windows. (8de6b3d)