From 10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 14:41:41 +0200 Subject: Merging upstream version 1.70.0+dfsg2. Signed-off-by: Daniel Baumann --- vendor/gix/CHANGELOG.md | 1606 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1606 insertions(+) create mode 100644 vendor/gix/CHANGELOG.md (limited to 'vendor/gix/CHANGELOG.md') 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 + + + + - 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 + + + +
view details + + * **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)) +
+ +## 0.38.0 (2023-03-01) + +### New Features + + - the `hp-tempfile-registry` feature toggle to control the `dashmap` dependency. + And also, probably provide a better performance in certain cases. + - 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`. + - 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 + + - `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) + + - 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. + - 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 + + + + - 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 + + + +
view details + + * **[#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)) +
+ +## 0.37.2 (2023-02-24) + +### Bug Fixes + + - reproduce a diff issue and fix it + Diffs could be quite wrong and this is a small repro along with the fix. + +### Commit Statistics + + + + - 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 + + + +
view details + + * **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)) +
+ +## 0.37.1 (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](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **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)) +
+ +## 0.37.0 (2023-02-20) + +### Bug Fixes + + - `Repository::object_cache_size()` now unsets the cache if `Some(0)` is passed. + Previously it would fail. + +### New Features (BREAKING) + + - `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()` 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 + + + + - 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 + + + +
view details + + * **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)) +
+ +## 0.36.1 (2023-02-20) + +### Bug Fixes + + - 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 + + + + - 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 + + + +
view details + + * **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)) +
+ +## 0.36.0 (2023-02-17) + +### New Features + + - cloning repositories doesn't require a committer anymore. + This is similar to what git does and probably a decent convenience to have. + +### Commit Statistics + + + + - 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 + + + +
view details + + * **[#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)) +
+ +## 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) + + - a note of the pending rename of `git-repository` to `gix` + +### New Features + + - 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. + - Add `diff.renames` and `diff.renameLimit` keys to config tree. + In preparation for the implementation. + +### Commit Statistics + + + + - 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 + + + +
view details + + * **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)) +
+ +## 0.34.0 (2023-02-09) + + + +### Documentation + + - fix typos + +### New Features + + - 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. + - 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. + - 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 + + - don't panic, but error when parsing the rev-specs `^`, `..`, `...`. + +### Chore (BREAKING) + + - adjust to changes in `gitoxide` for clap upgrade to 4.1 + +### 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>` to be able to account for date parse errors. + +## 0.33.0 (2023-01-10) + + + +### Chore (BREAKING) + + - upgrade MSRV to v1.64 (possible due to `windows` upgrade) + +## 0.32.0 (2023-01-09) + + + +### Bug Fixes + + - 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. + - 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 + + - 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) + + - `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) + + + + +### New Features + + - 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. + - collect ssh-specific options to control how the ssh program is invoked. + These are passed through when creating the ssh transport. + +### Other + + - 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`) + to the first tree of the first commit. + +### Chore (BREAKING) + + - upgrade to prodash v23 + +## 0.30.2 (2022-12-26) + + + +### New Features + + - make more HTTP options available + - `http.schannelCheckRevoke` + +### Other + + - provide a repository clone example + +## 0.30.1 (2022-12-22) + +### New Features + + - `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) + + + +### Changed + + - represent `GIT_(COMMITTER|AUTHOR)_(NAME|EMAIL|DATE)` with git configuration. + That way it becomes more obvious where values are coming from. + +### New Features + + - 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. + - `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. + - network related Error type support `is_spurious()` method. + That way the caller can determine more easily if it makes sense + to try again. + - Make `prodash::tree` available as `progress::tree`. + - 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. + - add `permissions::Environment::http_transport`. + That way it's possible to deny using environment variables that affect + the HTTP transport, like setting the proxy. + - `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. + - 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. + - 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 + + - provide a clearer error message when trying to open a git repository that isn't one. + - http transports can now reuse a connection. + This makes connections more efficient generally and `cargo` relies + on that behaviour in their tests as well. + - 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. + - improve error verbosity when fetching and cloning + - `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. + - when fetching from file://, don't upset windows by trying `d:/foo`, use `d:\\foo` instead. + - `config::CommitAutoRollback` now implements `DerefMut`. + +### Changed (BREAKING) + + - 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. + - 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. + - `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) + + - `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. + - 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. + - remove `SnapshotMut::apply_cli_overrides()` in favor of `open::Options::cli_overrides()`. + - more type-safety for remote names by making clear they can be named after URLs. + +### Other (BREAKING) + + - `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) + + + +### New Features + + + + - 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 + + - `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. + - also sort entries lexicographically + +### Other + + - 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) + + - 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. + - 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) + + + +### New Features + + - `Id` implements `std::fmt::Display` + - `Remote::repo()` to obtain the underlying repository. + For convenience. + - Support for user-customizable user agent strings. + Doable by setting the `gitoxide.userAgent` variable. + - add `env::agent()` for obtaining the default client agent string. + +### Other + + - 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) + + - 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) + + - Move `object::tree::diff::change::DiffPlatform` to `object::blob::diff::Platform`. + - new `DiffPlatform::counts()`, open `DiffPlatform` for use of `gix-diff::blob::*`. + +## 0.26.0 (2022-11-06) + + + +### New Features + + - diff algorithm is controlled by git configuration `diff.algorithm` + - Query of `core.logAllRefUpdates` is now fallible. + This is the same behaviour as shown by `git`, which requires valid + values or aborts. + - automatically handle `.keep` files after writing a pack bundle to disk. + The logic implemented here tries to do the right thing, that is when + we have reason to believe that the objects in the pack are linked up + with a ref, we delete the keep file automatically. + + However, if there was no local ref edit as the ref specs didn't contain + local destinations, or if the pack was empty, then keep the .keep file + and leave it to the caller to handle. + - Use `core.askpass` when building the credential helper. + Previously it would only consider the environment variable, which can + still override the provided git-configuration at core.askpass . + - `remote::fetch::Prepare::handshake_outcome()` to obtain server information right after listing refs. + - `open::Options::config_overrides()` for early configuration; support for `init.defaultBranch`. + +### Bug Fixes + + - don't allow non-bare repositories to be initialized into non-empty directories. + - `init_bare()` now creates the destination directory if it doesn't exist. + - build correct path for `$HOME/.config/…` files. + The special per-user `ignore` and `attributes` files can also be + defaulted if some environment variables are set and may be accessed. + + Previously the default for `$HOME` was incorrect, as it was missing the + intermediate `.config/` directory. This is now present to build paths + exactly like git. + - ref-map filtering now uses correct prefixes. + Previously specs could get filtered out server-side as a matching prefix + was entirely missing. + +### Changed (BREAKING) + + - `Repository::branch_remote_name()` returns `reference::remote::Name`. + That way it's made clear the remote can also be a URL, while rejecting + illformed UTF8. The latter isn't valid for remote names anyway as these + only support a very limited character set. + + Note that this error currently is degenerated, making it appear if the + remote name doesn't exists if illformed UTF-8 is found in what appears + to be a symbolic ref. + - be specific about the kind of `diff::Error`, moving it to `diff::for_each::Error`. + +### New Features (BREAKING) + + - `Tree::lookup_entry*()` returns attached `Entry` type. + That way chaining gets even easier. + +### Bug Fixes (BREAKING) + + - `create::into(…)` takes `create::Kind` to determine if it's bare or not. + First of all, `bare` is not an option anymore, but a parameter as + it can't be defaulted. + Other public signatures change as well to accommodate for it. + +### Other (BREAKING) + + - `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) + + + +### New Features + + - `Url::try_from(path: &std::path::Path)` for more convenient instantiation. + - make some private methods public to give callers more flexibility. + This allows to implement the fetch-negotiation part oneself and break + free from constraints of the delegate. + - add `config::SnapshotMut::commit()` to make clear it's transactional. + - add `config::SnapshotMut::forget()` to forget all changes before applying them. + The documentation was update to make clear when the changes are applied. + - add `Repository::find_default_remote()` which works on detached heads as well. + - `Remote::rem_map()` now specifies ref-prefixes to the remote. + This can greatly reduce the amount of refs sent. + +### Other + + - 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) + + - 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. + - remote `lock_mode` from all methods dealing with reference edits. + It is now read from `core.filesRefLockTimeout` accordingly. + +### New Features (BREAKING) + + - make jwalk fully optional + - add `fetch::Transport::configure` to generically configure any transport. + +## 0.24.0 (2022-09-20) + + + + +### New Features + + - `Object::peel_to_tree()` as convenience method. + It's very common to try to work with trees, so let's make that easier. + - `interrupt::Iter` now allows accessing the inner iterator without consumption. + This is useful if these provide additional out-of-band information. + - Once a change is obtained, it's easy to obtain changes line by line. + - 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. + - 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`. + - add `prompt` to top level forwarding #450) + +### Bug Fixes + + - 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. + - `Reference::remote()` can produce remotes for URLs + +### Refactor + + - use specific error type for `rev_parse_single()` + +### Changed (BREAKING) + + - upgrade `bstr` to `1.0.1` + +### New Features (BREAKING) + + - Add reference remote name type to make usage of `remote_name()` result clear + +### Other (BREAKING) + + - `Tree::lookup_path()` -> `Tree::lookup_entry()`. + +## 0.23.1 (2022-09-01) + +### Changed (BREAKING) + + - 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 + + - `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 + + - 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. + - Make `find::object::*::Error` publicly available. + - Add `Reference::delete()` for simple reference deletion + - `Reference::set_target_id()` to easily set the target id of a reference + - `Reference::head_ref()` to quickly access the reference the head points to. + +### Bug Fixes + + - `Commit::tree_id()` now returns a connected id + +### New Features (BREAKING) + + - `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) + + + +### Chore + + - uniformize deny attributes + +### New Features + + - 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. + - `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. + - `SnapshotMut::apply_cli_overrides()` to make it easy to support things like `-c` + - `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. + - 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 + + - 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) + + + +### Changed + + - 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 + + - `Kind` can now represent submodules. + This should complete the list of git repository types and flavors. + - `open()` and `discover()` support opening submodules. + This includes submodule checkouts as well as their original module git + directories. + - `open::Options::lenient_config(…)` to default otherwise invalid configuration values where possible + Originally required by https://github.com/starship/starship/issues/4266 . + - support core.worktree option + - display for `object::tree::EntryRef` + - `Head::prior_checked_out_branches()` + - `Repository::index()` and `Worktree::index()`. + These methods provide a possibly updated shared index. + - add `Repository::object_cache_size_if_unset()` + - `Commit::message_raw_sloppy()` to provide yet another way to obtain a commit message. + - add `rev_spec::parse::ObjectKindHint` to support `core.disambiguate`. + The latter is seemingly undocumented in the typical place, gix-config. + - `Remote::with_refspec()` to add new unique refspecs + - `Remote::push_url()` to set it after the fact + - `Repository::remote_at(…)` to create an unnamed remote + - more conversions for `TryFrom`: `String` and `&str` + - `Head::into_remote()` to try really hard to find the correct remote + - `Repository::remote_default_name()` to obtain the repo-wide remote for a a direction. + - `Repository::branch_names()` to obtain branch names for which configuration exists. + +### Bug Fixes + + - assure permissions per trust level are properly inherited into `open::Options`. + - provide additional explanation about when to use `open::Options::with()` + +### Refactor + + - 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) + + - remove `permissions::Config::strict()` as they were unused internally. + Furthermore, they were allowing everything as before so better not to + have it. + - rename `Repository::load_mailmap*` to `Repository::open_mailmap*`. + For consistency with other similar methods. + - remove `Repository::load_index()` in favor of `repo.worktree().open_index()`. + - `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. + - Turn `id::Ancestors` into general-purpose `RevWalk`. + - 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. + - rename `Repository::remote_ref()` to `::branch_remote_ref()` + +### New Features (BREAKING) + + - `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) + + - 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 + + - 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. + - permissions for configuration. + It provides fine-grained control over what sources to load. + - `gix-config` is now accessible in `git-repository::config`. + - `gix config` lists all entries of all configuration files git considers. + Filters allow to narrow down the output. + - repository now initializes global configuration files and resolves includes + - resolve includes in local repository configuration + - `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. + - `Repository::config_snapshot()` to access configuration values. + - Use `gix-config` to write config file on initialization, including `logallrefupdates` and `precomposeunicode`. + - respect `core.logallrefupdates` configuration setting. + +### Changed (BREAKING) + + - Make `SignatureRef<'_>` mandatory for editing reference changelogs. + If defaults are desired, these can be set by the caller. + - `Repository::committer()` now returns an `Option`, see `::committer_or_default()` for a method that doesn't. + - 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. + - 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) + + - 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. + - change mostly internal uses of [u8] to BString/BStr + +## 0.19.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.18.1 (2022-05-23) + +### New Features + + - `Debug` for `Reference`. + +## 0.18.0 (2022-05-21) + + + +### Other + + - add ceiling_dirs option to upwards discovery + +## 0.17.0 (2022-05-18) + + + + + +### New Features + + - Add `Repository::head_name()`. + A convenient way to obtain the name of a head, if not detached. + +### Bug Fixes + + - `Commit::describe()` now returns annotated tags before lightweight ones and prefers more recent ones as well + - Support for in truncated history in git-describe + This allows `describe()` to work on shallow clones. + +### Other + + - allow reading information about remote branch + - `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. + - remove unused variant + +### Changed (BREAKING) + + - 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. + - `path::discover::existing()` -> `path::discover()` + - 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) + + - use `gix-credentials` in `gix-protocol` + +## 0.16.0 (2022-04-05) + +### New Features + + - auto-calculation of a good hex-len, like what git does + If the `core.abbrev` value isn't set or is set to `auto`. + - `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) + + + + + +### New Features + + - 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. + - 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. + - `Repository::head_commit()` + A shortcut to get to the commit much faster. + - `ein tool estimate-hours` now supports mailmaps + - `Repository::head_id()` + A long-needed shortcut. + - `gix repository mailmap entries` + - unstable mailmap module + - `Commit::short_id()` + - in-manifest and in-lib documentation of feature toggles + - `easy::Commit::time()` to access the committers time conveniently. + - 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. + - `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. + - `Repository::load_index()` + This method makes the index of the default workspace available. + +### Bug Fixes + + - Properly classify worktrees as non-bare, helps with `ein t find` + They use git-files which point to the actual repository data. + +### Changed (BREAKING) + + - Easier access to local and remote branches + +### New Features (BREAKING) + + - `interrupt::Iter`, rename `interrupt::Iter` -> `interrupt::IterWithError` + - 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) + + - 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) + + - `Id::prefix` -> `Id::shorten()` + It's definitely more intuitive that way. + +### Refactor (BREAKING) + + - dissolve 'easy' module by moving everything one level up + - clarify different repository types much better + +## 0.14.0 (2022-01-23) + + + + + + +### New Features + + - Add `easy::Tree::traverse()` platform + - Add `easy::Commit` object + It allows to more conveniently access commit information. + - `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. + - 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) + + - 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. + - Rename `OwnedObject` to `DetachedObject` + The latter more clearly indicates what the difference is to + `Object` (which is attached and carries a lifetime) + - 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. + - rename `easy::Object` to `OwnedObject`; remove `Ref` suffix from `ObjectRef` and `TreeRef` + - 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. + - rename easy::State to easy::Handle + As the first step to remove the 'Easy' abstraction. + - fully rely on OdbHandle in repository State + - Rename `Repository::odb` to` Repository::objects` + This way it's more inline with `Repository::refs`. + - 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. + - 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) + + + + +With changes to `gix-ref`, what follows is all the adjustments made to simplify the `gix` implementation. + +### Changed (BREAKING) + + - 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. + - 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. + - move `gix_ref::file::WriteRefLog` to `gix_ref::store::WriteRefLog` + +### Bug Fixes (BREAKING) + + - 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) + + - 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) + + - `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 + + - Allow `PartialNameRef` to be created from owned items + +### Changed (BREAKING) + + - 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) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +### New Features + + - Make `gix_url::Url` available under `gix::Url` + - 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. + - 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 + + - 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. + - 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. + - 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. + - improved changelog… + …akin to 'Keep a changelog'. + +### Refactor + + - split data::output::count::objects into files + - use new gix_pack::cache::Object trait + - remove object cache impl which now lives in gix-pack + +### Other + + - :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. + - 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 + - path::is + - path::discover + - top-level of 'path' module + - object_id + - repository + - ext::tree + - easy::object::peel + - easy::object::errors + - 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. + - easy::object, sans a few child-modules + - update 'platform' information to reflect the current usage + - configure caches with env vars using `apply_environment()` + - refactor + - set package cache via RepositoryAccessExt + - 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. + - allow disabling the pack cache with GITOXIDE_DISABLE_PACK_CACHE + - prepare for configurable pack cache + - 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. + - build commit history for later use in changelog generation + - 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. + - sketch history acquisition + - add 'Head::peeled()' method + +### Changed (BREAKING) + + - `easy::Object::try_to_commit()` now returns `Result`… + …without the nested `Option`, folding the type mismatch into a specific + `conversion::Error` instead. + - 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) + + + + + + +- Remove `max-performance` feature from default set until the `msvc` build issue is fixed. Otherwise it will surprisingly break windows builds. + +### Other + + - 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. + - 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. + - 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. + - 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 + + + + - 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 + + + +
view details + + * **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)) +
+ -- cgit v1.2.3