Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.31.0 (2023-10-12)

A maintenance release without user-facing changes.

Commit Statistics

  • 2 commits contributed to the release over the course of 6 calendar days.
  • 17 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

  • Uncategorized

0.30.0 (2023-09-24)

Chore

  • add more test cases to pin behaviour around string and path handling. This is important to know how to consistently handle empty strings - should they not be present? Or should they be flagged as error?

    The answer here is that the caller has to deal with it, as we report these values if they are present which only requires an equals sign.

Commit Statistics

  • 4 commits contributed to the release over the course of 15 calendar days.
  • 16 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates (7891fb1)
    • Prepare changelogs prior to release (8a60d5b)
    • Merge branch ‘path-config’ (9c528dc)
    • Add more test cases to pin behaviour around string and path handling. (db0c401)

0.29.0 (2023-09-08)

New Features

  • remove log dependency in favor of gix-trace

Bug Fixes (BREAKING)

  • use dyn trait where possible. This reduces compile time due to avoiding duplication.

Commit Statistics

  • 9 commits contributed to the release over the course of 17 calendar days.
  • 17 days passed between releases.
  • 2 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

  • Uncategorized
    • Release gix-date v0.8.0, gix-hash v0.13.0, gix-features v0.34.0, gix-actor v0.26.0, gix-object v0.36.0, gix-path v0.10.0, gix-glob v0.12.0, gix-attributes v0.18.0, gix-packetline-blocking v0.16.6, gix-filter v0.4.0, gix-fs v0.6.0, gix-commitgraph v0.20.0, gix-hashtable v0.4.0, gix-revwalk v0.7.0, gix-traverse v0.32.0, gix-worktree-stream v0.4.0, gix-archive v0.4.0, gix-config-value v0.14.0, gix-tempfile v9.0.0, gix-lock v9.0.0, gix-ref v0.36.0, gix-sec v0.10.0, gix-config v0.29.0, gix-prompt v0.7.0, gix-url v0.23.0, gix-credentials v0.19.0, gix-diff v0.35.0, gix-discover v0.24.0, gix-ignore v0.7.0, gix-index v0.24.0, gix-macros v0.1.0, gix-mailmap v0.18.0, gix-negotiate v0.7.0, gix-pack v0.42.0, gix-odb v0.52.0, gix-pathspec v0.2.0, gix-packetline v0.16.6, gix-transport v0.36.0, gix-protocol v0.39.0, gix-revision v0.21.0, gix-refspec v0.17.0, gix-submodule v0.3.0, gix-worktree v0.25.0, gix-worktree-state v0.2.0, gix v0.53.0, safety bump 39 crates (8bd0456)
    • Prepare changelogs for release (375db06)
    • Merge branch ‘optimizations’ (6135a5e)
    • Optimize internal gix usage for faster compile time (9d33e2f)
    • Remove log dependency in favor of gix-trace (2b8d09f)
    • Merge branch dynification (f658fcc)
    • Use dyn trait where possible. (072ee32)
    • Thanks clippy (5044c3b)
    • Merge branch ‘gix-submodule’ (363ee77)

0.28.0 (2023-08-22)

Chore

  • switch nom to winnow in remaining uses in gix-object, gix-ref, and gix-actor for ~20% more performance. It's likely that over time, these parsers will get even faster due to improvements to winnow. Thanks, Ed Page, for single-handedly performing this transition.

Bug Fixes

  • fix incorrect s/git-config/gix-config/ 3a861c8f049f6502d3bcbdac752659aa1aeda46a just blindly replaced any occurence of “git-config” or “git_config” with “gix-config”/“gix_config”.

    There is no such thing as a gix-config file. gix-config is a git-config file parser.

  • regression that could cause non-linear parsing behaviour.

Commit Statistics

  • 17 commits contributed to the release over the course of 4 calendar days.
  • 15 days passed between releases.
  • 3 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-date v0.7.3, gix-hash v0.12.0, gix-features v0.33.0, gix-actor v0.25.0, gix-object v0.35.0, gix-path v0.9.0, gix-glob v0.11.0, gix-quote v0.4.7, gix-attributes v0.17.0, gix-command v0.2.9, gix-packetline-blocking v0.16.5, gix-filter v0.3.0, gix-fs v0.5.0, gix-commitgraph v0.19.0, gix-hashtable v0.3.0, gix-revwalk v0.6.0, gix-traverse v0.31.0, gix-worktree-stream v0.3.0, gix-archive v0.3.0, gix-config-value v0.13.0, gix-tempfile v8.0.0, gix-lock v8.0.0, gix-ref v0.35.0, gix-sec v0.9.0, gix-config v0.28.0, gix-prompt v0.6.0, gix-url v0.22.0, gix-credentials v0.18.0, gix-diff v0.34.0, gix-discover v0.23.0, gix-ignore v0.6.0, gix-bitmap v0.2.7, gix-index v0.22.0, gix-mailmap v0.17.0, gix-negotiate v0.6.0, gix-pack v0.41.0, gix-odb v0.51.0, gix-pathspec v0.1.0, gix-packetline v0.16.5, gix-transport v0.35.0, gix-protocol v0.38.0, gix-revision v0.20.0, gix-refspec v0.16.0, gix-submodule v0.2.0, gix-worktree v0.24.0, gix-worktree-state v0.1.0, gix v0.52.0, gitoxide-core v0.31.0, gitoxide v0.29.0, safety bump 41 crates (30b2761)
    • Update changelogs prior to release (f23ea88)
    • Merge branch ‘gix-submodule’ (8f3f358)
    • More cleanup of test crates (73c685a)
    • Just fmt (0d258f4)
    • Switch nom to winnow in remaining uses in gix-object, gix-ref, and gix-actor for ~20% more performance. (ef54aab)
    • Upgrade winnow to latest patch release (8c41848)
    • Merge pull request #988 from not-my-profile/fix-gix-config-sub (7735047)
    • Fix incorrect s/git-config/gix-config/ (c51c8da)
    • Regression that could cause non-linear parsing behaviour. (66dadf8)
    • Further clarify the expectation after changing is_err() assertion to is_ok() (a743c5d)
    • Propogate value errors to user (0f9af3f)
    • Improve config performance on degenerate cases (5366f79)
    • Improve inner loop of config value parsing (e208362)
    • Upgrade to Winnow 0.5 (3f8c91f)
    • Switch gix to winnow 0.3 (ee75de1)
    • Add fuzz-issue for reproduction (510192e)

0.27.0 (2023-08-07)

Bug Fixes (BREAKING)

  • File::push_section() is now infallible. Previously it used a Result even though it couldn't fail anywhere.

Commit Statistics

  • 6 commits contributed to the release over the course of 3 calendar days.
  • 4 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-glob v0.10.2, gix-date v0.7.2, gix-validate v0.8.0, gix-object v0.34.0, gix-ref v0.34.0, gix-config v0.27.0, gix-commitgraph v0.18.2, gix-revwalk v0.5.0, gix-revision v0.19.0, gix-refspec v0.15.0, gix-submodule v0.1.0, safety bump 18 crates (4604f83)
    • Prepare changelogs prior to release of gix-submodule (f3c4311)
    • Merge branch ‘submodules’ (b629f8a)
    • File::push_section() is now infallible. (d091c78)
    • Merge branch ‘dev-on-linux’ (6b4a303)
    • Fix various tests to run properly on linux (ef8ccd9)

0.26.2 (2023-08-02)

The parsing switches from nom to winnow, which eases maintenance and improves performances.

Commit Statistics

  • 28 commits contributed to the release over the course of 7 calendar days.
  • 10 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-actor v0.24.2, gix-object v0.33.2, gix-ref v0.33.3, gix-config v0.26.2, gix-prompt v0.5.5, gix-odb v0.50.2, gix-transport v0.34.2, gix-protocol v0.37.0, gix-worktree v0.23.1, gix v0.51.0, safety bump 3 crates (231ac1c)
    • Prepare additional changelogs (db63815)
    • Prepare changelogs (e4d2890)
    • Merge branch ‘config’ (daf3389)
    • Minor refactor (224121b)
    • Make clippy happy (1a1e2f5)
    • Pull newline counting out of inner loop (beac408)
    • Remove value_impl's explicit start index tracking (63552ee)
    • Remove value_impl's explicit end index tracking (8db009c)
    • Upgrade to winnow 0.5 (fe997c8)
    • Remove error creation shorthand (8581d25)
    • Simplify value_impl escape parsing (9e6ba0f)
    • Clarify value_impl index handling (b790948)
    • Flatten value_impl (5fc1096)
    • Normalize parser lifetimes (083efbc)
    • Simplify section (5f2b68e)
    • Simplify section_header (0fe3854)
    • Simplify sub_section parsing (d2e06c8)
    • Simplify simpler parsers (edb4e04)
    • Simplify error creation (bdcd379)
    • Prepare for winnow 0.5 upgrade (42ae766)
    • Move off deprecated parsers (b0287a8)
    • Upgrade to winnow 0.4 (a639994)
    • Prepare for winnow 0.4 upgrade (cfc642a)
    • Move off of remaining deprecated parsers (18bee03)
    • Switch to Parser inherent parsers (6ac1b37)
    • Switch to type-native winnow parsers (5b3ae94)
    • Switch gix-config to winnow 0.3 (3d9ae21)

0.26.1 (2023-07-22)

A maintenance release without user-facing changes.

Commit Statistics

  • 2 commits contributed to the release.
  • 3 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-config v0.26.1, gix v0.50.0 (d34a4ea)
    • Fix gix-config dependency versions (dbeb68d)

0.26.0 (2023-07-19)

A maintenance release without user-facing changes.

Commit Statistics

  • 4 commits contributed to the release over the course of 4 calendar days.
  • 19 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

  • Uncategorized
    • Release gix-features v0.32.0, gix-actor v0.24.0, gix-glob v0.10.0, gix-attributes v0.15.0, gix-commitgraph v0.18.0, gix-config-value v0.12.4, gix-fs v0.4.0, gix-object v0.33.0, gix-ref v0.33.0, gix-config v0.26.0, gix-command v0.2.7, gix-url v0.21.0, gix-credentials v0.17.0, gix-diff v0.33.0, gix-discover v0.22.0, gix-filter v0.1.0, gix-ignore v0.5.0, gix-revwalk v0.4.0, gix-traverse v0.30.0, gix-index v0.21.0, gix-mailmap v0.16.0, gix-negotiate v0.5.0, gix-pack v0.40.0, gix-odb v0.50.0, gix-transport v0.34.0, gix-protocol v0.36.0, gix-revision v0.18.0, gix-refspec v0.14.0, gix-worktree v0.22.0, gix v0.49.0 (68ae3ff)
    • Adjust package versions (by cargo-smart-release) (c70e54f)
    • Prepare changelogs prior to release (e4dded0)
    • Thanks clippy (3ef32af)

0.25.1 (2023-06-29)

A maintenance release without user-facing changes.

Commit Statistics

  • 3 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-glob v0.9.1, gix-attributes v0.14.1, gix-config-value v0.12.3, gix-ref v0.32.1, gix-sec v0.8.3, gix-config v0.25.1, gix-url v0.20.1, gix-credentials v0.16.1, gix-discover v0.21.1, gix-ignore v0.4.1, gix-pack v0.39.1, gix-odb v0.49.1, gix-worktree v0.21.1, gix v0.48.0 (69c6a36)
    • Prepare changelogs prior to release (c143cf4)
    • Align usage of gix-path across all crates (73c1292)

0.25.0 (2023-06-29)

A maintenance release without user-facing changes.

