diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
commit | 10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 (patch) | |
tree | bdffd5d80c26cf4a7a518281a204be1ace85b4c1 /vendor/gix/CHANGELOG.md | |
parent | Releasing progress-linux version 1.70.0+dfsg1-9~progress7.99u1. (diff) | |
download | rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.tar.xz rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.zip |
Merging upstream version 1.70.0+dfsg2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/gix/CHANGELOG.md')
-rw-r--r-- | vendor/gix/CHANGELOG.md | 1606 |
1 files changed, 1606 insertions, 0 deletions
diff --git a/vendor/gix/CHANGELOG.md b/vendor/gix/CHANGELOG.md new file mode 100644 index 000000000..c98de68d0 --- /dev/null +++ b/vendor/gix/CHANGELOG.md @@ -0,0 +1,1606 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## 0.39.0 (2023-03-04) + +A maintenance release without user-facing changes, primarily for getting the progress-bar updates into `cargo`. + +### Commit Statistics + +<csr-read-only-do-not-edit/> + + - 2 commits contributed to the release. + - 3 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + +<csr-read-only-do-not-edit/> + +<details><summary>view details</summary> + + * **Uncategorized** + - Prepare changelogs prior to release ([`895e482`](https://github.com/Byron/gitoxide/commit/895e482badf01e953bb9144001eebd5e1b1c4d84)) + - 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`](https://github.com/Byron/gitoxide/commit/0f411e93ec812592bb9d3a52b751399dd86f76f7)) +</details> + +## 0.38.0 (2023-03-01) + +### New Features + + - <csr-id-256f7d46ed88067aa96f47be2a97a6f9f5b98075/> the `hp-tempfile-registry` feature toggle to control the `dashmap` dependency. + And also, probably provide a better performance in certain cases. + - <csr-id-fd7eebcd922f98c1aed9e3177b9a48ff1415ffd8/> make `gix-pack` feature toggles related to pack caches available. + Previously they would have to be configured by pulling in `gix-pack`, which + isn't desirable as the only crate we want to expose like that is `gix-features`. + - <csr-id-5b0ebd272c3d98e26c9249ed27b4ea9a8ad80746/> Add `comfort` feature toggle (default enabled) to make better progress units available. + This could be a breaking change for those who turned default-features off, as you may now + have to re-add the `comfort` feature to get nicer progress messages. + +### Bug Fixes + + - <csr-id-b2375e3dbe1f87ee3ac6e814fc8f4898143c438d/> `gix-tempfile` is now configured to not use the high-performance hashmap anymore. + It was hard to justify as tests actually seemed to be faster without it. + +### New Features (BREAKING) + + - <csr-id-fea8c56089e5b354669396853c5bd0f31bdf0d33/> Put `progress::tree` behind the `progress-tree` feature toggle. + It's a convenience export that implies pulling in more dependencies, so it + should be gated. + - <csr-id-441f5ac4dd2f0636ec07065f8095e8bae5ce6985/> gate all signal handling behind the `signals` feature toggle. + This change also consolidates all signal handling into its own module called + `signal` to provide reusable handlers and as well as well as signal initialization. + + Note that the functions to cleanup tempfiles don't interact with the signal registry, + hence they still can be called without the `signals` feature enabled. + + Note that this change sneakily fixes a bug that could have caused a `write_all()` + on a tempfile that was removed by a signal to enter an infinite loop. + +### Commit Statistics + +<csr-read-only-do-not-edit/> + + - 17 commits contributed to the release over the course of 4 calendar days. + - 4 days passed between releases. + - 6 commits were understood as [conventional](https://www.conventionalcommits.org). + - 1 unique issue was worked on: [#339](https://github.com/Byron/gitoxide/issues/339) + +### Commit Details + +<csr-read-only-do-not-edit/> + +<details><summary>view details</summary> + + * **[#339](https://github.com/Byron/gitoxide/issues/339)** + - Gate all signal handling behind the `signals` feature toggle. ([`441f5ac`](https://github.com/Byron/gitoxide/commit/441f5ac4dd2f0636ec07065f8095e8bae5ce6985)) + * **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`](https://github.com/Byron/gitoxide/commit/ea9fd1d9b60e1e9e17042e9e37c06525823c40a5)) + - 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`](https://github.com/Byron/gitoxide/commit/e6cc6184a7a49dbc2503c1c1bdd3688ca5cec5fe)) + - Adjust manifests prior to release ([`addd789`](https://github.com/Byron/gitoxide/commit/addd78958fdd1e54eb702854e96079539d01965a)) + - Prepare changelogs prior to release ([`94c99c7`](https://github.com/Byron/gitoxide/commit/94c99c71520f33269cc8dbc26f82a74747cc7e16)) + - Merge branch 'adjustments-for-cargo' ([`d686d94`](https://github.com/Byron/gitoxide/commit/d686d94e1030a8591ba074757d56927a346c8351)) + - `gix-tempfile` is now configured to not use the high-performance hashmap anymore. ([`b2375e3`](https://github.com/Byron/gitoxide/commit/b2375e3dbe1f87ee3ac6e814fc8f4898143c438d)) + - Depend on latest version of `prodash` for performance improvements. ([`5d00324`](https://github.com/Byron/gitoxide/commit/5d003242abe82b1604e2188d49dec9690ebb2a6a)) + - The `hp-tempfile-registry` feature toggle to control the `dashmap` dependency. ([`256f7d4`](https://github.com/Byron/gitoxide/commit/256f7d46ed88067aa96f47be2a97a6f9f5b98075)) + - Make `gix-pack` feature toggles related to pack caches available. ([`fd7eebc`](https://github.com/Byron/gitoxide/commit/fd7eebcd922f98c1aed9e3177b9a48ff1415ffd8)) + - Put `progress::tree` behind the `progress-tree` feature toggle. ([`fea8c56`](https://github.com/Byron/gitoxide/commit/fea8c56089e5b354669396853c5bd0f31bdf0d33)) + - Add `comfort` feature toggle (default enabled) to make better progress units available. ([`5b0ebd2`](https://github.com/Byron/gitoxide/commit/5b0ebd272c3d98e26c9249ed27b4ea9a8ad80746)) + - Prepare for git-tempfile release ([`56c005b`](https://github.com/Byron/gitoxide/commit/56c005b13c44376f71e61781e73c0bf93416d0e4)) + - Merge branch 'tempfile-upgrades' ([`3522cba`](https://github.com/Byron/gitoxide/commit/3522cbaac721c8079605be51b9053014bc5e863a)) + - Adjust to changes in `gix-tempfile` ([`c6785fc`](https://github.com/Byron/gitoxide/commit/c6785fc7082b90c8a27cef6a0f5cc5acd8cb8951)) + - Make fmt ([`8ef1cb2`](https://github.com/Byron/gitoxide/commit/8ef1cb293434c7b9e1fda4a6963368e0435920a9)) + - Fix diff-tests on windows ([`441a64b`](https://github.com/Byron/gitoxide/commit/441a64b6b703f7f97cfcefe4d3db31bc7427b48c)) +</details> + +## 0.37.2 (2023-02-24) + +### Bug Fixes + + - <csr-id-1d3d22d45e70222c12fcf5a82063ceb9321a0129/> reproduce a diff issue and fix it + Diffs could be quite wrong and this is a small repro along with the fix. + +### Commit Statistics + +<csr-read-only-do-not-edit/> + + - 5 commits contributed to the release. + - 3 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + +<csr-read-only-do-not-edit/> + +<details><summary>view details</summary> + + * **Uncategorized** + - Release gix-object v0.26.4, gix-diff v0.26.3, gix v0.37.2, gix-commitgraph v0.13.1, gitoxide-core v0.25.0, gitoxide v0.23.0 ([`9982949`](https://github.com/Byron/gitoxide/commit/9982949cab401501d5ce3cba4e2ba900bc249c53)) + - Fix new diff tests on windows ([`b1ec1b7`](https://github.com/Byron/gitoxide/commit/b1ec1b776696b4b1d73e3dd26cbaf33260367855)) + - Prepare changelog for release ([`13a1ec1`](https://github.com/Byron/gitoxide/commit/13a1ec1803d677c2e94f3ea0461118c2426f8071)) + - Merge branch 'rename-tracking' ([`550144a`](https://github.com/Byron/gitoxide/commit/550144a5fd37d501d86f4b1c4db2948d951d1c93)) + - Reproduce a diff issue and fix it ([`1d3d22d`](https://github.com/Byron/gitoxide/commit/1d3d22d45e70222c12fcf5a82063ceb9321a0129)) +</details> + +## 0.37.1 (2023-02-21) + +A maintenance release to restore MSRV (1.64) support. + +### Commit Statistics + +<csr-read-only-do-not-edit/> + + - 3 commits contributed to the release. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + +<csr-read-only-do-not-edit/> + +<details><summary>view details</summary> + + * **Uncategorized** + - Release gix-config v0.16.3, gix v0.37.1 ([`a3c283f`](https://github.com/Byron/gitoxide/commit/a3c283ff0e3f21cedb3ba7cd464fdfa0f5133af0)) + - Prepare changelogs prior to release ([`362d659`](https://github.com/Byron/gitoxide/commit/362d659f946ca1ff2cbf915766113a34a9df97b3)) + - Restore msrv compatibility by removing sole `if let ... else` ([`9160659`](https://github.com/Byron/gitoxide/commit/91606597b714a6e9b3a2c071bdb08baeacd6056b)) +</details> + +## 0.37.0 (2023-02-20) + +### Bug Fixes + + - <csr-id-d3b974000133caa0ea107cb4724b950eda91d69b/> `Repository::object_cache_size()` now unsets the cache if `Some(0)` is passed. + Previously it would fail. + +### New Features (BREAKING) + + - <csr-id-ed87f4c7c2799625bc6c7109368687908f0fb6f0/> `object::tree::diff::Platform::track_rewrites(...)` + The invocation of `object::tree::diff::Platform::track_rewrites(Rewrites { percentage: None, ..Default::default() })` + is now able to explicitly configure perfect rename tracking without percentage of equivalence. + + By setting `percentage = Some(<fraction>)` one can set how similar both files should be to be considered related. + + The same can be configured for copy-tracking, which also includes something like `--find-copies-harder`. + + Note that by default, renames are considered if a file looks 50% similar, and copies tracking is + using the same convention. + +### Commit Statistics + +<csr-read-only-do-not-edit/> + + - 4 commits contributed to the release. + - 2 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + +<csr-read-only-do-not-edit/> + +<details><summary>view details</summary> + + * **Uncategorized** + - Release gix-object v0.26.3, gix-diff v0.26.2, gix-traverse v0.22.2, gix v0.37.0, safety bump 3 crates ([`8b3e42f`](https://github.com/Byron/gitoxide/commit/8b3e42f69fe97fe5083eb845c323f10d7ac087b2)) + - `Repository::object_cache_size()` now unsets the cache if `Some(0)` is passed. ([`d3b9740`](https://github.com/Byron/gitoxide/commit/d3b974000133caa0ea107cb4724b950eda91d69b)) + - Merge branch 'rename-tracking' ([`35415c5`](https://github.com/Byron/gitoxide/commit/35415c5061bf5ea90a04db80d06ac3622d0b0f1a)) + - `object::tree::diff::Platform::track_rewrites(...)` ([`ed87f4c`](https://github.com/Byron/gitoxide/commit/ed87f4c7c2799625bc6c7109368687908f0fb6f0)) +</details> + +## 0.36.1 (2023-02-20) + +### Bug Fixes + + - <csr-id-135d317065aae87af302beb6c26bb6ca8e30b6aa/> 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 + +<csr-read-only-do-not-edit/> + + - 5 commits contributed to the release over the course of 2 calendar days. + - 3 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + +<csr-read-only-do-not-edit/> + +<details><summary>view details</summary> + + * **Uncategorized** + - Release gix v0.36.1 ([`fac6bce`](https://github.com/Byron/gitoxide/commit/fac6bce2f9942d7f333f66a92374d5400a00b0a5)) + - 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`](https://github.com/Byron/gitoxide/commit/96047839a20a657a559376b0b14c65aeab96acbd)) + - Compatibility with `bstr` v1.3, use `*.as_bytes()` instead of `.as_ref()`. ([`135d317`](https://github.com/Byron/gitoxide/commit/135d317065aae87af302beb6c26bb6ca8e30b6aa)) + - Release gix-glob v0.5.4 ([`c56d336`](https://github.com/Byron/gitoxide/commit/c56d3365fde21120cf6101cf34f8b5669804977c)) + - Release gix-transport v0.25.5 ([`f872ba8`](https://github.com/Byron/gitoxide/commit/f872ba8271a5d632acc071e7a857ef19f7cf5610)) +</details> + +## 0.36.0 (2023-02-17) + +### New Features + + - <csr-id-4f49992fae2bc60b22644e86808d61afe557f192/> cloning repositories doesn't require a committer anymore. + This is similar to what git does and probably a decent convenience to have. + +### Commit Statistics + +<csr-read-only-do-not-edit/> + + - 45 commits contributed to the release over the course of 3 calendar days. + - 4 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 1 unique issue was worked on: [#737](https://github.com/Byron/gitoxide/issues/737) + +### Commit Details + +<csr-read-only-do-not-edit/> + +<details><summary>view details</summary> + + * **[#737](https://github.com/Byron/gitoxide/issues/737)** + - Cloning repositories doesn't require a committer anymore. ([`4f49992`](https://github.com/Byron/gitoxide/commit/4f49992fae2bc60b22644e86808d61afe557f192)) + * **Uncategorized** + - Release 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 ([`7fc00f8`](https://github.com/Byron/gitoxide/commit/7fc00f87d74aedf631ce4032be1cdfe1804c7e7d)) + - Release 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 ([`59e9fac`](https://github.com/Byron/gitoxide/commit/59e9fac67d1b353e124300435b55f6b5468d7deb)) + - Release 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 ([`48f5bd2`](https://github.com/Byron/gitoxide/commit/48f5bd2014fa3dda6fbd60d091065c5537f69453)) + - Release 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 ([`a5869e0`](https://github.com/Byron/gitoxide/commit/a5869e0b223406820bca836e3e3a7fae2bfd9b04)) + - 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`](https://github.com/Byron/gitoxide/commit/41d57b98964094fc1528adb09f69ca824229bf25)) + - 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`](https://github.com/Byron/gitoxide/commit/e31311257bd138b52042dea5fc40c3abab7f269b)) + - 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`](https://github.com/Byron/gitoxide/commit/6efd0d31fbeca31ab7319aa2ac97bb31dc4ce055)) + - 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`](https://github.com/Byron/gitoxide/commit/6ccc88a8e4a56973b1a358cf72dc012ee3c75d56)) + - Merge branch 'rename-crates' into inform-about-gix-rename ([`c9275b9`](https://github.com/Byron/gitoxide/commit/c9275b99ea43949306d93775d9d78c98fb86cfb1)) + - Release git-date v0.4.3, git-hash v0.10.3, git-features v0.26.5, git-actor v0.17.2, git-glob v0.5.4, git-path v0.7.2, git-quote v0.4.2, git-attributes v0.8.3, git-bitmap v0.2.2, git-chunk v0.4.2, git-command v0.2.4, git-commitgraph v0.13.1, git-config-value v0.10.2, git-tempfile v3.0.3, git-lock v3.0.3, git-validate v0.7.3, git-object v0.26.2, git-ref v0.24.1, git-sec v0.6.3, git-config v0.16.2, git-prompt v0.3.3, git-url v0.13.3, git-credentials v0.9.2, git-diff v0.26.2, git-discover v0.13.1, git-fetchhead v0.1.0, git-filter v0.1.0, git-hashtable v0.1.2, git-traverse v0.22.2, git-index v0.12.4, git-lfs v0.1.0, git-mailmap v0.9.3, git-note v0.1.0, git-pack v0.31.0, git-odb v0.41.0, git-packetline v0.14.3, git-pathspec v0.1.0, git-transport v0.25.5, git-protocol v0.26.4, git-rebase v0.1.0, git-revision v0.10.4, git-refspec v0.7.3, git-sequencer v0.1.0, git-submodule v0.1.0, git-tix v0.1.0, git-tui v0.1.0, git-worktree v0.12.3, safety bump 2 crates ([`90035a3`](https://github.com/Byron/gitoxide/commit/90035a332d0ba67584558db3605500fbcb424ddd)) + - Rename `git-testtools` to `gix-testtools` ([`b65c33d`](https://github.com/Byron/gitoxide/commit/b65c33d256cfed65d11adeff41132e3e58754089)) + - Adjust to renaming of `git-pack` to `gix-pack` ([`1ee81ad`](https://github.com/Byron/gitoxide/commit/1ee81ad310285ee4aa118118a2be3810dbace574)) + - Adjust to renaming of `git-odb` to `gix-odb` ([`476e2ad`](https://github.com/Byron/gitoxide/commit/476e2ad1a64e9e3f0d7c8651d5bcbee36cd78241)) + - Adjust to renaming of `git-index` to `gix-index` ([`86db5e0`](https://github.com/Byron/gitoxide/commit/86db5e09fc58ce66b252dc13b8d7e2c48e4d5062)) + - Adjust to renaming of `git-diff` to `gix-diff` ([`49a163e`](https://github.com/Byron/gitoxide/commit/49a163ec8b18f0e5fcd05a315de16d5d8be7650e)) + - Adjust to renaming of `git-mailmap` to `gix-mailmap` ([`2e28c56`](https://github.com/Byron/gitoxide/commit/2e28c56bb9f70de6f97439818118d3a25859698f)) + - Adjust to renaming of `git-discover` to `gix-discover` ([`53adfe1`](https://github.com/Byron/gitoxide/commit/53adfe1c34e9ea3b27067a97b5e7ac80b351c441)) + - Adjust to renaming for `git-protocol` to `gix-protocol` ([`823795a`](https://github.com/Byron/gitoxide/commit/823795addea3810243cab7936cd8ec0137cbc224)) + - Adjust to renaming of `git-refspec` to `gix-refspec` ([`c958802`](https://github.com/Byron/gitoxide/commit/c9588020561577736faa065e7e5b5bb486ca8fe1)) + - Adjust to renaming of `git-revision` to `gix-revision` ([`ee0ee84`](https://github.com/Byron/gitoxide/commit/ee0ee84607c2ffe11ee75f27a31903db68afed02)) + - Adjust to renaming of `git-transport` to `gix-transport` ([`b2ccf71`](https://github.com/Byron/gitoxide/commit/b2ccf716dc4425bb96651d4d58806a3cc2da219e)) + - Adjust to renaming of `git-credentials` to `gix-credentials` ([`6b18abc`](https://github.com/Byron/gitoxide/commit/6b18abcf2856f02ab938d535a65e51ac282bf94a)) + - Adjust to renaming of `git-prompt` to `gix-prompt` ([`6a4654e`](https://github.com/Byron/gitoxide/commit/6a4654e0d10ab773dd219cb4b731c0fc1471c36d)) + - Adjust to renaming of `git-worktree` to `gix-worktree` ([`73a1282`](https://github.com/Byron/gitoxide/commit/73a12821b3d9b66ec1714d07dd27eb7a73e3a544)) + - Adjust to renamining of `git-hashtable` to `gix-hashtable` ([`26a0c98`](https://github.com/Byron/gitoxide/commit/26a0c98d0a389b03e3dc7bfc758b37155e285244)) + - Adjust to renamining of `git-worktree` to `gix-worktree` ([`108bb1a`](https://github.com/Byron/gitoxide/commit/108bb1a634f4828853fb590e9fc125f79441dd38)) + - Adjust to renaming of `git-url` to `gix-url` ([`b50817a`](https://github.com/Byron/gitoxide/commit/b50817aadb143e19f61f64e19b19ec1107d980c6)) + - Adjust to renaming of `git-date` to `gix-date` ([`9a79ff2`](https://github.com/Byron/gitoxide/commit/9a79ff2d5cc74c1efad9f41e21095ae498cce00b)) + - Adjust to renamining of `git-attributes` to `gix-attributes` ([`4a8b3b8`](https://github.com/Byron/gitoxide/commit/4a8b3b812ac26f2a2aee8ce8ca81591273383c84)) + - Adjust to renaming of `git-config` to `gix-config` ([`3a861c8`](https://github.com/Byron/gitoxide/commit/3a861c8f049f6502d3bcbdac752659aa1aeda46a)) + - Adjust to renaming of `git-ref` to `gix-ref` ([`1f5f695`](https://github.com/Byron/gitoxide/commit/1f5f695407b034377d94b172465ff573562b3fc3)) + - Adjust to renaming of `git-lock` to `gix-lock` ([`2028e78`](https://github.com/Byron/gitoxide/commit/2028e7884ae1821edeec81612f501e88e4722b17)) + - Adjust to renaming of `git-tempfile` to `gix-tempfile` ([`b6cc3eb`](https://github.com/Byron/gitoxide/commit/b6cc3ebb5137084a6327af16a7d9364d8f092cc9)) + - Adjust to renaming of `git-object` to `gix-object` ([`fc86a1e`](https://github.com/Byron/gitoxide/commit/fc86a1e710ad7bf076c25cc6f028ddcf1a5a4311)) + - Adjust to renaming of `git-actor` to `gix-actor` ([`4dc9b44`](https://github.com/Byron/gitoxide/commit/4dc9b44dc52f2486ffa2040585c6897c1bf55df4)) + - Adjust to renaming of `git-validate` to `gix-validate` ([`5e40ad0`](https://github.com/Byron/gitoxide/commit/5e40ad078af3d08cbc2ca81ce755c0ed8a065b4f)) + - Adjust to renaming of `git-hash` to `gix-hash` ([`4a9d025`](https://github.com/Byron/gitoxide/commit/4a9d0257110c3efa61d08c8457c4545b200226d1)) + - Adjust to renaming of `git-features` to `gix-features` ([`e2dd68a`](https://github.com/Byron/gitoxide/commit/e2dd68a417aad229e194ff20dbbfd77668096ec6)) + - Adjust to renaming of `git-glob` to `gix-glob` ([`35b2a3a`](https://github.com/Byron/gitoxide/commit/35b2a3acbc8f2a03f151bc0a3863163844e0ca86)) + - Adjust to renaming of `git-sec` to `gix-sec` ([`eabbb92`](https://github.com/Byron/gitoxide/commit/eabbb923bd5a32fc80fa80f96cfdc2ab7bb2ed17)) + - Adapt to renaming of `git-path` to `gix-path` ([`d3bbcfc`](https://github.com/Byron/gitoxide/commit/d3bbcfccad80fc44ea8e7bf819f23adaca06ba2d)) + - Fix `gix` changelog (find-replace issue) to indicate renaming from `git-repository` ([`f86b780`](https://github.com/Byron/gitoxide/commit/f86b7803e85839450ed2eeef57fe738da1e3ec87)) + - Release git-features v0.26.4 ([`109f434`](https://github.com/Byron/gitoxide/commit/109f434e66559a791d541f86876ded8df10766f1)) + - Release git-features v0.26.3 ([`1ecfb7f`](https://github.com/Byron/gitoxide/commit/1ecfb7f8bfb24432690d8f31367488f2e59a642a)) +</details> + +## 0.35.0 (2023-02-13) + +This is the last release under this name and merely a notice to inform that `git-repository` from now on is `gix`. + +Furthermore, all `git-*` crates belonging to the `gitoxide` project will be renamed to `gix-*`. + +### Changed (BREAKING) + + - <csr-id-1408482fd21be7487b46753bb54a018c7a164f34/> a note of the pending rename of `git-repository` to `gix` + +### New Features + + - <csr-id-069eb6c3f0844b43873ae1bd536e2bca53ff5c8a/> tree diffs with simple rename and copy tracking in cases where there is no additional modification. + As the fastest way of rename tracking, we now offer support for tracking renames and copies, + that is a file was renamed or copied without modification. + - <csr-id-f6ed34aa254d34e596ad027c33f78404a630ff76/> Add `diff.renames` and `diff.renameLimit` keys to config tree. + In preparation for the implementation. + +### Commit Statistics + +<csr-read-only-do-not-edit/> + + - 5 commits contributed to the release over the course of 1 calendar day. + - 2 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + +<csr-read-only-do-not-edit/> + +<details><summary>view details</summary> + + * **Uncategorized** + - Release git-config v0.16.1, git-revision v0.10.3, gix v0.35.0 ([`74390ba`](https://github.com/Byron/gitoxide/commit/74390baf9d177a1abe3c7c35f1d9bc67faba1e97)) + - Show more debugging information if unreachable code is reached. ([`66f5341`](https://github.com/Byron/gitoxide/commit/66f53414efef6cfd6d03f830520964c9bdd23634)) + - Prepare changelogs prior to release ([`446f866`](https://github.com/Byron/gitoxide/commit/446f866d146e255ab8302b89f87bf28f2c5f3733)) + - Merge branch 'rename-crates' ([`6461c3d`](https://github.com/Byron/gitoxide/commit/6461c3da4d6daee857606d94294c3f87fc36965a)) + - Rename `git-repository` to `gix` ([`7bed2a9`](https://github.com/Byron/gitoxide/commit/7bed2a96604397fa990f427b1a970ddeb6f09f1c)) +</details> + +## 0.34.0 (2023-02-09) + +<csr-id-a01f5d72346c36fdcb77af095273da6f4ab86e21/> + +### Documentation + + - <csr-id-39ed9eda62b7718d5109135e5ad406fb1fe2978c/> fix typos + +### New Features + + - <csr-id-297d59e8396fbe2e5a2224a8524fa0778e786773/> add `env::collate::fetch::Error` - a combined error type with its own API. + This error API allows to look at all the steps it takes to perform an operation and + gather insights from it which require understanding a lot about the semantics of + the contained errors. + - <csr-id-d792ea543246632bf1ca8d0e1d239bbe7f07e219/> use enumerations to advertise progress ids publicly. + Previously these were an implementation detail which also means they + couldn't be relied upon. + + Thanks to an intermediate enumeration, they become part of the public API + and their actual value is not exposed. + - <csr-id-5dc408f726d6f0f480438348eb5d713776329710/> read shared indices by dissolving them into the current one. + This allows the 'link' extension to be processed correctly, even though it + won't be maintained. When written back, the 'link' extension will be removed + automatically. + +### Bug Fixes + + - <csr-id-5d3a3a245968d5ad8c29ea11a99b4896d1b41191/> don't panic, but error when parsing the rev-specs `^`, `..`, `...`. + +### Chore (BREAKING) + + - <csr-id-a01f5d72346c36fdcb77af095273da6f4ab86e21/> adjust to changes in `gitoxide` for clap upgrade to 4.1 + +### New Features (BREAKING) + + - <csr-id-2faad43d11283ff06381c51d2466307cfb8736ff/> 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.33.0 (2023-01-10) + +<csr-id-dd7f3bf19cce0d214924fa86aeb4c5823f5bcc02/> + +### Chore (BREAKING) + + - <csr-id-dd7f3bf19cce0d214924fa86aeb4c5823f5bcc02/> upgrade MSRV to v1.64 (possible due to `windows` upgrade) + +## 0.32.0 (2023-01-09) + +<csr-id-80dcb406c5f588122531da115398094de3c3af79/> + +### Bug Fixes + + - <csr-id-a05b1c4d82bc6c7758989a3bbe326ea610903820/> default author and committer time + When needing to fallback to a default author or committer signature, the + time from GIT_AUTHOR_DATE should only be used for the author and + GIT_COMMITTER_DATE should only be used for the committer and not + intermixed. This change enforces that constraint. + - <csr-id-ec7bf71b60f8c1e7529d610557c0305d624c1253/> signature name and email resolution + The name and email for the author and/or committer may come from different + config files. For example, user.name may be set in the global config and + user.email may come from the repository local config. + + This case was broken due to Personas.from_config_and_env() only looking in + the last config section containing, for example, a "user" section. Thus if + the user.name and user.email are split across multiple sections (i.e. + originating from separate config files), the fallback name and email + ("gitoxide" and "gitoxide@localhost") would be used. + + The solution is to use gix_config::File::string() to lookup the name and + email separately. The string() method correctly resolves the value by + looking through all sections from all files in the correct order. + +### Other + + - <csr-id-80dcb406c5f588122531da115398094de3c3af79/> name and email from different config sections + The user.name, user.email, author.name, author.email, committer.name, and + committer.email configuration may come from different sections from + different config files. This new test exercises a couple of scenarios that + are currently broken. + +### Reverted (BREAKING) + + - <csr-id-87abb51596bd0a5a6b552a5de98a920d6c797e3c/> `committer_or_default()`, `author_or_default()` and `user_default()`. + This means that all methods that previously succeeded by adding a default + will now fail. + + This is preferable over 'doing something' and also admits that gits + guesswork that tries to find user information by querying the system + is nothing we want to repeat. + +## 0.31.0 (2022-12-30) + +<csr-id-9fabfc50007603f9c1f7e70b5bb79a39726b12af/> +<csr-id-91720798889ee7eb26da03a9e732caedda83b3e3/> + +### New Features + + - <csr-id-d48b9a7ae2d51676c7549377bcb0b9d3baa83681/> fetching `ssh` urls can ask for a different username. + If authentication fails, the user will be queried for a different username + to try authentication via ssh mechanisms again. + - <csr-id-61d89f586a0ad913fc2f502520282520a5e1fd15/> collect ssh-specific options to control how the ssh program is invoked. + These are passed through when creating the ssh transport. + +### Other + + - <csr-id-9fabfc50007603f9c1f7e70b5bb79a39726b12af/> explain how it's possible to deal with the first commit when comparing trees + The reason the other tree isn't an option is that it's a special case that can more easily be handled + with an `.unwrap_or_else(|| repo.empty_tree())` (or similar) for those who need it. + + Making the empty tree explicit also helps to deal with diffs from the empty tree (which can't be `Option<Tree>`) + to the first tree of the first commit. + +### Chore (BREAKING) + + - <csr-id-91720798889ee7eb26da03a9e732caedda83b3e3/> upgrade to prodash v23 + +## 0.30.2 (2022-12-26) + +<csr-id-114f184855b6177aa1f0dbf6e6589f23deb5ffe6/> + +### New Features + + - <csr-id-38ae61a805bd8cca5df8d1c1dcf3a8a0f9c85f5a/> make more HTTP options available + - `http.schannelCheckRevoke` + +### Other + + - <csr-id-114f184855b6177aa1f0dbf6e6589f23deb5ffe6/> provide a repository clone example + +## 0.30.1 (2022-12-22) + +### New Features + + - <csr-id-ca84c87734804cbfc65e311b89ff6ccfc236149c/> `open::Options::open_path_as_is()` allows to avoid 'smart opening' to try the path verbatim. + The path to git repositories is well-known as they either end in `.git` or `.../.git`. + If this is not the case, by default we append `/.git` to the path. + + With this new option enabled, no path transformations apply to open the given path as is, + which is preferable if you know it's a non-standard git repository folder name. + +## 0.30.0 (2022-12-19) + +<csr-id-fceee748c114b2d0760074e911e533cd020f6996/> + +### Changed + + - <csr-id-a4ac9cf3e667a3059e33aac8188150529578622d/> represent `GIT_(COMMITTER|AUTHOR)_(NAME|EMAIL|DATE)` with git configuration. + That way it becomes more obvious where values are coming from. + +### New Features + + - <csr-id-1683a848459cae2b9182b365e3e22b0e8ba73534/> expose `gix-features` crate at root under `features`. + That way application developers can use more of the utilities + that power most of the `gitoxide` plumbing crates. + - <csr-id-90ef6fc36b440cc4baf3fde4a30060f1b4a0c8cf/> `Remote` knows about its `tagOpt` configuration. + That way it's clear if it should or shouldn't fetch included/reachable + tags automatically. + + The default setting for this is to include tags, similar to `git`. + + The `fetch_tags()` accessor allows to query this information, and the + `with_fetch_tags()` builder method allows to set the value comfortably + right after creating the `Remote` instance. + + The `tagOpt` key will also be written as part of the remote's git + configuration. + + Clone operations can set the `Tags` setting when configuring the + remote in a callback. + + This also comes with a fix to assure that ref-updates aren't skipped + just because there was no pack to receive. That way, locally missing + refs or tags will automatically be put back. + - <csr-id-28e48083052216ddf1fd1f187cc22d506d3d9f86/> network related Error type support `is_spurious()` method. + That way the caller can determine more easily if it makes sense + to try again. + - <csr-id-457c2e081b1aa5dfaab3f663b9aba66c16369939/> Make `prodash::tree` available as `progress::tree`. + - <csr-id-d1b7ec605f8016c52c088477b6b0c5adf7ea0ab2/> read worktree specific configuration to override the one from the shared repository. + This is intensively used when space checkouts are created, along with + Cone mode. Thus it's the basis for properly interpreting sparse checkout + options which are set on a per-worktree basis. + - <csr-id-fc64693d5af0fda402c560d10d15652c24d14219/> add `permissions::Environment::http_transport`. + That way it's possible to deny using environment variables that affect + the HTTP transport, like setting the proxy. + - <csr-id-0ce29a965cf16273cf74bd22e40f464e322e2f62/> `open::Options::modify()` as general pattern to allow builder methods usage in `&mut self`. + That way it's easier to configure both the `full` and the `partial` trust instances + of discovery options. + - <csr-id-8482f90d0a2b61259cd51ca4f40ce322e388cb34/> Add `Repository::commit_as(committer, author, …)` convenience method. + That way it's, very much beyond convenience, possible to set the time + of a commit. + + Many thanks to @epage for the suggestion. + - <csr-id-c8835c6edae784c9ffcb69a674c0a6545dbb2af3/> upgrade to `prodash 21.1` and add `Ids` to all progress instances. + That way callers can identify progress they are interested in, say, for + selective visualizations. + +### Bug Fixes + + - <csr-id-d659bda2e1b0fcab529df7af6467f063ae5d0dd7/> provide a clearer error message when trying to open a git repository that isn't one. + - <csr-id-ff0332e815c228cc5cdfe58c3598ad261bb2879e/> http transports can now reuse a connection. + This makes connections more efficient generally and `cargo` relies + on that behaviour in their tests as well. + - <csr-id-9079b9d2e5f7cc133c6f2b2c2e64245b150c7d74/> allow to open a `Repository` from if 'config' file is missing. + In this case, treat it similar to having an empty repository configuration + file and assume defaults everywhere. + - <csr-id-40f7379b7a89f7fe6f916801384e9e65e5b85c57/> improve error verbosity when fetching and cloning + - <csr-id-b77fc86ab580dd81b08022996f07cc7925104e77/> `tree::diff::Platform::for_each_to_obtain_tree()` now properly surfaces user provided errors. + Previously it would squelch them unintentionally. + + First discovered via https://github.com/Byron/crates-index-diff-rs/issues/35. + - <csr-id-5386eed6a13a32a850c59706b15d8988c67733ce/> when fetching from file://, don't upset windows by trying `d:/foo`, use `d:\\foo` instead. + - <csr-id-363ac7a74ec841505b5fc7cc1b8fae11c0a63ea9/> `config::CommitAutoRollback` now implements `DerefMut`. + +### Changed (BREAKING) + + - <csr-id-3c84cebc5997356ff5f531c6cc9567bdd9b83eb5/> default features are set to `max-performance-safe` to assure compatibility. + Previously the `max-performance` setting might have caused issues during compilation + or issues at runtime if libraries like `git2` are used in the same binary, and the + new default feature settings maximizes compatibility so this won't happen. + + For best performance, however, one will have to activate the `max-performance` + feature on top of that. + - <csr-id-5fe6aa3f3f2f81d84f0d96e874e68a8bf4de1db1/> environment variable permissions are per topic. + Now `Permissions` for environment variables are so that they + are by topic instead of by prefix, by default. That way + it's easier to allow or deny particular sets of related + environment variables. + + The catch-all permissions by prefix are still present for all + other variables that aren't contained in one particular topic. + - <csr-id-49f39d6bb487c0254176a5082f2c7851b83952a1/> `open::ReplacementObjects` is removed in favor of two custom git-configuration flags. + Now it's possible to map the environment variables `GIT_REPLACE_REF_BASE` and `GIT_NO_REPLACE_OBJECTS` + to custom git configuration keys which can also be set, namely `gitoxide.odb.replaceObjectsRefBase` + and `gitoxide.odb.noReplaceObjects`. + + Along with the possibility of disabling the usage of `GIT_` prefixed environment variables one + reaches the previous level of control without making object replacement a special case. + +### New Features (BREAKING) + + - <csr-id-f8a2bfb93dadbc64393135e0a447f3d76628509c/> `interrupts::init_handler()` can now be undone. + This can be done by calling `deregister()` or `auto_deregister()` on the return value + of `interrupts::init_handler(…)`. + + That way it's possible to temporarily do interrupt handling only while some methods + that require it are running. + - <csr-id-becbd8d896a1663f1607be4e86e632773e926f1f/> represent object cache configuration like `GITOXIDE_PACK_CACHE_MEMORY` in git-configuration. + That way there is a unified system for how to set values, which may be overridable by configuration + variables or not. + + With this changes, the explicit application of environment variables for setting the cache + isn't required anymore as everything happens using git-configuration, and automatically, + while providing full control like before. + - <csr-id-f16e36168cc93768ba5d53c9848ff2e8432d06b1/> remove `SnapshotMut::apply_cli_overrides()` in favor of `open::Options::cli_overrides()`. + - <csr-id-84d594caf3f04f1ce337e455343278a6f4674957/> more type-safety for remote names by making clear they can be named after URLs. + +### Other (BREAKING) + + - <csr-id-fceee748c114b2d0760074e911e533cd020f6996/> `Remote::with_refspec()` to `Remote::with_refspecs()` to allow adding more than one refspec as part of the builder. + +## 0.29.0 (2022-11-21) + +<csr-id-f302fc1bcd06fadccd126f4f5f9c0165afabedda/> + +### New Features + +<csr-id-ff9e1571b558475e727dc6ba11dab24ef15fb6f4/> + + - <csr-id-3ddbd2de369b521fa3f21935f10fe9c248840893/> Make `reqwest` TLS backend configuration easy. + We provide the choice of `native-tls` or `rust-tls`. If none is + provided, the user can configure on their on similar to how it's done + in `gix`. + + Please note that a choice now has to be made or HTTPS will not be + available, so use one of… + + * blocking-http-transport-reqwest-rust-tls +* blocking-http-transport-reqwest-native-tls + +### Bug Fixes + + - <csr-id-c6a690219915b2b401d2d11f61db35b2931e5b3a/> `gix::Commit::describe()` chooses tag names (more) correctly. + Previously, if there were multiple choices for tags on the same commit, + `git describe` would disagree with `gitoxide` due to different + prioritization of names. + + This has now been fixed. + - <csr-id-84ed89c3bf6692f18c4bb97173527de1bcba7ac6/> also sort entries lexicographically + +### Other + + - <csr-id-f302fc1bcd06fadccd126f4f5f9c0165afabedda/> Set GIT_EDITOR in make_rebase_i_repo.sh + If the user has core.editor set in their global git config, then that value + takes precedence over the EDITOR environment variable. The GIT_EDITOR + environment variable, however, has higher precedence than core.editor. For + this test, using GIT_EDITOR ensures that the desired sed command line is + used. + +### New Features (BREAKING) + + - <csr-id-bc2a399f2fbb69d23b0b05e8dfb95f3c64ff93b9/> rename `blocking-http-transport` feature to `blocking-http-transport-curl`; add `blocking-http-transport-reqwest`. + With the new and relatively immature second tier http backend we pave + the way to support builds without the use of open-ssl and probably many + other C libraries. + + Note that it's early and not `http` configuration option is implemented + yet. + - <csr-id-3d8fa8fef9800b1576beab8a5bc39b821157a5ed/> 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.28.0 (2022-11-17) + +<csr-id-6beb6f263fd40884b440092f39034dd43d3a95de/> + +### New Features + + - <csr-id-58e14884b1d025651f874d899cb2d627c4a2afbf/> `Id` implements `std::fmt::Display` + - <csr-id-25f7aabe38267b6b6c0547806028b2becb806416/> `Remote::repo()` to obtain the underlying repository. + For convenience. + - <csr-id-709a73229b7cde56ddffa099158661632c606468/> Support for user-customizable user agent strings. + Doable by setting the `gitoxide.userAgent` variable. + - <csr-id-e60d07997989993216c2bd93efeb6f1b48da0a87/> add `env::agent()` for obtaining the default client agent string. + +### Other + + - <csr-id-6beb6f263fd40884b440092f39034dd43d3a95de/> try to apply maybe-async in a place where it's probably not possible. + The goal is to re-use the existing tests, but right now they only + compile in async mode as the `maybe-async` crates needs + a feature to be set. Doing so is hard(er) if it's not already used + in the main crate, which we do not and will do our best to avoid. + +### New Features (BREAKING) + + - <csr-id-db9040f0bb3a16879c8da0252a77df80bd417387/> add `remote::Connection::with_transport_config()`, change the way `*::transport_mut()` is used. + Previously `transport_mut()` was supposed to be used for calling + `configure()`, but that doesn't work anymore as `configure()` can + only effectively be called once the initialization of the Connection + is complete, as it may depend on the Remote name AND the credential + provider for proxy auth credential acquisition. + + Thus we allow callers to set the transport options they need in advance + for it to be used when needed. + +## 0.27.0 (2022-11-08) + +### Changed (BREAKING) + + - <csr-id-c50868c7ed7309515b4f0a188213d332d57dd146/> Move `object::tree::diff::change::DiffPlatform` to `object::blob::diff::Platform`. + - <csr-id-4ee32713093c2e41a12d148c6030add1df6aa966/> new `DiffPlatform::counts()`, open `DiffPlatform` for use of `gix-diff::blob::*`. + +## 0.26.0 (2022-11-06) + +<csr-id-c6f92c15529ddff7539667b74bafa2348f3040e3/> + +### New Features + + - <csr-id-b1edb9e3537df86669714f03666f4a88e0ac3709/> diff algorithm is controlled by git configuration `diff.algorithm` + - <csr-id-072f5bc9c91c4c09bd6a73f9d7ac672805cae533/> Query of `core.logAllRefUpdates` is now fallible. + This is the same behaviour as shown by `git`, which requires valid + values or aborts. + - <csr-id-2eaf69e5f8f8da10e5af85cb9f0c39577ad1707f/> automatically handle `.keep` files after writing a pack bundle to disk. + The logic implemented here tries to do the right thing, that is when + we have reason to believe that the objects in the pack are linked up + with a ref, we delete the keep file automatically. + + However, if there was no local ref edit as the ref specs didn't contain + local destinations, or if the pack was empty, then keep the .keep file + and leave it to the caller to handle. + - <csr-id-8b9fbd4e9ed7be37976c7203cd9a89c6116a6d3d/> Use `core.askpass` when building the credential helper. + Previously it would only consider the environment variable, which can + still override the provided git-configuration at core.askpass . + - <csr-id-a9d14492322785a14f4ecb5b0d3dbdc87e56f8c5/> `remote::fetch::Prepare::handshake_outcome()` to obtain server information right after listing refs. + - <csr-id-0b5c53ec43bdb58b2b7cf46e453ddf858770a95a/> `open::Options::config_overrides()` for early configuration; support for `init.defaultBranch`. + +### Bug Fixes + + - <csr-id-f869b224170b0c49a0e4d89e88bfbf5caedaa725/> don't allow non-bare repositories to be initialized into non-empty directories. + - <csr-id-91baefad02a0d52c745106359da3693d06aace46/> `init_bare()` now creates the destination directory if it doesn't exist. + - <csr-id-5c11b84f4e74e3eefdd0f5804976ebfc505e0f2f/> build correct path for `$HOME/.config/…` files. + The special per-user `ignore` and `attributes` files can also be + defaulted if some environment variables are set and may be accessed. + + Previously the default for `$HOME` was incorrect, as it was missing the + intermediate `.config/` directory. This is now present to build paths + exactly like git. + - <csr-id-275e80f3d602b63ef91efe31a92b4aafb2eeca44/> ref-map filtering now uses correct prefixes. + Previously specs could get filtered out server-side as a matching prefix + was entirely missing. + +### Changed (BREAKING) + + - <csr-id-449ff066d2b5dd423c639618193dd9e54d03c1f8/> `Repository::branch_remote_name()` returns `reference::remote::Name`. + That way it's made clear the remote can also be a URL, while rejecting + illformed UTF8. The latter isn't valid for remote names anyway as these + only support a very limited character set. + + Note that this error currently is degenerated, making it appear if the + remote name doesn't exists if illformed UTF-8 is found in what appears + to be a symbolic ref. + - <csr-id-71f15fc46fbaea455cf84a2b4cfe3e680047d790/> be specific about the kind of `diff::Error`, moving it to `diff::for_each::Error`. + +### New Features (BREAKING) + + - <csr-id-7413a284eb7754e63ba45d0f526347b9f79b557d/> `Tree::lookup_entry*()` returns attached `Entry` type. + That way chaining gets even easier. + +### Bug Fixes (BREAKING) + + - <csr-id-2bece79285e244a7029f9393dafc990e39420e2d/> `create::into(…)` takes `create::Kind` to determine if it's bare or not. + First of all, `bare` is not an option anymore, but a parameter as + it can't be defaulted. + Other public signatures change as well to accommodate for it. + +### Other (BREAKING) + + - <csr-id-c6f92c15529ddff7539667b74bafa2348f3040e3/> `DiffPlatform::text()` to `*::lines()`. + This is more specific as one could also do character changes in a single + line, and it adapts the signature to the new `imra-diff` powered + mechanism, for a 2x speed boost. + +## 0.25.0 (2022-10-10) + +<csr-id-5bef0a00e8d01110c054a517f6d9696f981a7efc/> + +### New Features + + - <csr-id-22d3b37ea6239170a478b859361a7d1d7ba01a9a/> `Url::try_from(path: &std::path::Path)` for more convenient instantiation. + - <csr-id-31a7089f2583832727e2175ada6fb5c30c3beebe/> make some private methods public to give callers more flexibility. + This allows to implement the fetch-negotiation part oneself and break + free from constraints of the delegate. + - <csr-id-4367994a8a7476eb44e1309e833e345fdb78f246/> add `config::SnapshotMut::commit()` to make clear it's transactional. + - <csr-id-d2bea003230078ffb4e6cd80d1b01c3995435a34/> add `config::SnapshotMut::forget()` to forget all changes before applying them. + The documentation was update to make clear when the changes are applied. + - <csr-id-4b1e3b3d91c51da3dbea9191e60f959a1266cf47/> add `Repository::find_default_remote()` which works on detached heads as well. + - <csr-id-25f06400c49ddd1688fd76f9285542b121b223b4/> `Remote::rem_map()` now specifies ref-prefixes to the remote. + This can greatly reduce the amount of refs sent. + +### Other + + - <csr-id-5bef0a00e8d01110c054a517f6d9696f981a7efc/> try to make the transport configurable after being boxed, but… + …that would force it to be 'static, which is something we explicitly + cannot have. We need references to be contained within, if I remember + correctly. + +### Changed (BREAKING) + + - <csr-id-e88de0f948325773db1925b07aa878e1dbb76bad/> All methods editing references don't take the author as parameter anymore. + Instead, these are taken from the git configuration and can be + configured on the fly with temporarily altered configuration. + - <csr-id-3a0fb1b45c757add49677450836c0aaf6179a2b5/> remote `lock_mode` from all methods dealing with reference edits. + It is now read from `core.filesRefLockTimeout` accordingly. + +### New Features (BREAKING) + + - <csr-id-3b29fc18672c0176684c797a0f16f85d09369bf8/> make jwalk fully optional + - <csr-id-78ad3df64f2c016ba17b158bd9ab1d2341aab399/> add `fetch::Transport::configure` to generically configure any transport. + +## 0.24.0 (2022-09-20) + +<csr-id-f5959edc1477573278afcfe23e9e52ddaacb37db/> +<csr-id-79c22557ce0aea1ee8f3a58192c2c76087ccd3d8/> + +### New Features + + - <csr-id-0871a96b9cc84d7a496d39393e081999c0a3fe17/> `Object::peel_to_tree()` as convenience method. + It's very common to try to work with trees, so let's make that easier. + - <csr-id-1027be960852618915014f9ba6e6632bd4999b0e/> `interrupt::Iter` now allows accessing the inner iterator without consumption. + This is useful if these provide additional out-of-band information. + - <csr-id-8c2e5c60f9f5f8d0859ecd84c17af20e88812512/> Once a change is obtained, it's easy to obtain changes line by line. + - <csr-id-7e96d1841989b37133cddf334724a2d6df557e69/> obtain a refmap after listing refs via `remote::Connection::list_refs_to_map()`. + With it it's possible to establish a relationship between what's about + to be fetched to local tracking branches as established by refspecs for + fetching. + - <csr-id-d51e7c901fe5ed60d5dd56006c5faedb71cad537/> Add `permissions::Config::git_binary` field + When true, default false, inject the git installation configuration file + if present at the cost of one `git config` invocation. + + Note that we rely on the underlying `gix-config` crate to not load + duplicate files. + + We also currently lie about the scope which is actually unclear - have + seen 'unknown' or normal scopes like `system`. + - <csr-id-1c13f1125664fbcc276a1ca440d168d07d0bf493/> add `prompt` to top level forwarding #450) + +### Bug Fixes + + - <csr-id-ae3866065c9c3c6d01709f8dde1cea1ae1345779/> rev-spec parsing can now handle the empty tree as full hex hash. + Even though the empty-tree object can be found when searched via + `Repository::find_object()`, previously it was not locatable when + used during rev-spec parsing. + - <csr-id-74ede2031d1beedf11f1cdf006fff71e597a2cb5/> `Reference::remote()` can produce remotes for URLs + +### Refactor + + - <csr-id-f5959edc1477573278afcfe23e9e52ddaacb37db/> use specific error type for `rev_parse_single()` + +### Changed (BREAKING) + + - <csr-id-99905bacace8aed42b16d43f0f04cae996cb971c/> upgrade `bstr` to `1.0.1` + +### New Features (BREAKING) + + - <csr-id-2992b1ba4e7bbeab26f41175cd31fd664abf2a11/> Add reference remote name type to make usage of `remote_name()` result clear + +### Other (BREAKING) + + - <csr-id-79c22557ce0aea1ee8f3a58192c2c76087ccd3d8/> `Tree::lookup_path()` -> `Tree::lookup_entry()`. + +## 0.23.1 (2022-09-01) + +### Changed (BREAKING) + + - <csr-id-36d8c57824a2b921012439105e49261fac66c955/> Remove 'unstable' feature. + It's not worth maintaining it especially since everything is in + pre-release mode right now. + + It might be something to re-introduce after go-live. + +### Bug Fixes + + - <csr-id-d18e76cfb512ef7fe5bfee6e87726372c6a4a8b6/> `max-performance-safe` mode does not include zlib-ng adjustments anymore. + git2 cannot handle this and fails to fetch packs after a couple of + seconds. + + It's unclear what is causing this except that git2 doesn't like libz + with zlibng support enabled, which happens if git2 in the + same tree is with us. + - Transitively through a kindly contributed fix in the `gix-discover` crate, `Repository` can now be opened on `exFat` volumes. + +## 0.23.0 (2022-08-28) + +### New Features + + - <csr-id-70aa850591de268488ae9bf2d3839a5c9c543c35/> The empty tree can always be returned by `Repository::(try_)find_object()` + This matches the behaviour of git and libgit2. + We consciously chose to only do this on the highest level, allowing lower + levels to determine if the object exists or not. + - <csr-id-8d0786646e17a82d20ca6b2799b54f6349d389f4/> Make `find::object::*::Error` publicly available. + - <csr-id-2d0b63997b276a53b3cf8f09fac51f8e3f044bcd/> Add `Reference::delete()` for simple reference deletion + - <csr-id-9170562059c3eaa529850025ef35ac5ffffc0fdf/> `Reference::set_target_id()` to easily set the target id of a reference + - <csr-id-950da602925e6376b08640ed3ebfdf407394db34/> `Reference::head_ref()` to quickly access the reference the head points to. + +### Bug Fixes + + - <csr-id-2834311b4f262c57e76627addaa4932196fd26b3/> `Commit::tree_id()` now returns a connected id + +### New Features (BREAKING) + + - <csr-id-e090f843f5cffc8e8e47a8cac2e6fb98e4c47771/> `gix-diff` is now included by default as part of core functionality + +## 0.22.1 (2022-08-24) + +A maintenance release without user facing changes. + +## 0.22.0 (2022-08-24) + +<csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/> + +### Chore + + - <csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/> uniformize deny attributes + +### New Features + + - <csr-id-c28bcec19b5526acf888f928e6ddc4671873368e/> support avoiding usage of `fast-sha1` in gix-features separately. + That way one has an angle on compile failures in client libraries, + see https://github.com/o2sh/onefetch/pull/752 for motivation. + - <csr-id-4f87a0672f7288486a9b6403c0bb07a6279d2cfe/> `Repository::write_blob[_stream]()` to more easily write blobs. + That way, one won't have to use the underlying `objects` database but + can remain in the land of `Repository` enabled types for longer. + - <csr-id-d35cd2a12c6db3d655ce10cad5c027bde99e19b4/> `SnapshotMut::apply_cli_overrides()` to make it easy to support things like `-c` + - <csr-id-2a839f3209f3bd35e0c0f7edff664cc953059f65/> `Repository::config_snapshot_mut()` to mutate configuration values in memory. + It's a first step towards writing changes back to disk, which can work + already, but probably wouldn't as we currently don't localize changes + to only one section type, i.e. Api, but instead may change values + from other sections. + - <csr-id-b1c40b0364ef092cd52d03b34f491b254816b18d/> use docsrs feature in code to show what is feature-gated automatically on docs.rs + - <csr-id-517677147f1c17304c62cf97a1dd09f232ebf5db/> pass --cfg docsrs when compiling for https://docs.rs + +### Bug Fixes + + - <csr-id-ff71730b4e3635533d9969d9dd44c0f3c75c6648/> Don't fail worktree tests if the system's git version is not supporting required features + +## 0.21.1 (2022-08-19) + +A maintenance release that speeds up `commit.describe()` performance if `max_candidates()` is 0. + +## 0.21.0 (2022-08-17) + +<csr-id-b38a212459e2646ab97ad7b5c24e54d962aae960/> + +### Changed + + - <csr-id-0235111a4fcc40c7b57d973bfce27a66eddea901/> Invert behaviour to `open::Options::strict_config()`, with lenient being the default. + This means API users will get libgit2 behaviour but commands like `gix` can + change options to emulate `git` behaviour. + +### New Features + + - <csr-id-a01525d159a33d6ad60a5324f2e9abbbe17fcfad/> `Kind` can now represent submodules. + This should complete the list of git repository types and flavors. + - <csr-id-5dac021bbbc5621167e7f49d62b11f68f76e42b6/> `open()` and `discover()` support opening submodules. + This includes submodule checkouts as well as their original module git + directories. + - <csr-id-067c3342f3564dd7f152a720e93e3aa590ae6524/> `open::Options::lenient_config(…)` to default otherwise invalid configuration values where possible + Originally required by https://github.com/starship/starship/issues/4266 . + - <csr-id-0bf8371706d319681c3f794af5cd13f2f50a27d0/> support core.worktree option + - <csr-id-b47bbb787ef2e31dd2612a56f9e7759ef8a188b8/> display for `object::tree::EntryRef` + - <csr-id-727768a49c41165b03ddcdbc71ca88b66c330f32/> `Head::prior_checked_out_branches()` + - <csr-id-ffe72918baf5c4c9f0f3709f75f068a663778588/> `Repository::index()` and `Worktree::index()`. + These methods provide a possibly updated shared index. + - <csr-id-47619f7c06a49dcf60a30e1a43a5352914183092/> add `Repository::object_cache_size_if_unset()` + - <csr-id-d2611cee61841bc7bd978bef5af7dc66154248a2/> `Commit::message_raw_sloppy()` to provide yet another way to obtain a commit message. + - <csr-id-906c95845fa4aa2d4390c522bb566a188b8c0e78/> add `rev_spec::parse::ObjectKindHint` to support `core.disambiguate`. + The latter is seemingly undocumented in the typical place, gix-config. + - <csr-id-ef187f0180d89544d9015cbc2bc03d8cb51f4615/> `Remote::with_refspec()` to add new unique refspecs + - <csr-id-d51ba42c643d8ee03a3c6b648f8524ff04827170/> `Remote::push_url()` to set it after the fact + - <csr-id-9b07b91ad065836e7473df6635025659af2865ee/> `Repository::remote_at(…)` to create an unnamed remote + - <csr-id-a67fc26b80e5d1183ddc5c6598396214f3e19945/> more conversions for `TryFrom`: `String` and `&str` + - <csr-id-7a512ecdf236afc0b3d562d60fa81ab62c00cd9d/> `Head::into_remote()` to try really hard to find the correct remote + - <csr-id-f392f26bec6069ac43ecd461b4f50e0def8b8972/> `Repository::remote_default_name()` to obtain the repo-wide remote for a a direction. + - <csr-id-f47464f64f7c21500a24f563b25a8fc070c41778/> `Repository::branch_names()` to obtain branch names for which configuration exists. + +### Bug Fixes + + - <csr-id-be6114e7c4ac48467db6acb2180b443dc9f59f32/> assure permissions per trust level are properly inherited into `open::Options`. + - <csr-id-270242c707bd086b7746ee45b55791587f1484b1/> provide additional explanation about when to use `open::Options::with()` + +### Refactor + + - <csr-id-b38a212459e2646ab97ad7b5c24e54d962aae960/> embrace `revision` module and move `rev_walk` there. + Let's embrace the idea of structured modules and platforms in the right + spot in the module hierarchy instead of forcing known names on it that + over-simplify. + +### Changed (BREAKING) + + - <csr-id-0deda0df55c11647f51374ed5a8bf11c932e2bae/> remove `permissions::Config::strict()` as they were unused internally. + Furthermore, they were allowing everything as before so better not to + have it. + - <csr-id-1c12d49eefa6d79ef50b2960f41b29de680ac8eb/> rename `Repository::load_mailmap*` to `Repository::open_mailmap*`. + For consistency with other similar methods. + - <csr-id-ea35183b53f2ff71bdf2270ac4f7470a85d7756f/> remove `Repository::load_index()` in favor of `repo.worktree().open_index()`. + - <csr-id-4fd096840ba27da6ce86678a85ede33e3be974ff/> `gix_revision` is now available in `revision::plumbing`. + That way it won't clash with the higher-level constructs on top of it + which use the same names. + - <csr-id-2424957cff75daacf6f6f14f74b9639f6875c4fb/> Turn `id::Ancestors` into general-purpose `RevWalk`. + - <csr-id-1df379ab0046887a330c0a670ad0414e79cfae7b/> remove `Permissions::git_dir` field entirely. + It was meant to help dealing with bailing out if the git dir isn't + fully trusted, but the way this was done was over-engineered especially + since the read-only permission level wasn't implemented at all. + + That function is now performed by a new flag, the `bail_on_untrusted` + which is off by default. + - <csr-id-5ab81ece15ec802ad4328ce31304233bd25b2929/> rename `Repository::remote_ref()` to `::branch_remote_ref()` + +### New Features (BREAKING) + + - <csr-id-e2aff28e818951785d933f4b55b2f1b882729cb6/> `Repository::rev_parse()` returns a `RevSpec`. + This lays the foundation for actually handling rev-specs faithfully. + Previous users should use `rev_parse().single()` to obtain a single + object id which was the only supported usecase previously. + +### Bug Fixes (BREAKING) + + - <csr-id-c68b125a46f666700cdbda6f8cd39a044f4feb1b/> Don't panic for `@{1}` in new repos; rename `Head::into_referent()` to `::try_into_referent()` + The signature change will prevent such issues in the future as one + cannot simply ignore new repositories. + +## 0.20.0 (2022-07-22) + +### New Features + + - <csr-id-1b765ec6ae70d1f4cc5a885b3c68d6f3335ba827/> respect `safe.directory`. + In practice, this code will rarely be hit as it would require very + strict settings that forbid any operation within a non-owned git + directory. + - <csr-id-840d9a3018d11146bb8e80fc92693c65eb534d91/> permissions for configuration. + It provides fine-grained control over what sources to load. + - <csr-id-657080829867d9dcb0c9b9cb6c1c8126c4df3783/> `gix-config` is now accessible in `git-repository::config`. + - <csr-id-d99453ebeb970ed493be236def299d1e82b01f83/> `gix config` lists all entries of all configuration files git considers. + Filters allow to narrow down the output. + - <csr-id-ebedd03e119aa5d46da07e577bfccad621eaecb5/> repository now initializes global configuration files and resolves includes + - <csr-id-de8572ff2ced9422832e1ba433955c33f0994675/> resolve includes in local repository configuration + - <csr-id-d5a48b82230b047434610550aacd2dc741b4b5f0/> `config::Snapshot::trusted_path()` to obtain trustworthy paths. + We also apply trust-based config query during initialization to assure + we don't use paths which aren't owned by the current user. + - <csr-id-5f9bfa89ceb61f484be80575b0379bbf9d7a36b3/> `Repository::config_snapshot()` to access configuration values. + - <csr-id-7f67b23b9462b805591b1fe5a8406f8d7404f372/> Use `gix-config` to write config file on initialization, including `logallrefupdates` and `precomposeunicode`. + - <csr-id-e263e13d312e41aa1481d104fa79ede509fbe1c5/> respect `core.logallrefupdates` configuration setting. + +### Changed (BREAKING) + + - <csr-id-68f4bc2570d455c762da7e3d675b9b507cec69bb/> Make `SignatureRef<'_>` mandatory for editing reference changelogs. + If defaults are desired, these can be set by the caller. + - <csr-id-f932cea68ece997f711add3368db53aeb8cdf064/> `Repository::committer()` now returns an `Option`, see `::committer_or_default()` for a method that doesn't. + - <csr-id-89a41bf2b37db29b9983b4e5492cfd67ed490b23/> remove local-time-support feature toggle. + We treat local time as default feature without a lot of fuzz, and + will eventually document that definitive support needs a compile + time switch in the compiler (`--cfg unsound_local_offset` or something). + + One day it will perish. Failure is possible anyway and we will write + code to deal with it while minimizing the amount of system time + fetches when asking for the current local time. + - <csr-id-6f4eea936d64fb9827277c160f989168e7b1dba2/> 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. + +### New Features (BREAKING) + + - <csr-id-d003c0f139d61e3bd998a0283a9c7af25a60db02/> 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. + - <csr-id-311d4b447daf8d4364670382a20901468748d34d/> change mostly internal uses of [u8] to BString/BStr + +## 0.19.0 (2022-06-13) + +### New Features (BREAKING) + + - <csr-id-266d4379e9132fd7dd21e6c8fccb36e125069d6e/> Make `realpath()` easier to use by introducing `realpath_opt()`. + That way there is consistency about how many symlinks to follow. + +## 0.18.1 (2022-05-23) + +### New Features + + - <csr-id-c78baecbb37fd92a0a86231810c9e35e9a4c21cd/> `Debug` for `Reference`. + +## 0.18.0 (2022-05-21) + +<csr-id-e63e722791a7795cd99048bed834459595c60abc/> + +### Other + + - <csr-id-e63e722791a7795cd99048bed834459595c60abc/> add ceiling_dirs option to upwards discovery + +## 0.17.0 (2022-05-18) + +<csr-id-53c06c7e6a3003b34edaab10db1f158e2fb57403/> +<csr-id-e4f4c4b2c75a63a40a174e3a006ea64ef8d78809/> +<csr-id-da8059ce26343c8cd275f43c879d98c92f77fa51/> + +### New Features + + - <csr-id-45920da7c8c5618c6e7258de08dbd633a637d017/> Add `Repository::head_name()`. + A convenient way to obtain the name of a head, if not detached. + +### Bug Fixes + + - <csr-id-a1680b44ef568317465d2971da6e0930f9885530/> `Commit::describe()` now returns annotated tags before lightweight ones and prefers more recent ones as well + - <csr-id-99365f221065ebc315ac80940ad72cae253743bc/> Support for in truncated history in git-describe + This allows `describe()` to work on shallow clones. + +### Other + + - <csr-id-53c06c7e6a3003b34edaab10db1f158e2fb57403/> allow reading information about remote branch + - <csr-id-e4f4c4b2c75a63a40a174e3a006ea64ef8d78809/> `path::discover()` now returns the shortest path. + If and only if it canonicalized the source path. That way, users will + still get a familiar path. This is due to `parent()` not operating + in the file system, which otherwise would be equivalent to `..`, + but that's not how we work. + + Maybe we should overhaul the way this works to use `../` instead + and just 'absolutize' the path later (std::path::absolute()) is + on the way for that. + - <csr-id-da8059ce26343c8cd275f43c879d98c92f77fa51/> remove unused variant + +### Changed (BREAKING) + + - <csr-id-80e8fd4a5944890f43f3d888b7a73bb26351b195/> integrate trust model into repository discovery + That way it's possible to ignore repositories which effectively + aren't owned by the current user, or to not ignore them (default) + but assign tighter permissions to the repository. + - <csr-id-2e39b0ede98826e6f85c56fef77ac65a5b7e7ac2/> `path::discover::existing()` -> `path::discover()` + - <csr-id-38dfdcf80f9b7368ccaa10f4b78b2129849848d0/> 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. + +### New Features (BREAKING) + + - <csr-id-32dc1829a5661f66396d109c8d0a8eaae6b1f532/> use `gix-credentials` in `gix-protocol` + +## 0.16.0 (2022-04-05) + +### New Features + + - <csr-id-47556f6815148ed960a727fd122f7162345544c3/> auto-calculation of a good hex-len, like what git does + If the `core.abbrev` value isn't set or is set to `auto`. + - <csr-id-654f4afb794a370b7cd9d9502ff6d0c3378ec417/> `Commit::describe()` + A way to fluidly configure a `git describe` operation and run it. + + Along that, a new `Tag` top-level object was added as well to provide + convenient access to otherwise lower-level objects. It's not strictly + required for our implementation here but it's needed for a symmetric + API. + +## 0.15.0 (2022-04-03) + +<csr-id-5f7595305efc85d6ca3c541e9f9adac3915cbd84/> +<csr-id-c10f07c50f6dde4b39bf1e3ff26c239c5f202912/> +<csr-id-bbc6efeceb26050973e1425e68a52e51b9df4572/> + +### New Features + + - <csr-id-1322dbf6827ea5cc1d71175afb669e01fb1242ef/> support for object replacement + The Repository now respects replacement refs created by `git replace` + and picks up environment variables for its configuration as well. + + Which environment variables are used is fully configurable. + - <csr-id-a39bf71531ee0a6c8db082758d3212c805ce2bf0/> support for trimming of whitespace around name and email + It's separated from parsing to assure we can round-trip, but it's + made easy to obtain trimmed results using new methods. + + This high-level git-repository will also trim by default now. + - <csr-id-00578040a699e1939b3d3813616d3cc4e1d8669e/> `Repository::head_commit()` + A shortcut to get to the commit much faster. + - <csr-id-def80df2e165b74f4b053e4030f563902b7d34a4/> `ein tool estimate-hours` now supports mailmaps + - <csr-id-f0d8a49587c08713350252e1701a45bb308b6f9d/> `Repository::head_id()` + A long-needed shortcut. + - <csr-id-d2388d8d80f379eccc9ee84ebe07acd67d154630/> `gix repository mailmap entries` + - <csr-id-e3bc1b410409a9e27894a5cac48b06d8c3295e36/> unstable mailmap module + - <csr-id-1be00cf9e00ce9428ffddb2c79b2373926069b13/> `Commit::short_id()` + - <csr-id-c7dff9e8b695d298a3fb21f19f51752a885a5ce3/> in-manifest and in-lib documentation of feature toggles + - <csr-id-9f5663ed83d83c7335b346313837d4cada9cd846/> `easy::Commit::time()` to access the committers time conveniently. + - <csr-id-7c88b62e439af7a60ddb68fb6737cb3b1cebf00d/> easy::Head::name() to learn about the name of the HEAD ref + It's mainly for completeness to provide people with with a `FullNameRef` + of HEAD. + - <csr-id-3b0913a2e6695e4e9e94341ef48d2ba3b4a518e6/> `easy::Head::peel_to_commit_in_place()` + It allows to quickly get a commit from the head, something most people + want when getting started with any kind of tool. + - <csr-id-1c22d76c26464db4a185e19bb6c1f9a17fa19bc9/> `Repository::load_index()` + This method makes the index of the default workspace available. + +### Bug Fixes + + - <csr-id-c329dd75420f82d506fd415cd377f7df6c6ccbad/> Properly classify worktrees as non-bare, helps with `ein t find` + They use git-files which point to the actual repository data. + +### Changed (BREAKING) + + - <csr-id-a8b6589a7c645f323f95da6cb94321fc967e9b06/> Easier access to local and remote branches + +### New Features (BREAKING) + + - <csr-id-8945d95f7fa88562d37ff67ac6e38bead73dd2df/> `interrupt::Iter`, rename `interrupt::Iter` -> `interrupt::IterWithError` + - <csr-id-813a3bea88cdbe1fd9b0a8070efeee2a44f7823e/> Let 'easy::Object::try_into_…()` return `try_into::Error`. + That way, the typical usage of `try_into_commit()?` will not result + in a strange error about `Object` not being convertible into some + error. We think having a real error there is the least surprising. + +### Bug Fixes (BREAKING) + + - <csr-id-c863ea5b34fa9ee3dac21c1f85587da16045f8d8/> do not install signal handlers by default + The previous behaviour is meant to be convenient for the casual + user even though it + ends up being surprising when used in applications that install + their own signal handlers and need more control over how the program + shuts down. + + This is now fixed by **requiring an explicit `setup()`** call before + the first tempfile is created, which makes it a breaking change. + +### Other (BREAKING) + + - <csr-id-5f7595305efc85d6ca3c541e9f9adac3915cbd84/> `Id::prefix` -> `Id::shorten()` + It's definitely more intuitive that way. + +### Refactor (BREAKING) + + - <csr-id-c10f07c50f6dde4b39bf1e3ff26c239c5f202912/> dissolve 'easy' module by moving everything one level up + - <csr-id-bbc6efeceb26050973e1425e68a52e51b9df4572/> clarify different repository types much better + +## 0.14.0 (2022-01-23) + +<csr-id-7a91212631219e94b9454d2874b53f3ecc1db77e/> +<csr-id-b2cc0c63570d45de032d63e62d94c3344783440e/> +<csr-id-ebc7f47708a63c3df4415ba0e702660d976dfb3e/> +<csr-id-2290d006705ff47ad780b009fe58ee422b3285af/> + +### New Features + + - <csr-id-667485e133ca29fcc6914a7142cf953564b5fce3/> Add `easy::Tree::traverse()` platform + - <csr-id-8f650c089c88698483f778aa5c0070f606b94f09/> Add `easy::Commit` object + It allows to more conveniently access commit information. + - <csr-id-0ae2a8da010d848d98bef47ac923ae1d770091ff/> `easy::Oid::ancestors()` now supports `sorting()` and iteration by first commit only + Especially the sorting is useful to avoid having to sort commits by + hand after collecting them. + - <csr-id-bc77534f9c385046f6c9adb994b1443307afda46/> Use GITOXIDE_OBJECT_CACHE_MEMORY to control how much object cache is used + Note that this is mostly for debugging or quickly seeing if object + caches help with certain operations. + + Ideally the implementation knows themselves and sets up caches + accordingly, probably after trying it with these environment variables. + +### Changed (BREAKING) + + - <csr-id-6e3a745dfada66a2fcac256dae0ac63959e74d08/> rename `easy::Object` methods returning `Ref` objects to have `ref` in their name + That way, it's more clear that the `Ref` versions are low-level ones + whereas the `into_` ones are higher-level ones that are part of the + `easy` suite. + - <csr-id-b6730979808ce28b98c65888a349f1e3d0ea1b9a/> Rename `OwnedObject` to `DetachedObject` + The latter more clearly indicates what the difference is to + `Object` (which is attached and carries a lifetime) + - <csr-id-c4184f3c31ffc4597bd089e8140653906a6594d8/> Remove easy::borrow::Error entirely; support for multiple objects per handle + This massive simplification finally allows any amounts of objects to be + created while adding support for reusing their data buffers thanks + to a simple free-list stored with the handle. + - <csr-id-880b56426859306aa30038ff35e2ad14607e9e90/> rename `easy::Object` to `OwnedObject`; remove `Ref` suffix from `ObjectRef` and `TreeRef` + - <csr-id-f9c0493460ab7c664aaa231ffcf7dfd56076c920/> use `gix_odb::Find*` traits in prelude, instead of `gix_pack::Find*` + These are higher-level and generally more desirable. + The Find traits in `gix-pack` are more useful internally when packs + have to be handled directly, for example when generating packs. + - <csr-id-83d7b31e7dd6d09eea79fc3c68620d099459132f/> rename easy::State to easy::Handle + As the first step to remove the 'Easy' abstraction. + - <csr-id-5e7aa1689f5d7ea5b510611a3ca0868828226291/> fully rely on OdbHandle in repository State + - <csr-id-57de915886b76f80b3641def0ccf4fd79e334fc8/> Rename `Repository::odb` to` Repository::objects` + This way it's more inline with `Repository::refs`. + - <csr-id-93db4a5e70456d2c33ea010e3c86e5f26eb1bcc0/> remove Repository::refresh_object_database() + With the linked DB this is simply not possible anymore and we expect + these updates to happen automatically in future for greater convenience. + + For now, in order to refresh a repository, one has to reopen it. + - <csr-id-580e96c1b2d9782a2e8cf9d1123f6d53a5376a3d/> Rename `Handle` to `Cache` + Because this is exactly what it is effectively. + Also add some basic instantiation for the new object store. + - remove borrowing Repo as possible failure cause + The `easy::Handle` is now a full (but shared) clone of the original + Repository with additional thread-local state, hence there is no more + need for a way to access the original repository. + - remove Easy… abstraction in favor of Handle + This great reduction of complexity allows for being multi-threading + capable by default with the option to turn that off at compile time. + + All `to|into_easy…()` methods are removed in favor of `to_easy()` + along with the removal of all `Easy` types in favor of the single + - remove pack-cache from `Find::try_find(…)` + With the new architecture this can be an implementation detail without + forcing it to be Sync. + - move gix_pack::data::Object to gix_object::Data, massively alter gix_odb::Find trait + This will break a lot, but has to happen to prepare these traits for the + next generation of object databases. + +## 0.13.0 (2021-11-29) + +<csr-id-951c050ecbb70c9de216603e55c7cfbc89a067e3/> +<csr-id-0e1875363fea09452789d7a90fc6860a7996d6d3/> + +With changes to `gix-ref`, what follows is all the adjustments made to simplify the `gix` implementation. + +### Changed (BREAKING) + + - <csr-id-5d498a33236391d8e456f267b1bf6af24de66f11/> file::Store::iter() is now a platform, with `.all()` and `.prefixed(…)` respectively + This way, it's possible to keep shared ownership of the packed buffer + while allowing the exact same iterator machinery to work as before. + - <csr-id-15d429bb50602363292453606902bdce5042d9a5/> file::Store::(try_)find(…, packed) was removed + The packed buffer is now handled internally while loading it on demand. + When compiled with `gix-features/parallel` the `file::Store` remains + send and sync. + + The packed refs buffer is shared across clones and it's recommended + to clone one `file::Store` instance per thread, each of which can + use its own namespace. + - <csr-id-95247322a8191edfa7fac9c5aa72b40239f3aa88/> move `gix_ref::file::WriteRefLog` to `gix_ref::store::WriteRefLog` + +### Bug Fixes (BREAKING) + + - <csr-id-fc8e85cd71d4f16bc8daad0b790d875045faefff/> ref namespaces are now thread-local + Previously these were shared in the shared Repo instance, which makes + threaded applications impossible to remain deterministic across multiple + connections. + + Now they are local to the thread, which allowed some methods to remove + their Result<> as they cannot fail anymore, the reason for this being + a breaking change. + +### Other (BREAKING) + + - <csr-id-951c050ecbb70c9de216603e55c7cfbc89a067e3/> Reference::logs() -> Reference::log_iter() + The latter now returns a standard Platform to iterate over all + reflog entries from oldest to newest or vice versa. + +### Refactor (BREAKING) + + - <csr-id-0e1875363fea09452789d7a90fc6860a7996d6d3/> `file::Store::base` is now `file::Store::base()` and read-only + That way, file databases can't be repositioned anymore, it's recommended + to recreate it if that's desired. + +## 0.12.0 (2021-11-16) + +### New Features + + - <csr-id-b7aab9efd42975e8f2dcb5c97e51495996175702/> Allow `PartialNameRef` to be created from owned items + +### Changed (BREAKING) + + - <csr-id-e8b091943f0c9a26317da0003f7fcdf5a56ef21a/> Rename gix->ein and gixp->gix + +## v0.11.0 (2021-10-19) + +A maintenance release to properly dealing with previously breaking changes in `gix-hash`. + +## v0.10.0 (2021-10-15) + +<csr-id-1cb41f81cffe19c75aadf49a5cc7ec390ec6cae7/> +<csr-id-2f2d856efe733d3cf81110c0e0607d2e7c40d968/> +<csr-id-a19567eceab0dd7f5478b83c2ff9ce79754db308/> +<csr-id-61793ff42f5c2f9ddf302901adea2dac6149eac8/> +<csr-id-0cd585e20a5abd323a34ec32d92fbd48531b3b18/> +<csr-id-89f15051763a03627f332c46beedfc53b8b9b15b/> +<csr-id-f644d0ede7a2e8d344a81c7003c3877eed64a6b0/> +<csr-id-ac3b9efb7b90958274ce55800959d930f8641115/> +<csr-id-03fe8a7ebd34608d725d4585da5c1630123762ec/> +<csr-id-8fe461281842b58aa11437445637c6e587bedd63/> +<csr-id-b209da29f361512ba757febf56bc1aca039f2a41/> +<csr-id-741558dd8194590c5cc8566aa22f96e73df38edf/> +<csr-id-e16603b15b5488b81563c583cd8f5292ab9d24a2/> +<csr-id-54a64a588ff72515451a3d0343306ac4abe1cb35/> +<csr-id-1f4e45a26a3d2727f00c3f248452dd41fc8a95be/> +<csr-id-1958e8aa65eb97f9755f065d713f0a48c5e41b1b/> +<csr-id-066f59b23a125b1ce9a015437a3f4468e5791da0/> +<csr-id-329d183ad4e256a4f9cdeb34589b5f3432495f79/> +<csr-id-1a1959f487d69ffdd5394775b707139c44dbd11d/> +<csr-id-5e091fb2b4fd33879c176e6dadd3c9805d99af50/> +<csr-id-e3760679547e0dc1bf31761acdb6e63b04a50919/> +<csr-id-de004b318fdc6923711dd001bff5f4bcbba4270e/> +<csr-id-41afad3386461b658ee859225785b6de86d13cfb/> +<csr-id-f582439a3efe5c234f54c488792395e9de09a032/> +<csr-id-42080aefe3b286afb58235c1c22491579ab73919/> +<csr-id-d422b9a31a37a03551bec4382039aaf3a7e49902/> +<csr-id-e7c061b10c263001eb4abf03098d6694b770f828/> +<csr-id-66292fd1076c2c9db4694c5ded09799a0be11a03/> +<csr-id-5aadf75a0d93d1a990ad0305c38366c5c22bdcb2/> +<csr-id-d79a1b75304e397c16b5af7055906591a187ddfd/> +<csr-id-7d2b6b66e09ff39727fccd68d190679b52d90126/> +<csr-id-06996e032b1e451a674395ebaca94434fac46f05/> +<csr-id-daec7167df524b329daad7dabb1b9920b6ef8936/> +<csr-id-4fe4786797d240a59d29dbf2c6310490a381c8b6/> +<csr-id-debe0094826f83839f907523715def929133fd58/> +<csr-id-56e39fac54bfa3871c42bbf76a9f7c49486b85be/> +<csr-id-293bfc0278c5983c0beaec93253fb51f00d81156/> +<csr-id-650241251a420602f74037babfc24c9f64df78d8/> +<csr-id-2b4a61589a7cba3f7600710e21304e731ae3b36a/> +<csr-id-8b82f7d44c7eb63b7922ddc31ada9cefdce776b0/> + +### New Features + + - <csr-id-11b64fce4630371633b6415f227eecdc6b42b20b/> Make `gix_url::Url` available under `gix::Url` + - <csr-id-80b8331092f4856f52afa1d85fa375ae688bdd28/> add easy::ext::ObjectAccessExt::tag(…) to create tag objects + It's a quick sketch on how tag object creation could work. + + Note the duplication the method name using traits, which seems like a good solution + to the problem of differentiating tag objects and tag references while + keeping the method name short. + + Most will only ever need one, right? + + Even in my example that's not the case, so maybe we have to rename it. + - <csr-id-0ebfeb614264ca06ab763189e55e6c016c9997af/> Make `gix_url::Url` available under `gix::Url` + +### BREAKING Changes + + - Use 'to_*' when converting `easy::Object` to specific object kind + This also makes the API more consistent while being more idiomatic. + - Avoid duplicate module paths in 'tree' and 'commit' + - rename ObjectIdExt::ancestors_iter() to *::ancestors() + - rename `easy::Object::to_(commit|tag)_iter()`… + …to `easy::Object::try_to_(commit|tag)_iter()` for consistency. + - rename `*::State` into `*::Platform` + - various small API changes + - move easy::head::peel::Error -> easy::head::peel::to_id::Error + - rename path::is_git to path::is + - rename easy::reference::log::State to easy::reference::Logs + +### Other + + - <csr-id-293bfc0278c5983c0beaec93253fb51f00d81156/> loose reference iteration with non-dir prefixes… + Previously it was expected for the prefix `Path` to always exist for + the prefix to be valid. This, however, is not similar to packed + prefixes, which allow non-dir prefixes as well. + + Now we will check if the prefix is actually a directory, and if not + split it into its parent directory and the filename portion. The latter + is then used for prefix matching file names within that directory. + - <csr-id-650241251a420602f74037babfc24c9f64df78d8/> Add 'references().all().peeled().'… + …to not only make typical usage of iterated references more convenient + but also work around a double-borrow error one would see otherwise. + - <csr-id-2b4a61589a7cba3f7600710e21304e731ae3b36a/> filter refs correctly, but… + …it needs a way to peel references right away without trying + to double-borrow. This means the Iterator needs to implement this. + - <csr-id-8b82f7d44c7eb63b7922ddc31ada9cefdce776b0/> improved changelog… + …akin to 'Keep a changelog'. + +### Refactor + + - <csr-id-8fe461281842b58aa11437445637c6e587bedd63/> split data::output::count::objects into files + - <csr-id-b209da29f361512ba757febf56bc1aca039f2a41/> use new gix_pack::cache::Object trait + - <csr-id-741558dd8194590c5cc8566aa22f96e73df38edf/> remove object cache impl which now lives in gix-pack + +### Other + + - <csr-id-e16603b15b5488b81563c583cd8f5292ab9d24a2/> :remote_url() is now optional + Otherwise it wouldn't work on repos that don't have a remote set yet. + Instead of failing, we don't create links. + - <csr-id-54a64a588ff72515451a3d0343306ac4abe1cb35/> try to create persistent Easy iterator, but can't make it Send… + …which is fair as it contains borrowed RefCells, which really would have + to be owned to work for this, which would in turn require the Ancestor's + struct to be kind of self-referential + - <csr-id-1f4e45a26a3d2727f00c3f248452dd41fc8a95be/> path::is + - <csr-id-1958e8aa65eb97f9755f065d713f0a48c5e41b1b/> path::discover + - <csr-id-066f59b23a125b1ce9a015437a3f4468e5791da0/> top-level of 'path' module + - <csr-id-329d183ad4e256a4f9cdeb34589b5f3432495f79/> object_id + - <csr-id-1a1959f487d69ffdd5394775b707139c44dbd11d/> repository + - <csr-id-5e091fb2b4fd33879c176e6dadd3c9805d99af50/> ext::tree + - <csr-id-e3760679547e0dc1bf31761acdb6e63b04a50919/> easy::object::peel + - <csr-id-de004b318fdc6923711dd001bff5f4bcbba4270e/> easy::object::errors + - <csr-id-41afad3386461b658ee859225785b6de86d13cfb/> a seemingly slow version of path lookup, but… + …in debug mode it's faster than the fast path, despite doing more + and being the same when it comes to searching path components. + - <csr-id-f582439a3efe5c234f54c488792395e9de09a032/> easy::object, sans a few child-modules + - <csr-id-42080aefe3b286afb58235c1c22491579ab73919/> update 'platform' information to reflect the current usage + - <csr-id-d422b9a31a37a03551bec4382039aaf3a7e49902/> configure caches with env vars using `apply_environment()` + - <csr-id-e7c061b10c263001eb4abf03098d6694b770f828/> refactor + - <csr-id-66292fd1076c2c9db4694c5ded09799a0be11a03/> set package cache via RepositoryAccessExt + - <csr-id-5aadf75a0d93d1a990ad0305c38366c5c22bdcb2/> Add GITOXIDE_PACK_CACHE_MEMORY_IN_BYTES=536870912 to control pack-cache size… + …which can mean another considerable speed-up for many workloads, but + usually needs some knowledge about the application, repos, and should + thus be with the user. + - <csr-id-d79a1b75304e397c16b5af7055906591a187ddfd/> allow disabling the pack cache with GITOXIDE_DISABLE_PACK_CACHE + - <csr-id-7d2b6b66e09ff39727fccd68d190679b52d90126/> prepare for configurable pack cache + - <csr-id-06996e032b1e451a674395ebaca94434fac46f05/> object-cache to allow for a speed boost… + …by avoiding duplicate accesses to hit the object database. + However, the cost for the cache are relatively high and involve some + memory copying, so hit rates of about 50% is certainly what is needed + to get any speed boost at all. + - <csr-id-daec7167df524b329daad7dabb1b9920b6ef8936/> build commit history for later use in changelog generation + - <csr-id-4fe4786797d240a59d29dbf2c6310490a381c8b6/> Allow object access during commit ancestor traversal… + …by getting only a temporary handle to the pack-cache. The cost of this + should be negligible compared to the cost of object decoding. + - <csr-id-debe0094826f83839f907523715def929133fd58/> sketch history acquisition + - <csr-id-56e39fac54bfa3871c42bbf76a9f7c49486b85be/> add 'Head::peeled()' method + +### Changed (BREAKING) + + - <csr-id-c3385cd144298eb9f06d7751d180e26da7b4d338/> `easy::Object::try_to_commit()` now returns `Result<CommitRef>`… + …without the nested `Option`, folding the type mismatch into a specific + `conversion::Error` instead. + - <csr-id-e59f901f47fb0180211494a1591aed62b856406a/> rename `ObjectAccessExt::tag(…)` to `*::tag_reference(…)`, add `easy::Object::try_to_tag()` + This one also contains the first and probably only test for tag object + creation. + +## v0.9.1 (2021-09-10) + +<csr-id-293bfc0278c5983c0beaec93253fb51f00d81156/> +<csr-id-650241251a420602f74037babfc24c9f64df78d8/> +<csr-id-2b4a61589a7cba3f7600710e21304e731ae3b36a/> +<csr-id-8b82f7d44c7eb63b7922ddc31ada9cefdce776b0/> + +- Remove `max-performance` feature from default set until the `msvc` build issue is fixed. Otherwise it will surprisingly break windows builds. + +### Other + + - <csr-id-293bfc0278c5983c0beaec93253fb51f00d81156/> loose reference iteration with non-dir prefixes… + Previously it was expected for the prefix `Path` to always exist for + the prefix to be valid. This, however, is not similar to packed + prefixes, which allow non-dir prefixes as well. + + Now we will check if the prefix is actually a directory, and if not + split it into its parent directory and the filename portion. The latter + is then used for prefix matching file names within that directory. + - <csr-id-650241251a420602f74037babfc24c9f64df78d8/> Add 'references().all().peeled().'… + …to not only make typical usage of iterated references more convenient + but also work around a double-borrow error one would see otherwise. + - <csr-id-2b4a61589a7cba3f7600710e21304e731ae3b36a/> filter refs correctly, but… + …it needs a way to peel references right away without trying + to double-borrow. This means the Iterator needs to implement this. + - <csr-id-8b82f7d44c7eb63b7922ddc31ada9cefdce776b0/> improved changelog… + …akin to 'Keep a changelog'. + +## v0.9.0 (2021-09-08) + +- rename `prelude::ConfigAccessExt` to `prelude::RepositoryAccessExt` +- `prelude::ObjectAccessExt::commit()` signature change +- cargo feature changed in incompatible ways. `network` was replaced by more finegrained options for _blocking_ and _async_ networking, as well as optional http transport + +### New + +- `init()` +- `init_bare()` +- `Repository::init(Kind)` +- `open()` +- `Repository::open()` +- `easy::Head` +- `easy::ext::ReferenceAccessExt::head()` +- `ext::ReferenceExt` trait + +### Breaking +- **renames / moves / Signature Changes** + - `path::Path` to `Path` + - `init::repository(dir)` -> `path::create::into(dir, **Kind**)` + +## v0.8.2 (2021-09-07) + +## v0.8.1 (2021-08-28) + +- Introduce `EasyArcExclusive` type, now available thanks to `parking_lot` 0.11.2 + +## v0.8.0 (2021-08-27) + +- Rename `object` to `objs` to be equivalent to `refs` and make space for the new `object` module +- various minor version updates of pre-release dependencies + +## v0.7.2 (2021-08-17) + +## v0.7.1 (2021-08-13) + +## v0.7.0 (2021-08-10) + +## v0.6.0 (2021-05-28) + +## v0.5.0 (2021-04-08) + +## v0.4.0 (2020-09-12) + +## v0.3.0 (2020-08-12) + +## v0.1.0 (2020-07-12) + +## 0.0.0 (2023-02-10) + +### Commit Statistics + +<csr-read-only-do-not-edit/> + + - 2 commits contributed to the release. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + +<csr-read-only-do-not-edit/> + +<details><summary>view details</summary> + + * **Uncategorized** + - Release gix v0.0.0 ([`8bce6d5`](https://github.com/Byron/gitoxide/commit/8bce6d5cba12630bf4d12ed92f572a379d945329)) + - Add `gix` crate to reserve name ([`5104a78`](https://github.com/Byron/gitoxide/commit/5104a787127bf0b1f9b65f371b7c5b79f491e396)) +</details> + |