Commit Statistics

  • 3 commits contributed to the release over the course of 6 calendar days.
  • 6 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-date v0.7.0, gix-trace v0.1.2, gix-actor v0.23.0, gix-commitgraph v0.17.1, gix-utils v0.1.4, gix-object v0.32.0, gix-ref v0.32.0, gix-config v0.25.0, gix-diff v0.32.0, gix-discover v0.21.0, gix-hashtable v0.2.3, gix-revwalk v0.3.0, gix-traverse v0.29.0, gix-index v0.20.0, gix-mailmap v0.15.0, gix-negotiate v0.4.0, gix-pack v0.39.0, gix-odb v0.49.0, gix-protocol v0.35.0, gix-revision v0.17.0, gix-refspec v0.13.0, gix-worktree v0.21.0, gix v0.48.0, safety bump 20 crates (27e8c18)
    • Prepare changelogs prior to release (00f96fb)
    • Upgrade criterion (285ce12)

0.24.0 (2023-06-22)

Chore

  • Add clippy::redundant-closure-for-method-calls lint

Commit Statistics

  • 6 commits contributed to the release over the course of 10 calendar days.
  • 15 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-date v0.6.0, gix-hash v0.11.3, gix-trace v0.1.1, gix-features v0.31.0, gix-actor v0.22.0, gix-path v0.8.2, gix-glob v0.9.0, gix-quote v0.4.5, gix-attributes v0.14.0, gix-chunk v0.4.3, gix-commitgraph v0.17.0, gix-config-value v0.12.2, gix-fs v0.3.0, gix-tempfile v7.0.0, gix-utils v0.1.3, gix-lock v7.0.0, gix-validate v0.7.6, gix-object v0.31.0, gix-ref v0.31.0, gix-sec v0.8.2, gix-config v0.24.0, gix-command v0.2.6, gix-prompt v0.5.2, gix-url v0.20.0, gix-credentials v0.16.0, gix-diff v0.31.0, gix-discover v0.20.0, gix-hashtable v0.2.2, gix-ignore v0.4.0, gix-bitmap v0.2.5, gix-revwalk v0.2.0, gix-traverse v0.28.0, gix-index v0.19.0, gix-mailmap v0.14.0, gix-negotiate v0.3.0, gix-pack v0.38.0, gix-odb v0.48.0, gix-packetline v0.16.3, gix-transport v0.33.0, gix-protocol v0.34.0, gix-revision v0.16.0, gix-refspec v0.12.0, gix-worktree v0.20.0, gix v0.47.0, gitoxide-core v0.29.0, gitoxide v0.27.0, safety bump 30 crates (ea9f942)
    • Prepare changelogs prior to release (18b0a37)
    • Merge branch ‘corpus’ (aa16c8c)
    • Change MSRV to 1.65 (4f635fc)
    • Merge branch ‘help-874-redundant-closures’ (fe59956)
    • Add clippy::redundant-closure-for-method-calls lint (bcad5c2)

0.23.0 (2023-06-06)

Chore

  • inline format args

Commit Statistics

  • 10 commits contributed to the release over the course of 38 calendar days.
  • 40 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-date v0.5.1, gix-hash v0.11.2, gix-features v0.30.0, gix-actor v0.21.0, gix-path v0.8.1, gix-glob v0.8.0, gix-quote v0.4.4, gix-attributes v0.13.0, gix-chunk v0.4.2, gix-commitgraph v0.16.0, gix-config-value v0.12.1, gix-fs v0.2.0, gix-tempfile v6.0.0, gix-utils v0.1.2, gix-lock v6.0.0, gix-validate v0.7.5, gix-object v0.30.0, gix-ref v0.30.0, gix-sec v0.8.1, gix-config v0.23.0, gix-command v0.2.5, gix-prompt v0.5.1, gix-url v0.19.0, gix-credentials v0.15.0, gix-diff v0.30.0, gix-discover v0.19.0, gix-hashtable v0.2.1, gix-ignore v0.3.0, gix-bitmap v0.2.4, gix-traverse v0.26.0, gix-index v0.17.0, gix-mailmap v0.13.0, gix-revision v0.15.0, gix-negotiate v0.2.0, gix-pack v0.36.0, gix-odb v0.46.0, gix-packetline v0.16.2, gix-transport v0.32.0, gix-protocol v0.33.0, gix-refspec v0.11.0, gix-worktree v0.18.0, gix v0.45.0, safety bump 29 crates (9a9fa96)
    • Prepare changelogs prior to release (8f15cec)
    • Merge branch ‘fix-docs’ (420553a)
    • Cleaning up documentation (2578e57)
    • Merge branch ‘auto-clippy’ (dbf8aa1)
    • Auto-fix as many ‘range-plus-one’ lints as possible (4795fcf)
    • Merge branch ‘main’ into auto-clippy (3ef5c90)
    • Merge pull request #864 from nyurik/lint-fmt (279dc09)
    • Inline format args (dbc6cbb)
    • Release gix-ref v0.29.1 (13e01f5)

0.22.0 (2023-04-27)

A maintenance release without user-facing changes.

Commit Statistics

  • 3 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-path v0.8.0, gix-glob v0.7.0, gix-attributes v0.12.0, gix-config-value v0.12.0, gix-ref v0.29.0, gix-sec v0.8.0, gix-config v0.22.0, gix-prompt v0.5.0, gix-url v0.18.0, gix-credentials v0.14.0, gix-discover v0.18.0, gix-ignore v0.2.0, gix-pack v0.35.0, gix-odb v0.45.0, gix-transport v0.31.0, gix-protocol v0.32.0, gix-refspec v0.10.1, gix-worktree v0.17.0, gix v0.44.1 (7ebc9f7)
    • Prepare changelogs prior to release (0135158)
    • Bump gix-path v0.8.0, safety bump 20 crates (gix set to 0.44.1 manually) (43ebaf2)

0.21.0 (2023-04-26)

Bug Fixes

  • use home in env::home_dir()
  • Use gix-path for obtaining some shared directories as base for path generation. This will make system wide configuration available on windows at least when using the migw builds.

New Features (BREAKING)

  • Rename serde1 cargo feature to serde and use the weak-deps cargo capability. With it it's possible to not automatically declare all optional dependencies externally visible features, and thus re-use feature names that oterwise are also a crate name.

    Previously I thought that serde1 is for future-proofing and supporting multiple serde versions at the same time. However, it‘s most definitely a burden I wouldn’t want anyway, so using serde seems to be the way to go into the future.

Commit Statistics

  • 14 commits contributed to the release over the course of 23 calendar days.
  • 27 days passed between releases.
  • 3 commits were understood as conventional.
  • 1 unique issue was worked on: #814

Commit Details

  • #814
    • Rename serde1 cargo feature to serde and use the weak-deps cargo capability. (b83ee36)
  • Uncategorized
    • Release gix-hash v0.11.1, gix-path v0.7.4, gix-glob v0.6.0, gix-attributes v0.11.0, gix-config-value v0.11.0, gix-fs v0.1.1, gix-tempfile v5.0.3, gix-utils v0.1.1, gix-lock v5.0.1, gix-object v0.29.1, gix-ref v0.28.0, gix-sec v0.7.0, gix-config v0.21.0, gix-prompt v0.4.0, gix-url v0.17.0, gix-credentials v0.13.0, gix-diff v0.29.0, gix-discover v0.17.0, gix-hashtable v0.2.0, gix-ignore v0.1.0, gix-bitmap v0.2.3, gix-traverse v0.25.0, gix-index v0.16.0, gix-mailmap v0.12.0, gix-pack v0.34.0, gix-odb v0.44.0, gix-packetline v0.16.0, gix-transport v0.30.0, gix-protocol v0.31.0, gix-revision v0.13.0, gix-refspec v0.10.0, gix-worktree v0.16.0, gix v0.44.0, safety bump 7 crates (91134a1)
    • Prepare changelogs prior to release (30a1a71)
    • Merge branch ‘utkarshgupta137/main’ (74cb5ee)
    • Use home in env::home_dir() (13edfe9)
    • Release gix-utils v0.1.0, gix-hash v0.11.0, gix-date v0.5.0, gix-features v0.29.0, gix-actor v0.20.0, gix-object v0.29.0, gix-archive v0.1.0, gix-fs v0.1.0, safety bump 25 crates (8dbd0a6)
    • Merge branch ‘main’ into dev (cdef398)
    • Rename the serde1 feature to serde (19338d9)
    • Merge branch ‘main’ into dev (23ee47f)
    • Merge branch ‘worktree-stack’ (3d47919)
    • Use gix-path for obtaining some shared directories as base for path generation. (da9009f)
    • Merge branch ‘patch-1’ (d0052c1)
    • Upgrade various dependencies (f9ad837)
    • Upgrade serial-test to v2 (6932017)

0.20.1 (2023-03-30)

Documentation

  • fix minor typos
  • fix minor typos

Bug Fixes

  • $HOME detection on windows

Commit Statistics

  • 8 commits contributed to the release over the course of 3 calendar days.
  • 4 days passed between releases.
  • 3 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-path v0.7.3, gix-config-value v0.10.2, gix-config v0.20.1, gix-discover v0.16.2, gix-index v0.15.1, gix-odb v0.43.1, gix-packetline v0.15.1, gix-protocol v0.30.2, gix-worktree v0.15.2, gix v0.43.1 (38eed1d)
    • Merge branch ‘pascalkuthe/main’ (d47cebe)
    • Refactor (d1e5e12)
    • $HOME detection on windows (d1bd513)
    • Fix minor typos (02c4659)
    • Fix minor typos (cc48c35)
    • Release gix-ref v0.27.2 (e965b18)
    • Be sure to clear the buffer after an intermediate read error happened and we ignore it. (877951a)

0.20.0 (2023-03-26)

Bug Fixes

New Features (BREAKING)

  • allow to ignore IO errors when reading configuration files. Sometimes, IO errors can occour consistently when reading from certain paths (on Windows, really), and it should be possible to not only see which path that is but also to ignore them entirely.

    Now IO errors contain the path of the failed configuration file. There is also a new option flag to ignore errors (off by default).

Commit Statistics

  • 8 commits contributed to the release over the course of 15 calendar days.
  • 15 days passed between releases.
  • 2 commits were understood as conventional.
  • 1 unique issue was worked on: #790

Commit Details

  • #790
    • Binary config output parsing can now deal with quotes on windows. (603776e)
    • Allow to ignore IO errors when reading configuration files. (e55f4ee)
  • Uncategorized
    • Release gix-tempfile v5.0.2, gix-validate v0.7.4, gix-config v0.20.0, gix-prompt v0.3.3, gix-diff v0.28.1, gix-discover v0.16.1, gix-pack v0.33.2, gix-transport v0.29.1, gix-protocol v0.30.1, gix-revision v0.12.1, gix-worktree v0.15.1, gix v0.43.0, safety bump gix v0.43.0 (5dc1f9f)
    • Prepare changelogs prior to release (3016a28)
    • Merge branch ‘fix-790’ (ee36e5b)
    • Less dependencies for tests (via serial_test no default features) (8f2accd)
    • Correct more typos with typos tool. (2321eb9)
    • Merge branch ‘fix-cred-helper’ (01277a6)

0.19.0 (2023-03-10)

A maintenance release without user-facing changes.

Commit Statistics

  • 2 commits contributed to the release.
  • 6 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-tempfile v5.0.0, gix-lock v5.0.0, gix-ref v0.27.0, gix-config v0.19.0, gix-url v0.16.0, gix-credentials v0.12.0, gix-discover v0.16.0, gix-index v0.15.0, gix-pack v0.33.0, gix-odb v0.43.0, gix-transport v0.28.0, gix-protocol v0.29.0, gix-worktree v0.15.0, gix v0.41.0, safety bump 12 crates (29a0870)
    • Prepare changelogs prior to release (e06f5f5)

0.18.0 (2023-03-04)

A maintenance release without user-facing changes.

Commit Statistics

  • 3 commits contributed to the release.
  • 3 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-attributes v0.10.0, gix-ref v0.26.0, gix-config v0.18.0, gix-url v0.15.0, gix-credentials v0.11.0, gix-discover v0.15.0, gix-index v0.14.0, gix-mailmap v0.11.0, gix-odb v0.42.0, gix-transport v0.27.0, gix-protocol v0.28.0, gix-revision v0.12.0, gix-refspec v0.9.0, gix-worktree v0.14.0, gix v0.39.0 (93e75fe)
    • Prepare changelogs prior to release (895e482)
    • Release gix-features v0.28.0, gix-actor v0.19.0, gix-object v0.28.0, gix-diff v0.28.0, gix-traverse v0.24.0, gix-pack v0.32.0, safety bump 20 crates (0f411e9)

0.17.0 (2023-03-01)

A maintenance release without user-facing changes.

Commit Statistics

  • 6 commits contributed to the release over the course of 3 calendar days.
  • 8 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-tempfile v4.1.0, gix-lock v4.0.0, gix-ref v0.25.0, gix-config v0.17.0, gix-url v0.14.0, gix-credentials v0.10.0, gix-diff v0.27.0, gix-discover v0.14.0, gix-hashtable v0.1.2, gix-bitmap v0.2.2, gix-traverse v0.23.0, gix-index v0.13.0, gix-mailmap v0.10.0, gix-pack v0.31.0, gix-odb v0.41.0, gix-transport v0.26.0, gix-protocol v0.27.0, gix-revision v0.11.0, gix-refspec v0.8.0, gix-worktree v0.13.0, gix v0.38.0, safety bump 6 crates (ea9fd1d)
    • Release gix-features v0.27.0, gix-actor v0.18.0, gix-quote v0.4.3, gix-attributes v0.9.0, gix-object v0.27.0, gix-ref v0.25.0, gix-config v0.17.0, gix-url v0.14.0, gix-credentials v0.10.0, gix-diff v0.27.0, gix-discover v0.14.0, gix-hashtable v0.1.2, gix-bitmap v0.2.2, gix-traverse v0.23.0, gix-index v0.13.0, gix-mailmap v0.10.0, gix-pack v0.31.0, gix-odb v0.41.0, gix-transport v0.26.0, gix-protocol v0.27.0, gix-revision v0.11.0, gix-refspec v0.8.0, gix-worktree v0.13.0, gix v0.38.0 (e6cc618)
    • Adjust manifests prior to release (addd789)
    • Prepare changelogs prior to release (94c99c7)
    • Prepare for git-tempfile release (56c005b)
    • Make fmt (8ef1cb2)

0.16.3 (2023-02-21)

A maintenance release to restore MSRV (1.64) support.

Commit Statistics

  • 3 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-config v0.16.3, gix v0.37.1 (a3c283f)
    • Prepare changelogs prior to release (362d659)
    • Restore msrv compatibility by removing sole if let ... else (9160659)

0.16.2 (2023-02-20)

New Features

  • add File::write_to_filter() to have a filter select the section to write. This way, one can selectively write sections to a file, based on the section's origin or other meta-data.

    For convenience sake, most mutating methods on SectionMut can now be chained as well.

  • add File::set_meta() to affect what metadata new sections receive. That way it's possible to better control the metadata associated with new sections, given that the config file metadata may not truly reflect its identity anymore since it can be a combination from many different files with various sources.

Bug Fixes

  • note that crates have been renamed from git-* to gix-*. This also means that the git-* prefixed crates of the gitoxide project are effectively unmaintained. Use the crates with the gix-* prefix instead.

    If you were using git-repository, then gix is its substitute.

  • File::section(...) could panic due to invlid expectation. This has been fixed to prevent panics.

  • compatibility with bstr v1.3, use *.as_bytes() instead of .as_ref(). as_ref() relies on a known target type which isn‘t always present. However, once there is only one implementation, that’s no problem, but when that changes compilation fails due to ambiguity.

Commit Statistics

  • 3 commits contributed to the release.
  • 3 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-date v0.4.3, gix-hash v0.10.3, gix-features v0.26.5, gix-actor v0.17.2, gix-glob v0.5.5, gix-path v0.7.2, gix-quote v0.4.2, gix-attributes v0.8.3, gix-validate v0.7.3, gix-object v0.26.2, gix-ref v0.24.1, gix-config v0.16.2, gix-command v0.2.4, gix-url v0.13.3, gix-credentials v0.9.2, gix-discover v0.13.1, gix-index v0.12.4, gix-mailmap v0.9.3, gix-pack v0.30.3, gix-packetline v0.14.3, gix-transport v0.25.6, gix-protocol v0.26.4, gix-revision v0.10.4, gix-refspec v0.7.3, gix-worktree v0.12.3, gix v0.36.1 (9604783)
    • Compatibility with bstr v1.3, use *.as_bytes() instead of .as_ref(). (135d317)
    • Release gix-glob v0.5.4 (c56d336)

0.16.1 (2023-02-17)

A maintenance release without user-facing changes.

Other (BREAKING)

  • File::set_raw_[multi_]value() to ::set_existing_raw_[multi_]value. This makes clear that the method will fail if the value doesn't yet exist.
  • File::raw_multi_value() to File::raw_values()
  • File::raw_multi_value_mut() to File::raw_values_mut()
  • File::multi_value() to File::values(). The latter is better in line with string()/strings()

Bug Fixes (BREAKING)

  • subsections are identified as &BStr in entire API. Technically they can be any value (except for newlines and unescaped double quotes), and these values might be paths and everything that comes with it, like illformed UTF8. In order to be able to represent everything that git can represent, we don't enforce UTF8 anymore for subsection names.

    Note that section names and key names are required to be valid UTF8 (and even alphanumeric ascii), which makes illformed UTF8 very unlikely there.

  • 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.

New Features (BREAKING)

  • transfer knowledge about configuration and its usage into the type system. That way it's possible to use configuration overrides, even though ultimately being strings, in a type-safe manner and leverage code-completion while at it.

    In that process, we also change Repository::(committer|Author)() to return Option<Result<...>> to be able to account for date parse errors.

  • File::new_section() and related now returns their id as well. That way it's possible to more easily interact with it later, for instance when one wants to delete it.

  • upgrade edition to 2021 in most crates. MSRV for this is 1.56, and we are now at 1.60 so should be compatible. This isn‘t more than a patch release as it should break nobody who is adhering to the MSRV, but let’s be careful and mark it breaking.

    Note that git-features and git-pack are still on edition 2018 as they make use of a workaround to support (safe) mutable access to non-overlapping entries in a slice which doesn't work anymore in edition 2021.

  • file::SectionMut::push() now supports values without key-value separator. These make a difference as those without = are considered boolean true. Currently pushing onto a section is the only way to write them.

  • 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.

  • Make realpath() easier to use by introducing realpath_opt(). That way there is consistency about how many symlinks to follow.

Changed (BREAKING)

  • Add Kind::GitInstallation for a way to obtain special git-installation configuration paths. Note that these are lazily cached as they call the git binary.

  • upgrade bstr to 1.0.1

  • Add File::set_raw_value() to unconditionally set single values, and make the value itself easier to provide.

  • 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.

  • File::len() -> File::num_values() The same is true for Section::len() which now is Section::num_values().

  • GitConfig::from_paths(…, <option>) is now owned. The type is Copy, so no need to pass it by reference.

  • remove values::*Error in favor of value::parse::Error. This makes it easier to work with errors in practice, we are either interested in the value that failed to parse to try something else or want a nice user message.

    Having one decode error type facilitates that.

  • switch from quickerror to thiserror. This allows for generic types for sources of errors and allows to workaround a limitation with associated type constraints in the MSRV of 1.54.

    Using thiserror makes this work and brings the crate more closely to the rest of the gitoxide crates (which now prefer thiserror over quickerror).

  • remove all get_ prefixes from methods That way the API is more idiomatic and fits better into the existing gitoxide crates.

  • use lookup::Error and lookup::existing::Error Use the newly introduced structured error to replace the ‘catch-all’ GitConfigError while getting closer to naming conventions in other gitoxide crates.

Refactor

  • remove git_config::values::Value; use Bytes in its place.

Other

  • :Events::from_bytes()withfilter` support.

  • Include benches in crate to allow publishing to work

  • remove clippy-cargo lint until there are no warnings Please feel free to re-add once all other git-* crates have been adjusted. It's interesting to see how a crate lint spills into the workspace.

    Personally I am surprised that the keywords value is supposed to repeat the crate name as it seems redundant.

  • remove redundant lines from git-ignore file

Bug Fixes

  • File::section(...) could panic due to invlid expectation. This has been fixed to prevent panics.

  • File::boolean() now correctly handles implicit bools across sections. This means it will return the last implicit value as true, instead of ignoring it to fall back onto an explicit boolean value that might be false.

  • file::SectionMut::push() now properly creates empty values. Previously, when calling .push("key", None), the resulting internal state would be slighly wrong causing certain invariants and expectations to be unfulfilled even though it might have looked OK to most users.

    Now it will uphold the invariant for empty values, those without an = character.

  • greatly improve whitespace handling when removing values. Previously, newlines would remain past a value, and whitespace could remain before one.

    Now both are removed to simulate removing an actual line.

  • File::remove_section() was fixed to allow re-adding a similarly named section. We also add File::remove_section_by_id() to make it possible to remove specific sections.

  • Properly handle boolean values such that a is true but a= is false. This is even consistent when no booleans are used, such that a has no value as if it is not present, it's only available for booleans which must be specified.

  • Keep track of a severe limitation and prepare tests for fixing it. This also changes behaviour, but merely removes a hack in Boolean which considered empty strings true, even though they are supposed to be false.

  • 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 .

  • Use std::env::var_os() to avoid potential decode errors

  • fix usage example in README.md

New Features

  • add File::write_to_filter() to have a filter select the section to write. This way, one can selectively write sections to a file, based on the section's origin or other meta-data.

    For convenience sake, most mutating methods on SectionMut can now be chained as well.

  • add File::set_meta() to affect what metadata new sections receive. That way it's possible to better control the metadata associated with new sections, given that the config file metadata may not truly reflect its identity anymore since it can be a combination from many different files with various sources.

  • SectionMut::push_with_comment(key, comment) to add a new variable with a comment. This is useful for providing more information about a value at hand, especially if it was added programmatically and then shows up in the configuration.

  • Add the Source::EnvOverride to have a place for ‘terminal’ overrides. That way environment variables represented via git-configuration can be integrated into git configuration, making clearer what's going to happen even when looking at the configuration via gix config.

    The implementation has to be careful though about assureing there is no more specific configuration key, like http.<URL>.proxy that would override the one from the environment, which always has the final word.

  • comfort API like string_by_key(key) takes a key like "remote.origin.url", add section_by_key("remote.origin") as well. That way it's the most comfortable way to query values and very similar to how git does it, too.

    Additionally, sections can be obtained by section key, both mutably and immutably for completeness.

  • read worktree specific configuration of main worktrees. Supporting this is useful when interacting with worktrees that have been created with sparse worktree support, which moves some configuration values into those for the worktree at hand.

    Note that linked worktrees are not supported - for that use git-repository instead.

  • add parse::section::header::is_valid_subsection() function. It can be useful to validate subsection names without having to construct an entire Header (which also includes a name).

  • Add various methods to iterate sections along with their id, and mutate them. As section names are not unique, it was previously not possible to iterate sections and then mutate them as one wouldn't be able to refer to the exact section that was just traversed, after all, there can be many sections named remote "origin".

    With the new methods it's possible to uniquely refer to each section for mutation and removal.

  • File::set_raw_value_filter() to set values only in sections passing a filter.

  • File::section_mut_or_create_new_filter() to allow chosing which sections to add values to.

  • File::section_mut_or_create_new(…) to obtain an existing or new section for mutation.

  • use docsrs feature in code to show what is feature-gated automatically on docs.rs

  • pass --cfg docsrs when compiling for https://docs.rs

  • 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

  • GitConfig::integers() Get multiple fully validated integer values, with their suffix interpreted and checked for overflow.

  • add GitConfig::integer() A way to quickly obtain a valid integer with suffixes resolved and overflow checked.

  • GitConfig::strings() for multi-value strings.

  • GitConfig::path() for direct access to paths. Very similar to string(), but as path, whose query can never fail.

  • support for try_value(), boolean() and string() access. Support for a convenient way of knowing if a value does or doesn't exist via try_value()`, which can only fail if the conversion fails.

    Lastly, string() is a special case which doesn't fail as there is no conversion, and boolean() allows to obtain a plain boolean value if it was a valid boolean representation.

  • new hierarchical errors for value lookup

  • add suppport for android Do not interpolate ~user/ on Android (Termux). There is no meaning of it. It is single user system.

  • Add git_config::values::Path for a typesafe git path Add a Path type to the git_config::values which can be interpolated according to gits own path interpolation rules.

  • implement a draft for subsection fetching

    • introduce method sections_by_name_with_header to allow iterating over tuples of section header and section body

Documentation

  • fix typos

Chore

  • uniformize deny attributes

Changed

  • git-config now uses git-config-value.
  • GitConfig::from_paths(<paths>, …) accepts more inputs <paths> is more flexible and is easier to use.

Commit Statistics

Commit Details

  • #198
    • Maintenance release note to avoid being fully generated (56ef363)
    • Changlog for git-config (abdfe58)
    • Use correct title for github release to match name of tag (90f39ad)
  • #213
    • Refactor (e906d37)
    • Remove environment variable after test passed (7a3ff29)
  • #241
    • Improve usability of the pack-cache environment variable (47d8162)
  • #254
    • Adjust changelogs prior to git-pack release (6776a3f)
  • #266
  • #298
    • Upgrade dependencies (b039d39)
    • Prepare changelog prior to release (fc8f52d)
    • Support for simple BString powered string values (2381c5d)
    • Minor refactor (2f0234c)
  • #301
    • Update changelogs prior to release (84cb256)
    • Finished refactoring (4163c7f)
    • Refactor (a359cfd)
    • GitConfig::from_paths(…, <option>) is now owned. (c7fcb5e)
    • Use std::env::var_os() to avoid potential decode errors (36e2fc0)
    • GitConfig::from_paths(<paths>, …) accepts more inputs (b04a346)
    • Refactor unconditional include tests and stabilize them (72a5a02)
    • GitConfig::integers() (4726bb5)
    • Add GitConfig::integer() (ae22a4d)
    • Refactor (c139479)
    • Refactor (4408f17)
    • GitConfig::strings() for multi-value strings. (bfc2637)
    • Refactor (7ea17e1)
    • Initial refactoring (43a34a5)
    • Some notes about of ‘path’ will soon have to be amended with more safety (97e53f6)
    • GitConfig::path() for direct access to paths. (7c75eac)
    • Remove values::*Error in favor of value::parse::Error. (38dfdcf)
    • A sketch of what can be a general value decode error (4612fca)
    • Remove IntegerSuffix error which wasn't ever used (732c0fa)
    • Support for try_value(), boolean() and string() access. ([dc3dc3b`](https://github.com/Byron/gitoxide/commit/dc3dc3b41b5de3ec17429769747bf99bb2bdd03d))
    • Fix build warnings (4496b5a)
    • Switch from quickerror to thiserror. (a98a7a7)
    • Remove all #[inline] attributes (8aef1d3)
    • Remove all get_ prefixes from methods (a86b254)
    • Use lookup::Error and lookup::existing::Error (f9aaac1)
    • New hierarchical errors for value lookup (13554f8)
    • Adapt to changes in git-path (cc2d810)
    • Adapt to all changes in git-path with bstr support (f158648)
    • Use git-path crate instead of git_features::path (47e607d)
    • Make fmt (5fc5459)
    • Make fmt (50ff7aa)
  • #319
    • Update changelog prior to release (858ec8c)
    • Adjust docs (38c201c)
    • An example to illustrate the problem (c47e8f8)
  • #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()withfilter support. ([32d5b3c`](https://github.com/Byron/gitoxide/commit/32d5b3c695d868ba93755123a25b276bfbe55e0a))
    • 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)
    • Refactor (92fe564)
    • Remove untested error case in integger parsing (2b21a35)
    • Validate underflow as well (83eda34)
    • Case-insensitive integer suffix handling (9034bd4)
    • Refactor tests (f943d2a)
    • Update changelog prior to release (1d07934)
    • Minor refactor of tests (ebe551f)
    • Refactor (845fe37)
    • Refactor include path recursion logic (2862a07)
    • Ignore subsections when resolving include.path keys (baa300f)
    • Assure from_env() include paths only use paths of the correct key (0d84ce8)
    • Remove unnecessary doc comments; remove unused field in Options (e94ded4)
    • Add TODO to not forget reworking the ‘fs’ module (0b032e4)
    • Use the same BOM bytes as in git-attributes (7204755)
    • Refactor (85be984)
    • Add from_paths::Options::default(); minor refactor (bcd038c)
    • Implement include.path support (a392988)
    • Fix docs (3e7ef3e)
    • More descriptive test names (049b243)
    • Turn PathError into path::interpolate::Error; refactor (27085e0)
    • Work with std::path::* during interpolation (f0ff687)
    • Fix build (f6d9693)
    • Make Path::interpolate() more useful by returning an actual PathBuf (86aa7b3)
    • Don't interpolate on Path creation due to missing context (a071ce8)
    • Add AsRef and Deref for values::Path; additional assertions (0666a35)
    • Add git_config::values::Path for a typesafe git path (e4d6685)
  • #386
    • Sketch Permissions for git-config (8443330)
  • #404
    • Add test to clarify underscores in sections headers aren't allowed (47079d4)
  • #436
  • #450
    • File::boolean() now correctly handles implicit bools across sections. (839f776)
    • Be sure to globally order section ids when traversed by name. (21a5229)
    • file::SectionMut::push() now properly creates empty values. (7d92c61)
    • Refactor (041ede9)
    • Adapt to changes in git-ref (d40beb3)
    • Add Kind::GitInstallation for a way to obtain special git-installation configuration paths. (27fb1ce)
    • Upgrade bstr to 1.0.1 (99905ba)
    • git-config now uses git-config-value. (5ad2965)
    • Port tests over as well (9b28df2)
    • Properly handle boolean values such that a is true but a= is false. (08c50a4)
    • Fix config tests on windows (7a871c2)
    • Keep track of a severe limitation and prepare tests for fixing it. (7c58516)
    • file::SectionMut::push() now supports values without key-value separator. (b6cd6ac)
    • Refactor (5415449)
    • File::set_raw_value_filter() to set values only in sections passing a filter. (9937d0e)
    • File::section_mut_or_create_new_filter() to allow chosing which sections to add values to. (17455c9)
    • Add File::set_raw_value() to unconditionally set single values, and make the value itself easier to provide. (2b2357e)
    • File::section_mut_or_create_new(…) to obtain an existing or new section for mutation. (5902f54)
    • File::set_raw_[multi_]value() to ::set_existing_raw_[multi_]value. (69ec594)
  • #470
    • Update changelogs prior to release (caa7a1b)
  • #482
  • #691
  • #737
    • Add File::write_to_filter() to have a filter select the section to write. (4b424ab)
    • Add File::set_meta() to affect what metadata new sections receive. (3fa86e1)
    • File::section(...) could panic due to invlid expectation. (8836f5a)
  • #XXX
    • Prepare changelogs prior to release (8c0bca3)
  • Uncategorized
    • Release gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (41d57b9)
    • Release gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (e313112)
    • Release gix-features v0.26.4, gix-actor v0.17.1, gix-glob v0.5.3, gix-path v0.7.1, gix-quote v0.4.1, gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (6efd0d3)
    • Release gix-date v0.4.2, gix-hash v0.10.2, gix-features v0.26.4, gix-actor v0.17.1, gix-glob v0.5.3, gix-path v0.7.1, gix-quote v0.4.1, gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (6ccc88a)
    • Merge branch ‘rename-crates’ into inform-about-gix-rename (c9275b9)
    • Rename git-testtools to gix-testtools (b65c33d)
    • Adjust to renaming of git-pack to gix-pack (1ee81ad)
    • Adjust to renaming of git-odb to gix-odb (476e2ad)
    • Adjust to renaming of git-index to gix-index (86db5e0)
    • Adjust to renaming of git-diff to gix-diff (49a163e)
    • Adjust to renaming of git-commitgraph to gix-commitgraph (f1dd0a3)
    • Adjust to renaming of git-mailmap to gix-mailmap (2e28c56)
    • Adjust to renaming of git-discover to gix-discover (53adfe1)
    • Adjust to renaming of git-lfs to gix-lfs (b9225c8)
    • Adjust to renaming of git-chunk to gix-chunk (59194e3)
    • Adjust to renaming of git-bitmap to gix-bitmap (75f2a07)
    • Adjust to renaming for git-protocol to gix-protocol (823795a)
    • Adjust to renaming of git-refspec to gix-refspec (c958802)
    • Adjust to renaming of git-revision to gix-revision (ee0ee84)
    • Adjust to renaming of git-transport to gix-transport (b2ccf71)
    • Adjust to renaming of git-credentials to gix-credentials (6b18abc)
    • Adjust to renaming of git-prompt to gix-prompt (6a4654e)
    • Adjust to renaming of git-command to gix-command (d26b8e0)
    • Adjust to renaming of git-packetline to gix-packetline (5cbd22c)
    • Adjust to renaming of git-worktree to gix-worktree (73a1282)
    • Adjust to renamining of git-hashtable to gix-hashtable (26a0c98)
    • Adjust to renamining of git-worktree to gix-worktree (108bb1a)
    • Adjust to renaming of git-url to gix-url (b50817a)
    • Adjust to renaming of git-date to gix-date (9a79ff2)
    • Adjust to renamining of git-attributes to gix-attributes (4a8b3b8)
    • Adjust to renaminig of git-quote to gix-quote (648025b)
    • Adjust to renaming of git-config to gix-config (3a861c8)
    • Rename git-config to gix-config (dd6d63e)
    • Adjust to renaming of git-ref to gix-ref (1f5f695)
    • Adjust to renaming of git-lock to gix-lock (2028e78)
    • Adjust to renaming of git-tempfile to gix-tempfile (b6cc3eb)
    • Adjust to renaming of git-object to gix-object (fc86a1e)
    • Adjust to renaming of git-actor to gix-actor (4dc9b44)
    • Adjust to renaming of git-validate to gix-validate (5e40ad0)
    • Adjust to renaming of git-hash to gix-hash (4a9d025)
    • Adjust to renaming of git-features to gix-features (e2dd68a)
    • Adjust to renaming of git-glob to gix-glob (35b2a3a)
    • Adjust to renaming of git-sec to gix-sec (eabbb92)
    • Adapt to renaming of git-path to gix-path (d3bbcfc)
    • Adjust to rename of git-config-value to gix-config-value (622b3e1)
    • Release git-features v0.26.4 (109f434)
    • Release git-features v0.26.3 (1ecfb7f)
    • Release git-config v0.16.1, git-revision v0.10.3, gix v0.35.0 (74390ba)
    • Prepare changelogs prior to release (446f866)
    • Merge branch ‘rename-crates’ (6461c3d)
    • Rename git-repository to gix (7bed2a9)
    • Release git-date v0.4.2, git-hash v0.10.2, git-features v0.26.2, git-actor v0.17.1, git-glob v0.5.3, git-path v0.7.1, git-quote v0.4.1, git-attributes v0.8.2, git-config-value v0.10.1, git-tempfile v3.0.2, git-lock v3.0.2, git-validate v0.7.2, git-object v0.26.1, git-ref v0.24.0, git-sec v0.6.2, git-config v0.16.0, git-command v0.2.3, git-prompt v0.3.2, git-url v0.13.2, git-credentials v0.9.1, git-diff v0.26.1, git-discover v0.13.0, git-hashtable v0.1.1, git-bitmap v0.2.1, git-traverse v0.22.1, git-index v0.12.3, git-mailmap v0.9.2, git-chunk v0.4.1, git-pack v0.30.2, git-odb v0.40.2, git-packetline v0.14.2, git-transport v0.25.4, git-protocol v0.26.3, git-revision v0.10.2, git-refspec v0.7.2, git-worktree v0.12.2, git-repository v0.34.0, safety bump 3 crates (c196d20)
    • Prepare changelogs prior to release (7c846d2)
    • Merge branch ‘Lioness100/main’ (1e544e8)
    • Fix typos (39ed9ed)
    • Upgrade serial-test to 1.0 (9ab3e25)
    • Thanks clippy (bac57dd)
    • Merge branch ‘adjustments-for-cargo’ (7bba270)
    • Transfer knowledge about configuration and its usage into the type system. (2faad43)
    • Break cyclical dev dependencies (1fea18f)
    • Release git-date v0.4.1, git-features v0.26.1, git-glob v0.5.2, git-attributes v0.8.1, git-tempfile v3.0.1, git-ref v0.23.1, git-sec v0.6.1, git-config v0.15.1, git-prompt v0.3.1, git-url v0.13.1, git-discover v0.12.1, git-index v0.12.2, git-mailmap v0.9.1, git-pack v0.30.1, git-odb v0.40.1, git-transport v0.25.3, git-protocol v0.26.2, git-revision v0.10.1, git-refspec v0.7.1, git-worktree v0.12.1, git-repository v0.33.0 (5b5b380)
    • Prepare changelogs prior to release (93bef97)
    • Merge branch ‘patch-1’ (b93f0c4)
    • Fix underflow (4fc214a)
    • Thanks clippy (b34c9fe)
    • Thanks clippy (9e04685)
    • Uprgade serial_test to 0.10 (8623b5a)
    • Release git-ref v0.23.0, git-config v0.15.0, git-command v0.2.2, git-diff v0.26.0, git-discover v0.12.0, git-mailmap v0.9.0, git-pack v0.30.0, git-odb v0.40.0, git-transport v0.25.2, git-protocol v0.26.1, git-revision v0.10.0, git-refspec v0.7.0, git-worktree v0.12.0, git-repository v0.32.0 (ffb5b6a)
    • Prepare changelogs prior to release (4381a03)
    • Merge branch ‘signature-resolution’ (0f7edc1)
    • Adapt to changes in git-repository (d9b7df9)
    • Release git-date v0.4.0, git-actor v0.17.0, git-object v0.26.0, git-traverse v0.22.0, git-index v0.12.0, safety bump 15 crates (0e3d0a5)
    • Release git-features v0.26.0, git-actor v0.16.0, git-attributes v0.8.0, git-object v0.25.0, git-ref v0.22.0, git-config v0.14.0, git-command v0.2.1, git-url v0.13.0, git-credentials v0.9.0, git-diff v0.25.0, git-discover v0.11.0, git-traverse v0.21.0, git-index v0.11.0, git-mailmap v0.8.0, git-pack v0.29.0, git-odb v0.39.0, git-transport v0.25.0, git-protocol v0.26.0, git-revision v0.9.0, git-refspec v0.6.0, git-worktree v0.11.0, git-repository v0.31.0, safety bump 24 crates (5ac9fbe)
    • Prepare changelogs prior to release (30d8ca1)
    • Release git-date v0.3.1, git-features v0.25.0, git-actor v0.15.0, git-glob v0.5.1, git-path v0.7.0, git-attributes v0.7.0, git-config-value v0.10.0, git-lock v3.0.1, git-validate v0.7.1, git-object v0.24.0, git-ref v0.21.0, git-sec v0.6.0, git-config v0.13.0, git-prompt v0.3.0, git-url v0.12.0, git-credentials v0.8.0, git-diff v0.24.0, git-discover v0.10.0, git-traverse v0.20.0, git-index v0.10.0, git-mailmap v0.7.0, git-pack v0.28.0, git-odb v0.38.0, git-packetline v0.14.1, git-transport v0.24.0, git-protocol v0.25.0, git-revision v0.8.0, git-refspec v0.5.0, git-worktree v0.10.0, git-repository v0.30.0, safety bump 26 crates (e6b9906)
    • Prepare chnagelogs prior to git-repository release (7114bbb)
    • Merge branch ‘main’ into read-split-index (c57bdde)
    • Merge branch ‘adjustments-for-cargo’ (083909b)
    • Adjust to changes in git-testtools (4eb842c)
    • Make fmt (747008d)
    • Merge branch ‘main’ into http-config (6b9632e)
    • File::new_section() and related now returns their id as well. (2b36d99)
    • SectionMut::push_with_comment(key, comment) to add a new variable with a comment. (5b9bffe)
    • Release git-features v0.24.1, git-actor v0.14.1, git-index v0.9.1 (7893502)
    • Add the Source::EnvOverride to have a place for ‘terminal’ overrides. (e4bf8f0)
    • Thanks clippy (10f4f21)
    • Comfort API like string_by_key(key) takes a key like "remote.origin.url", add section_by_key("remote.origin") as well. (5fa9546)
    • Subsections are identified as &BStr in entire API. (0c98ec8)
    • Merge branch ‘main’ into http-config (bcd9654)
    • Release git-hash v0.10.0, git-features v0.24.0, git-date v0.3.0, git-actor v0.14.0, git-glob v0.5.0, git-path v0.6.0, git-quote v0.4.0, git-attributes v0.6.0, git-config-value v0.9.0, git-tempfile v3.0.0, git-lock v3.0.0, git-validate v0.7.0, git-object v0.23.0, git-ref v0.20.0, git-sec v0.5.0, git-config v0.12.0, git-command v0.2.0, git-prompt v0.2.0, git-url v0.11.0, git-credentials v0.7.0, git-diff v0.23.0, git-discover v0.9.0, git-bitmap v0.2.0, git-traverse v0.19.0, git-index v0.9.0, git-mailmap v0.6.0, git-chunk v0.4.0, git-pack v0.27.0, git-odb v0.37.0, git-packetline v0.14.0, git-transport v0.23.0, git-protocol v0.24.0, git-revision v0.7.0, git-refspec v0.4.0, git-worktree v0.9.0, git-repository v0.29.0, git-commitgraph v0.11.0, gitoxide-core v0.21.0, gitoxide v0.19.0, safety bump 28 crates (b2c301e)
    • Prepare changelogs prior to release (e4648f8)
    • Merge branch ‘version2021’ (0e4462d)
    • Read worktree specific configuration of main worktrees. (7d7bd02)
    • Refactor (747b9e9)
    • Upgrade edition to 2021 in most crates. (3d8fa8f)
    • Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates (0c253b1)
    • Prepare changelogs prior to release (fe5721f)
    • Order matters (166f349)
    • Update docs (aab6a33)
    • Naive approach to loading worktree configs… (9d8cb1f)
    • Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates (d071583)
    • Prepare changelogs prior to release (423af90)
    • Merge branch ‘main’ into write-sparse-index (upgrade to Rust 1.65) (5406630)
    • Thanks clippy (04cfa63)
    • Adjust memory-size expectations to deal with Rust 1.65 and below (a93c470)
    • Merge branch ‘main’ into write-sparse-index (c4e6849)
    • Make fmt (ea2136b)
    • Merge branch ‘gix-clone’ (def53b3)
    • Thanks clippy (d2f56df)
    • Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates (104d922)
    • Prepare changelogs for release (d232567)
    • Merge branch ‘fix-smart-release’ (aa80b60)
    • Make fmt (7b9c065)
    • Merge branch ‘clone’ (507dc7e)
    • Add parse::section::header::is_valid_subsection() function. (aa5d66f)
    • Greatly improve whitespace handling when removing values. (9c1e639)
    • Add various methods to iterate sections along with their id, and mutate them. (5df2a2a)
    • File::remove_section() was fixed to allow re-adding a similarly named section. (e533993)
    • Improve clarity docs related to mutating sections (769e897)
    • Merge branch ‘main’ into new-http-impl (702a161)
    • Merge branch ‘fetch-pack’ (3c49400)
    • Merge branch ‘fix-git-features’ (82fd251)
    • Merge branch ‘diff’ (25a7726)
    • Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates (29a043b)
    • Make fmt (429cccc)
    • Merge branch ‘filter-refs’ (3773b92)
    • Merge branch ‘filter-refs’ (fd14489)
    • Release git-features v0.22.6 (c9eda72)
    • Upgrade all dependencies, except for windows (2968181)
    • Make fmt (535e967)
    • Merge branch ‘filter-refs-by-spec’ (5c05198)
    • Merge branch ‘main’ into filter-refs-by-spec (9aa1d3d)
    • Release git-features v0.22.4, git-url v0.8.0, safety bump 4 crates (1d4600a)
    • Merge branch ‘main’ into index-from-tree (bc64b96)
    • Release git-path v0.4.2, git-config-value v0.7.0 (c48fb31)
    • Merge branch ‘main’ into filter-refs-by-spec (cef0b51)
    • Release git-object v0.20.3, git-ref v0.15.4, git-config v0.7.1, git-diff v0.18.0, git-traverse v0.16.3, git-pack v0.22.0, git-odb v0.32.0, git-url v0.7.3, git-transport v0.19.3, git-protocol v0.19.1, git-refspec v0.1.1, git-repository v0.23.0, safety bump 6 crates (85a3bed)
    • Release git-attributes v0.3.3, git-ref v0.15.3, git-index v0.4.3, git-worktree v0.4.3, git-testtools v0.8.0 (baad4ce)
    • Release git-features v0.22.3, git-revision v0.4.4 (c2660e2)
    • Merge branch ‘main’ into filter-refs-by-spec (cfa1440)
    • Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates (4974eca)
    • Release git-path v0.4.1 (5e82346)
    • Merge branch ‘remote-ls-refs’ (39d585d)
    • Thanks clippy (2770431)
    • Merge branch ‘main’ into remote-ls-refs (e2ee3de)
    • Merge branch ‘docsrs-show-features’ (31c2351)
    • Use docsrs feature in code to show what is feature-gated automatically on docs.rs (b1c40b0)
    • Uniformize deny attributes (f7f136d)
    • Pass --cfg docsrs when compiling for https://docs.rs (5176771)
    • Merge branch ‘main’ into remote-ls-refs (bd5f3e8)
    • Release git-date v0.0.3, git-actor v0.11.1, git-attributes v0.3.1, git-tempfile v2.0.3, git-object v0.20.1, git-ref v0.15.1, git-config v0.6.1, git-diff v0.17.1, git-discover v0.4.0, git-bitmap v0.1.1, git-index v0.4.1, git-mailmap v0.3.1, git-traverse v0.16.1, git-pack v0.21.1, git-odb v0.31.1, git-packetline v0.12.6, git-url v0.7.1, git-transport v0.19.1, git-protocol v0.18.1, git-revision v0.4.0, git-worktree v0.4.1, git-repository v0.21.0, safety bump 5 crates (c96473d)
    • Prepare changelogs prior to reelase (c06ae1c)
    • Merge branch ‘submodule-open’ (8f5f3ab)
    • Release git-hash v0.9.7, git-features v0.22.1 (232784a)
    • Merge branch ‘main’ into write-index-v2 (a938986)
    • Merge branch ‘main’ into remote-ls-refs (de61c4d)
    • Thanks clippy (4bd747c)
    • Merge pull request #2 from SidneyDouw/main (ce885ad)
    • Merge branch ‘Byron:main’ into main (9b9ea02)
    • Merge branch ‘main’ into rev-parse-delegate (6da8250)
    • Commit strange changes to be able to do anything. (237b21d)
    • Merge branch ‘main’ into pathspec (7b61506)
    • Commit strange crlf-file that makes everything impossible (1dd9f9a)
    • Make fmt (47724c0)
    • Merge branch ‘kianmeng-fix-typos’ (4e7b343)
    • Fix typos (e9fcb70)
    • Release 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 (aa639d8)
    • 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)
    • Merge branch ‘config-cascade’ (f144eaf)
    • Thanks clippy (fddc720)
    • Thanks fuzzy (15a379a)
    • Thanks clippy (15fee74)
    • Thanks clippy (0b05be8)
    • Merge branch ‘config-sec-access’ (b420eba)
    • Merge branch ‘config-reduce-events’ (fd046f4)
    • 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)
    • Merge pull request #1 from Byron/main (085e76b)
    • Merge branch ‘config-comfort’ (84b98d9)
    • Thanks clippy (3ca8027)
    • Make fmt (aa9fdb0)
    • Merge branch ‘config-output’ (20e188f)
    • 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)
    • Merge branch ‘main’ into pathspec (f4fe879)
    • Try to fix git-config tests on windows even harder (16778d4)
    • Merge branch ‘main’ into pathspec (89ea12b)
    • 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)
    • Merge branch ‘normalize-values’ (4e8cc7a)
    • Remove leftover debug printing (7d1cf34)
    • Auto-normalize string values to support quote removal in case of strings. (1e71e71)
    • Refactor (02fba2c)
    • Refactor (1d6ba9b)
    • Avoid unwrap() more as the test code matures (c2d7e80)
    • Refactor (b5c0b30)
    • 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)
    • Release git-date v0.0.1, git-hash v0.9.5, git-features v0.21.1, git-actor v0.10.1, git-path v0.2.0, git-attributes v0.2.0, git-ref v0.14.0, git-sec v0.2.0, git-config v0.5.0, git-credentials v0.2.0, git-discover v0.2.0, git-pack v0.20.0, git-odb v0.30.0, git-url v0.6.0, git-transport v0.18.0, git-protocol v0.17.0, git-revision v0.2.1, git-worktree v0.3.0, git-repository v0.19.0, safety bump 13 crates (a417177)
    • Update changelogs prior to release (bb424f5)
    • Make fmt (cd4f727)
    • Temp ignore symlink tests. (ec40b94)
    • Fmt. (82ea726)
    • Use dirs::home_dir() (5767a50)
    • Try fix windows home. (393758e)
    • Add more tests. (db1204d)
    • Add debug output. (52db5e8)
    • Tests like git: https://github.com/git/git/blob/master/t/t1305-config-include.sh (c3a0454)
    • Start extracting gitdir tests cont. (22e5cbe)
    • Remove pwd crate dependency in favor of using libc directly (4adfa11)
    • Drop non-existent config paths before parsing (475d6fa)
    • Start extracting gitdir tests. (5aaf7ba)
    • Thanks clippy (cfa577f)
    • Refactor (da23958)
    • Finalize onbranch tests; remove mixed ones in favor of specific cases (26680c4)
    • Refactor (11c417f)
    • More tests for branch matching prior to making tests clearer (31e6db8)
    • Basic test-setup for more specialized tests (b4374d2)
    • Refactor (04da720)
    • Fix including .. path. (8891fea)
    • Fix case-insensitive. (ca05802)
    • Fix \ test. (ab555b5)
    • Fix tests on windows (bb3b4f0)
    • Refactor (e1ba36f)
    • Merge branch ‘main’ into svetli-n-cont_include_if (315c87e)
    • Refactor (e47fb41)
    • Refactor (56eadc8)
    • Refactor (0ccd8ae)
    • Try fix windows test. (e2e94db)
    • Refactor include sequence test. (b4e657e)
    • Extract include_paths. (c078671)
    • Make realpath() easier to use by introducing realpath_opt(). (266d437)
    • Adjust test structure to mirror the new code structure. (984b58e)
    • Refact. (d5d81bc)
    • Read include and incideIf sections in correct order. (a4a7ebd)
    • Refact. (a342e53)
    • Merge branch ‘main’ into SidneyDouw-pathspec (a22b1d8)
    • Release git-path v0.1.2, git-sec v0.1.1, git-config v0.4.0, git-discover v0.1.1, git-pack v0.19.1, git-repository v0.18.0, cargo-smart-release v0.10.0, safety bump 2 crates (ceb6dff)
    • Fix benchmark compilation (53adcfe)
    • Merge branch ‘svetli-n-git_includeif’ (cf24fbe)
    • Bring init functions back to File type (f1f69d8)
    • Disallow Rust 2018 idioms (81aca45)
    • Fix most of docs (1fe053f)
    • Thanks clippy (409a95b)
    • Dissolve git_config module in favor of file module (2d4a19b)
    • Refactor (6cc5c20)
    • Refactor (3471f95)
    • File::len() -> File::num_values() (553f872)
    • Refactor (2626e0c)
    • Refactor (07e0f5e)
    • Split git_config into modules. (a85d864)
    • Fix linux test. (e0d063e)
    • Fix test. (ed5de9e)
    • Temp ignore test. (9b70eca)
    • Tryfix windows test. Includes module. (b02d147)
    • Tryfix windows test. (4098278)
    • Tryfix windows test. (17a296f)
    • Tryfix windows test. (a29657a)
    • Fix merge. (07bc9a8)
    • Merge branch ‘main’ into git_includeif (598c853)
    • Tryfix windows test. (300ecbc)
    • Release git-hash v0.9.4, git-features v0.21.0, git-actor v0.10.0, git-glob v0.3.0, git-path v0.1.1, git-attributes v0.1.0, git-sec v0.1.0, git-config v0.3.0, git-credentials v0.1.0, git-validate v0.5.4, git-object v0.19.0, git-diff v0.16.0, git-lock v2.1.0, git-ref v0.13.0, git-discover v0.1.0, git-index v0.3.0, git-mailmap v0.2.0, git-traverse v0.15.0, git-pack v0.19.0, git-odb v0.29.0, git-packetline v0.12.5, git-url v0.5.0, git-transport v0.17.0, git-protocol v0.16.0, git-revision v0.2.0, git-worktree v0.2.0, git-repository v0.17.0, safety bump 20 crates (654cf39)
    • Temp ignore test (6f35866)
    • Update lifetime (fd24e2c)
    • Add includeIf test with symlink. (5d74404)
    • Refactor condition match. (15ac22a)
    • Fix realpath tests. (0426f4d)
    • Thanks clippy (da13aff)
    • Merge branch ‘main’ into git_includeif (05eb340)
    • Merge branch ‘main’ into msrv-for-windows (7cb1972)
    • Vec -> Option in tests (538de54)
    • Tests use options_with_git_dir(). (9abbac1)
    • Thanks clippy (60da03c)
    • Thanks clippy (4d0e29c)
    • Merge branch ‘git_includeif’ of https://github.com/svetli-n/gitoxide into svetli-n-git_includeif (0e01da7)
    • Merge branch ‘worktree-stack’ (98da8ba)
    • Thanks clippy (5bf6b52)
    • Thanks clippy (53f27e0)
    • Thanks clippy (1e2b239)
    • Onbranch uses wildmatch (8382df2)
    • Gitdir/i support. (5dd3f92)
    • Fail fast include condition if it's raw value contains backslash. (2c78e48)
    • Replace \ in pattern after expanding relative paths. (a955449)
    • Replace \ in pattern after interpolation. (d774485)
    • Handle relative path patterns. Update tests. (546ec2c)
    • Use std::path::MAIN_SEPARATOR when adding ** globbing. (b85e706)
    • Use std::path::MAIN_SEPARATOR when adding ** globbing. (cc42edf)
    • Use git-glob for pattern matching. (6066701)
    • Refact. (35f955a)
    • Fix out of order whne reading includeIf sections. (e6ef931)
    • Fix out of order whne reading includeIf sections. (293e86e)
    • Test WIP. (7a59791)
    • PR feedback. (fd2b085)
    • Use new git-ref API. (32c5729)
    • IncludeIf condition and gitdir tests. (892b77a)
    • Nop includeIf. (5d86a02)
    • Get values for a section across all subsections. (aff2777)
    • Merge branch ‘worktree-stack’ (39046e9)
    • Merge branch ‘main’ into repo-status (9679d6b)
    • Merge branch ‘git-sec’ (cd723b5)
    • Merge branch ‘main’ into repo-status (4086335)
    • Add suppport for android (031bd2f)
    • Merge branch ‘worktree-stack’ (e90d3fd)
    • Thanks clippy (273895a)
    • Update doc comment. (322f825)
    • Handle overflow. (61c5285)
    • Add doc comment. (001862a)
    • Canonicalize ´git_config::values::Integer values as simple decimal numbers. ([03f360a`](https://github.com/Byron/gitoxide/commit/03f360a19d365f614e71948df7e8b0c62d13cff4))
    • Refactor values tests. (ee4ad7e)
    • Merge branch ‘mzr-fix_empty_values’ (09c8628)
    • Do not treat empty values in sections like multi-line values (8b9432c)
    • Release git-config v0.2.1, git-diff v0.15.0, git-traverse v0.14.0, git-pack v0.18.0, git-odb v0.28.0, git-ref v0.12.1, git-revision v0.1.0, git-repository v0.16.0, gitoxide-core v0.14.0, gitoxide v0.12.0, safety bump 6 crates (b612021)
    • Thanks clippy (7887d8b)
    • Release git-config v0.2.0 (ddfe833)
    • Release git-features v0.20.0, git-config v0.2.0 (a6460db)
    • Release git-hash v0.9.3, git-features v0.20.0, git-config v0.2.0, safety bump 12 crates (f0cbb24)
    • Derive PartialEq, Eq and Debug on ResolvedGitConfig (b2a88a5)
    • Merge branch ‘svetli-n-refactor_git_config_tests’ (babaa9f)
    • Refactor git_config tests. (714ef5c)
    • Make fmt (7cf3545)
    • Merge branch ‘main’ into mailmap (b2df941)
    • Thanks clippy (a87844a)
    • Revert “Move tests out of git_config.” (3cbe072)
    • Move tests out of git_config. (7fd8369)
    • Relative include path from env is error. (e303466)
    • Refactor and add skip bom when reading config. (2d5768d)
    • Replace GitConfigFromEnvError with from_env::Error. (e1f8b52)
    • Add path include to from_env. Follow duplicate include paths until max include depth is exceeded. (2295dc5)
    • Return error when max allowed nested includes depth is passed. (9692694)
    • Remove git_config::values::Value; use Bytes in its place. (55c00d8)
    • Merge branch ‘svetli-n-path_value’ (e8383ca)
    • Minor fixes (c72ca00)
    • Make fmt; fix build (ae4f122)
    • Use context in PathError. (3b55f25)
    • Small refactoring and documentation. (fefb01b)
    • Release git-config v0.1.11 (a605b67)
    • Fix usage example in README.md (469406d)
    • Merge branch ‘sassman-config-subsection-iter’ (e348b2b)
    • Implement a draft for subsection fetching (e822f56)
    • Release git-actor v0.8.0, git-config v0.1.10, git-object v0.17.0, git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0 (8f57c29)
    • Release git-features v0.19.1, git-actor v0.8.0, git-config v0.1.10, git-object v0.17.0, git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0 (d78aab7)
    • Release git-hash v0.9.1, git-features v0.19.1, git-actor v0.8.0, git-config v0.1.10, git-object v0.17.0, git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0, safety bump 4 crates (373cbc8)
    • Prepar changelogs for cargo-smart-release release (8900d69)
    • Compatibility with Rust <1.53 (61af06b)
    • Thanks clippy (7dd2313)
    • Release git-actor v0.7.0, git-config v0.1.9, git-object v0.16.0, git-diff v0.12.0, git-traverse v0.11.0, git-pack v0.15.0, git-odb v0.25.0, git-packetline v0.12.2, git-transport v0.14.0, git-protocol v0.13.0, git-ref v0.10.0, git-repository v0.13.0, cargo-smart-release v0.7.0 (d3f9227)
    • Release git-features v0.18.0, git-actor v0.7.0, git-config v0.1.9, git-object v0.16.0, git-diff v0.12.0, git-traverse v0.11.0, git-pack v0.15.0, git-odb v0.25.0, git-packetline v0.12.2, git-transport v0.14.0, git-protocol v0.13.0, git-ref v0.10.0, git-repository v0.13.0, cargo-smart-release v0.7.0, safety bump 12 crates (acd3737)
    • Adjust changelogs prior to release (ec38950)
    • Fix build warnings related to pin-project lite (126aeec)
    • Thanks clippy (db1bb99)
    • Add GitConfig::from_env_paths with git-like sequence resolution (aec51a2)
    • Release git-config v0.1.8, git-object v0.15.1, git-diff v0.11.1, git-traverse v0.10.1, git-pack v0.14.0, git-odb v0.24.0, git-packetline v0.12.1, git-transport v0.13.1, git-protocol v0.12.1, git-ref v0.9.1, git-repository v0.12.0, cargo-smart-release v0.6.0 (f606fa9)
    • Better changelog descriptions. (f69b2d6)
    • Adjusting changelogs prior to release of git-config v0.1.8, git-object v0.15.1, git-diff v0.11.1, git-traverse v0.10.1, git-pack v0.14.0, git-odb v0.24.0, git-packetline v0.12.1, git-transport v0.13.1, git-protocol v0.12.1, git-ref v0.9.1, git-repository v0.12.0, cargo-smart-release v0.6.0, safety bump 5 crates (39b40c8)
    • Remove stale clippy allow (8441e92)
    • Note, not zero-copy nor alloc (75879b0)
    • Comment (4b00d68)
    • Lint (e700284)
    • Format (960dcdc)
    • Add multi value test (f3bcefb)
    • Assert error kind (763266d)
    • Assert io error (03541c5)
    • Not mutable (0cfe8a4)
    • Rename test (bfcad07)
    • Assert invalid paths (be4a4ea)
    • Assert config len (bbce210)
    • Remove debug print (cdf88e6)
    • First pass (a424d5a)
    • Release git-hash v0.7.0, git-features v0.16.5, git-actor v0.5.3, git-config v0.1.7, git-validate v0.5.3, git-object v0.14.1, git-diff v0.10.0, git-tempfile v1.0.3, git-lock v1.0.1, git-traverse v0.9.0, git-pack v0.12.0, git-odb v0.22.0, git-packetline v0.11.0, git-url v0.3.4, git-transport v0.12.0, git-protocol v0.11.0, git-ref v0.8.0, git-repository v0.10.0, cargo-smart-release v0.4.0 (59ffbd9)
    • Remove after (cb72bef)
    • Mark tests as serial (0456142)
    • Add a test for multiple sections (0ad6438)
    • Format (d743ef8)
    • Add a test for a single key value pair (a64d312)
    • Add a test case for GIT_CONFIG_COUNT parse error (a864812)
    • Add test case for GIT_CONFIG_COUNT=0 (c33b498)
    • Release git-config v0.1.6 (b1b6fe0)
    • [repository #185] rustfmt (dfbb015)
    • [config #185] refactor (509c938)
    • [config #185] Count lines correctly on windows… (57203ce)
    • [config #185] add test for handling windows formatted files… (2a2a89f)
    • [config #185] flyby refactor (9b9ffa3)
    • Release git-config v0.1.5 (150ed76)
    • [various #184] configure docs.rs build features (cc50249)
    • [object #177] fix docs (2fd23ed)
    • [actor #173] rename immutable::Signature to SignatureRef! (96461ac)
    • Merge branch ‘Byron:main’ into main (dc58eca)
    • Upgrade to nom-7 (f0aa3e1)
    • [smart-release #162] format everything (8ff83e5)
    • Release git-config v0.1.4 (535ff79)
    • [git-config] Resolved config construction (1ab44c0)
    • [config] Allow certain warnings during development, fix docs (1a2f408)
    • Don't enable resolved module yet (0bd05b2)
    • Disable all git-config lints (05687b4)
    • Disable lint (b4302cd)
    • Rustfmt git-config for consistency (b559dd0)
    • Add todos (dbcd79a)
    • Fix contains_key (50f9122)
    • Add IntoIterator for SectionBody (d37b17c)
    • Document GitConfigFromEnvError (eb44cf6)
    • More git-config docs (f05a669)
    • Release git-config v0.1.3 (319a4ae)
    • [config] pacify clippy (ad41ba6)
    • Fix bench path (70f9403)
    • Fix bench path (bf0004e)
    • Bump git-config to 0.1.2 (9c275dc)
    • Use newtyped Index and Size (15ae2d7)
    • Re-export everything in git-config::file::mod (392c131)
    • Fix rustdoc links (042eaf4)
    • Use AsRef when opening from path (515d256)
    • Add GitConfig::from_env (17e30a1)
    • Add GitConfig::from_path (27df3d1)
    • Add is_empty and len to GitConfig (aa86594)
    • Split file.rs into module (da40593)
    • Clippy on tests and thanks clippy (a77a71c)
    • Thanks clippy (e1964e4)
    • Merge branch ‘parser-into-iter-without-alloc’ (a799ca8)
    • Implement Parser::into_iter without extra allocation (aa79924)
    • Clippy cleanup; fix CI build (3e943f2)
    • Thanks clippy (6200ed9)
    • [git-config] Annotate more functions with inline (2006acb)
    • (cargo-release) version 0.1.1 (e583f70)
    • Thanks clippy (17258cc)
    • TODO's about ‘Iterator::reduce()’ are probably not applicable (ac1a433)
    • Thank cargo-doc (ca96be1)
    • [git-config] Finish cleaning up 1.51 clippy lints (aec7240)
    • [git-config] Fix various 1.51 clippy lints; inline (d899df0)
    • [git-config] Fix must_use lints (71aff75)
    • Slim down git-config with cargo-diet (1c555e0)
    • [git-config] add parse test from git remote (63bee9c)
    • [git-config] Add sections_by_name (1f7a533)
    • [git-config] Add to_owned for parser::Error (e316c8c)
    • [git-config] Add coercion into owned variants (6387aea)
    • Include benches in crate to allow publishing to work (949622e)
    • Remove clippy-cargo lint until there are no warnings (bcacfc9)
    • Remove redundant lines from git-ignore file (41f118d)
    • Fix format (1655b56)
    • Remove release-profile (3d62449)
    • Rename_section (4975fff)
    • Return key iterator (adfa460)
    • Add push_section (81271e2)
    • More work on sections (84e959d)
    • Remove offset newtype (41da7ed)
    • Remove section for owned section type (11cf526)
    • More functionality to mutablesection (b0cf849)
    • Optimize section pushing (f409931)
    • Section API (0aad0f1)
    • Section stuct (21b4fe1)
    • Fix example (357a761)
    • Update readme (c2fa869)
    • Fix macro comment gen (a19c17f)
    • Implement case insensitivity for names (c39ff33)
    • Test MutableMultiValue (8cfe67d)
    • More tests, fix mutablevalue (377532c)
    • Fix lints (bb7a544)
    • Enable requiring docs (68320ca)
    • Clippy fix (e7bad2e)
    • Docs (a1f833c)
    • Add into bytes for gitconfig (9b54a5b)
    • Docs (4d7da4e)
    • Mutableevent interface (014776f)
    • Remove serde code for now (fc4ee85)
    • Disable serde (7c01808)
    • Multablemultivalue (faa1b93)
    • Better test formatting (635e5c1)
    • Add get_multi_value (79eeca1)
    • Check all sections for lookup before failing (01b617d)
    • Misc improvements (87057c9)
    • Benchmarks (b0ff69e)
    • Crate level docs (a909bcf)
    • Integration tests for value extraction (d45af63)
    • Fix drain (4f425a7)
    • Use memrchr (ccadf89)
    • Use drain instead (6e5b67b)
    • Use mutablevalue for mut entries (13fdda5)
    • Normalize get_raw_value (5952cab)
    • Fix get_raw_value, fix returning refs to cows (ba982b9)
    • Cleanup docs (e0a8b8d)
    • Add tests and docs (7caf012)
    • Rename config mod to file (a965ebc)
    • Pendantic clippy lints (18c9dff)
    • Remove unnecessarily lifetimes (7d0e6b4)
    • Use str in most cases (9fc8993)
    • Fully comment values (8e32d56)
    • More normalize docs (9767b5b)
    • Collaspe if block (1cf1f3b)
    • Better doc (ec63ce6)
    • Implement unquoting in normalize (7e8ae93)
    • Add normalize (6c245dc)
    • Dedup multivar docs (236d37b)
    • Add todo (bc63005)
    • Implement get_value for GitConfig (ca7c1dc)
    • Use traits instead of from_str (ce9b7bf)
    • Use traits instead of shadowing from_str (a4ce9b0)
    • Remove falsevariant (e10a4a2)
    • More tests (24a2dfd)
    • Remove unreachable variants (93b85e3)
    • Use mut vec reference (8b68fdb)
    • Don't use mutex (4027daf)
    • Documented parsererror (0c226ad)
    • Clippy fixes (8618c22)
    • Don't use stack for error handling (819a1d3)
    • Very rough error handling (45d5250)
    • Add error trait impl for ParserError (d173b4b)
    • Basic error reporting (f293334)
    • Move fully_sumed to test_util (41245eb)
    • Don't immediately drop fuzzer values (568d360)
    • Add more fields to cargo.toml (89791fd)
    • Add basic fuzzer (cf41bb3)
    • Add from_bytes variants for parser (954f433)
    • Exclude fuzz folder from cargo (afe4ac7)
    • Add tests for boolean (0353033)
    • Use lto and single codegen unit for release (53077bd)
    • Select nom features (79dc19f)
    • Make serde optional, clippy lints (5defc4a)
    • Add ColorValue tests (5b7cc13)
    • Add tests for ColorAttribute (0cc9cd6)
    • Fix docs (b0fc08b)
    • Use BStr instead (ec2602c)
    • Add key-value delimination event (df0da82)
    • Gitconfig writing to string (b59a51a)
    • Document multivar behavior better (e43518e)
    • Use Cow instead of strs (ff8ee4a)
    • Implement get_mut for gitconfig (1d8e58b)
    • Remove meme comment (897450c)
    • Test get_raw_values (0ea6210)
    • Finish raw value queries for gitconfig (4b7f218)
    • Handle empty git-config file for parser (a516885)
    • Fully document parser (f66e0be)
    • Completely refactor config (b820d6c)
    • Booleans now retain original value (8ea467e)
    • Parser is now perfect (3f708ec)
    • More work on parser (2691756)
    • More work (eb07890)
    • Complete initial parser (d721625)
    • Deny rust-2018-idioms (a4d2a4b)
    • Add remaining docs for all types in ‘git-config’ crate (b7790b4)
    • More planning for config parser implementation (9676db9)
    • Add missing ‘.’ at end of doc comments (7136854)
    • Signal the compiler that configuration edits must be used (14b17e4)
    • Better docs for git-config; name method for Entry (5ab4bdb)
    • Refactor; more comments (8d933cb)
    • Time-constrained write-down of some high-level concepts of git-config structures (157fa2a)
    • Cargo clippy Rust 1.48 (475a68c)
    • A path towards making config Files editable (bc008c3)
    • Additional setters for more fluid edits (5a54dae)
    • Sketch out editing lossless of Files (8f00063)
    • Skip comments as well (32cc684)
    • Stop entry iteration when next section is encountered (83a1b83)
    • Sketch of iteration over sections and entries (acb8947)
    • Sketch out section and entries access (06679d9)
    • Refactor (b5fa727)
    • Turn off ‘unused’ warnings for experimental git-config crate (0b52eb0)
    • Revert “remove git-config from workspace while it's so fresh…” (99214f4)
    • Remove git-config from workspace while it's so fresh… (84e0d19)
    • Plan how to deal with whitespace and comments to be lossless (eb5a534)
    • Refactor (3846bab)
    • Very first sketch of types for read-only git config (e2a39c9)
    • Stub for git-config crate (3539531)

0.16.0 (2023-02-09)

Documentation

  • fix typos

New Features (BREAKING)

  • transfer knowledge about configuration and its usage into the type system. That way it's possible to use configuration overrides, even though ultimately being strings, in a type-safe manner and leverage code-completion while at it.

    In that process, we also change Repository::(committer|Author)() to return Option<Result<...>> to be able to account for date parse errors.

0.15.1 (2023-01-10)

A maintenance release without user-facing changes.

0.15.0 (2023-01-09)

A maintenance release without user-facing changes.

0.14.0 (2022-12-30)

A maintenance release without user-facing changes.

0.13.0 (2022-12-19)

New Features

  • SectionMut::push_with_comment(key, comment) to add a new variable with a comment. This is useful for providing more information about a value at hand, especially if it was added programmatically and then shows up in the configuration.

  • Add the Source::EnvOverride to have a place for ‘terminal’ overrides. That way environment variables represented via git-configuration can be integrated into git configuration, making clearer what's going to happen even when looking at the configuration via gix config.

    The implementation has to be careful though about assuring there is no more specific configuration key, like http.<URL>.proxy that would override the one from the environment, which always has the final word.

  • comfort API like string_by_key(key) takes a key like "remote.origin.url", add section_by_key("remote.origin") as well. That way it's the most comfortable way to query values and very similar to how git does it, too.

    Additionally, sections can be obtained by section key, both mutably and immutably for completeness.

New Features (BREAKING)

  • File::new_section() and related now returns their id as well. That way it's possible to more easily interact with it later, for instance when one wants to delete it.

Bug Fixes (BREAKING)

  • subsections are identified as &BStr in entire API. Technically they can be any value (except for newlines and unescaped double quotes), and these values might be paths and everything that comes with it, like illformed UTF8. In order to be able to represent everything that git can represent, we don't enforce UTF8 anymore for subsection names.

    Note that section names and key names are required to be valid UTF8 (and even alphanumeric ascii), which makes illformed UTF8 very unlikely there.

0.12.0 (2022-11-21)

New Features

  • read worktree specific configuration of main worktrees. Supporting this is useful when interacting with worktrees that have been created with sparse worktree support, which moves some configuration values into those for the worktree at hand.

    Note that linked worktrees are not supported - for that use gix instead.

New Features (BREAKING)

  • upgrade edition to 2021 in most crates. MSRV for this is 1.56, and we are now at 1.60 so should be compatible. This isn‘t more than a patch release as it should break nobody who is adhering to the MSRV, but let’s be careful and mark it breaking.

    Note that gix-features and gix-pack are still on edition 2018 as they make use of a workaround to support (safe) mutable access to non-overlapping entries in a slice which doesn't work anymore in edition 2021.

0.11.0 (2022-11-17)

A maintenance release without user-facing changes.

0.10.0 (2022-11-06)

Bug Fixes

  • File::boolean() now correctly handles implicit bools across sections. This means it will return the last implicit value as true, instead of ignoring it to fall back onto an explicit boolean value that might be false.

  • file::SectionMut::push() now properly creates empty values. Previously, when calling .push("key", None), the resulting internal state would be slightly wrong causing certain invariants and expectations to be unfulfilled even though it might have looked OK to most users.

    Now it will uphold the invariant for empty values, those without an = character.

0.9.0 (2022-10-10)

New Features

  • add parse::section::header::is_valid_subsection() function. It can be useful to validate subsection names without having to construct an entire Header (which also includes a name).

  • Add various methods to iterate sections along with their id, and mutate them. As section names are not unique, it was previously not possible to iterate sections and then mutate them as one wouldn't be able to refer to the exact section that was just traversed, after all, there can be many sections named remote "origin".

    With the new methods it's possible to uniquely refer to each section for mutation and removal.

Bug Fixes

  • greatly improve whitespace handling when removing values. Previously, newlines would remain past a value, and whitespace could remain before one.

    Now both are removed to simulate removing an actual line.

  • File::remove_section() was fixed to allow re-adding a similarly named section. We also add File::remove_section_by_id() to make it possible to remove specific sections.

0.8.0 (2022-09-20)

Changed

  • gix-config now uses gix-config-value.

Changed (BREAKING)

  • Add Kind::GitInstallation for a way to obtain special git-installation configuration paths. Note that these are lazily cached as they call the git binary.
  • upgrade bstr to 1.0.1

0.7.1 (2022-08-28)

Maintenance release without user-facing changes.

0.7.0 (2022-08-24)

Chore

  • uniformize deny attributes

New Features

  • File::set_raw_value_filter() to set values only in sections passing a filter.
  • File::section_mut_or_create_new_filter() to allow choosing which sections to add values to.
  • File::section_mut_or_create_new(…) to obtain an existing or new section for mutation.
  • use docsrs feature in code to show what is feature-gated automatically on docs.rs
  • pass --cfg docsrs when compiling for https://docs.rs

Bug Fixes

  • Properly handle boolean values such that a is true but a= is false. This is even consistent when no booleans are used, such that a has no value as if it is not present, it's only available for booleans which must be specified.
  • Keep track of a severe limitation and prepare tests for fixing it. This also changes behaviour, but merely removes a hack in Boolean which considered empty strings true, even though they are supposed to be false.

Changed (BREAKING)

  • Add File::set_raw_value() to unconditionally set single values, and make the value itself easier to provide.

New Features (BREAKING)

  • file::SectionMut::push() now supports values without key-value separator. These make a difference as those without = are considered boolean true. Currently pushing onto a section is the only way to write them.

Other (BREAKING)

  • File::set_raw_[multi_]value() to ::set_existing_raw_[multi_]value. This makes clear that the method will fail if the value doesn't yet exist.

0.6.1 (2022-08-17)

A maintenance release without user facing changes.

0.6.0 (2022-07-22)

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 common 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 configuration keys when interpreting environment 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 gix-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

  • :Events::from_bytes()withfilter` 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 implemented 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 support 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 mostly 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 disruptions, and values?_as() was removed as well as it‘s somewhat duplicate to higher-level APIs and it wasn’t tested at all.

  • Remove gix-config test utilities from gix-path.

Other (BREAKING)

  • File::raw_multi_value() to File::raw_values()
  • File::raw_multi_value_mut() to File::raw_values_mut()
  • File::multi_value() to File::values(). The latter is better in line with string()/strings()

0.5.0 (2022-06-13)

New Features (BREAKING)

  • Make realpath() easier to use by introducing realpath_opt(). That way there is consistency about how many symlinks to follow.

0.4.0 (2022-05-21)

Changed (BREAKING)

  • File::len() -> File::num_values() The same is true for Section::len() which now is Section::num_values().

0.3.0 (2022-05-18)

Bug Fixes

  • Use std::env::var_os() to avoid potential decode errors

Changed

  • GitConfig::from_paths(<paths>, …) accepts more inputs <paths> is more flexible and is easier to use.

New Features

  • GitConfig::path() for direct access to paths. Very similar to string(), but as path, whose query can never fail.

  • add support for android Do not interpolate ~user/ on Android (Termux). There is no meaning of it. It is single user system.

  • support for try_value(), boolean() and string() access. Support for a convenient way of knowing if a value does or doesn't exist via try_value()`, which can only fail if the conversion fails.

    Lastly, string() is a special case which doesn't fail as there is no conversion, and boolean() allows to obtain a plain boolean value if it was a valid boolean representation.

  • new hierarchical errors for value lookup

  • GitConfig::integers() Get multiple fully validated integer values, with their suffix interpreted and checked for overflow.

  • add GitConfig::integer() A way to quickly obtain a valid integer with suffixes resolved and overflow checked.

  • GitConfig::strings() for multi-value strings.

Changed (BREAKING)

  • remove values::*Error in favor of value::parse::Error. This makes it easier to work with errors in practice, we are either interested in the value that failed to parse to try something else or want a nice user message.

    Having one decode error type facilitates that.

  • switch from quickerror to thiserror. This allows for generic types for sources of errors and allows to workaround a limitation with associated type constraints in the MSRV of 1.54.

    Using thiserror makes this work and brings the crate more closely to the rest of the gitoxide crates (which now prefer thiserror over quickerror).

  • remove all get_ prefixes from methods That way the API is more idiomatic and fits better into the existing gitoxide crates.

  • use lookup::Error and lookup::existing::Error Use the newly introduced structured error to replace the ‘catch-all’ GitConfigError while getting closer to naming conventions in other gitoxide crates.

  • GitConfig::from_paths(…, <option>) is now owned. The type is Copy, so no need to pass it by reference.

0.2.1 (2022-04-05)

Features

  • New values::String data type which makes it easier to obtain string values to work with as binary string.

0.2.0 (2022-04-02)

New Features

  • Add gix_config::values::Path for a typesafe git path Add a Path type to the gix_config::values which can be interpolated according to gits own path interpolation rules.
  • compatibility with Rust <1.53
  • Respect include.path when reading configuration files
  • Support for path interpolation

Refactor

  • remove gix_config::values::Value; use Bytes in its place.

0.1.11 (2022-01-31)

New Features

  • subsection iteration.

    introduce method sections_by_name_with_header to allow iterating over tuples of section header and section body.

Bug Fixes

  • fix usage example in README.md

0.1.10 (2022-01-23)

New Features

  • compatibility with Rust <1.53

0.1.9 (2021-11-29)

A maintenance release.

0.1.8 (2021-11-16)

A maintenance release triggered by changes to gix-pack and changelog rewrites.

v0.1.7 (2021-10-15)

This is a maintenance release without functional changes.

v0.1.6 (2021-09-07)

v0.1.5 (2021-08-29)

  • maintenance release

v0.1.4 (2021-08-17)

v0.1.3 (2021-08-15)

v0.1.2 (2021-08-06)

Added

  • Added the following methods to GitConfig:
    • is_empty
    • len
    • from_env
    • open
  • len
  • from_env
  • open

Changed

  • parse_from_path now accepts a AsRef<Path> instead of a &Path.
  • parse_from_path now returns an ParserOrIoError<'static> instead, from ParserFromIoError

Fixed

  • None.

v0.1.1 (2021-05-09)

v0.1.0 (2021-03-12)

Other

  • Include benches in crate to allow publishing to work

  • remove clippy-cargo lint until there are no warnings Please feel free to re-add once all other git-* crates have been adjusted. It's interesting to see how a crate lint spills into the workspace.

    Personally I am surprised that the keywords value is supposed to repeat the crate name as it seems redundant.

  • remove redundant lines from git-ignore file

v0.0.0 (2020-10-05)