### 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.
- `Repsitory::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)
- disoolve 'easy' module by moving everything one level up
- clarify different repository types much better
### Commit Statistics
- 85 commits contributed to the release over the course of 68 calendar days.
- 69 days passed between releases.
- 21 commits where understood as [conventional](https://www.conventionalcommits.org).
- 7 unique issues were worked on: #293, #298, #301, #329, #336, #364, #366
### Thanks Clippy
[Clippy](https://github.com/rust-lang/rust-clippy) helped 5 times to make code idiomatic.
### Commit Details
* **#293**
- `easy::Commit::time()` to access the committers time conveniently. (9f5663e)
- easy::Head::name() to learn about the name of the HEAD ref (7c88b62)
- fix build (d89a587)
- `Repsitory::load_index()` (1c22d76)
* **#298**
- actual default hex-len for short-ids is 7, but… (36e004b)
- quick sketch of how the retrieval of ints from config could look like (af6326f)
- frame for simplified config access via Repository (eba2b9a)
- fix docs; consistent naming of 'repo' (1f79bc3)
- rename `sync::Handle` into `ThreadSafeRepository` (1cc4faa)
- disoolve 'easy' module by moving everything one level up (c10f07c)
- prepare for moving `git-repository::easy:: one level up (ccecb9a)
- make config available in easy::Repository (fbdb1a2)
- refactor (591b533)
- refactor (a1a846a)
- clarify different repository types much better (bbc6efe)
- docs (a45f378)
- First stab at Oid::prefix() (35e77c1)
- `easy::Head::peel_to_commit_in_place()` (3b0913a)
- Let 'easy::Object::try_into_…()` return `try_into::Error`. (813a3be)
* **#301**
- `interrupt::Iter`, rename `interrupt::Iter` -> `interrupt::IterWithError` (8945d95)
- refactor (9ea1e44)
- unset the pack cache if GITOXIDE_DISABLE_PACK_CACHE is set (6d8bc49)
- frame for traversing tree entries (0e55fbb)
- basic version of index checkout via command-line (f23b8d2)
- support for unicode-precomposition for gix apps (e90c123)
- `Commit::short_id()` (1be00cf)
- verify that Id::prefix() makes use of the git configuration (76e9110)
* **#329**
- in-manifest and in-lib documentation of feature toggles (c7dff9e)
- Document all features related to serde1 (72b97f2)
* **#336**
- do not install signal handlers by default (c863ea5)
* **#364**
- support for object replacement (1322dbf)
- initialize replacements in a configurable way (6a27985)
- add some precaution to avoid strange interactions with packs (b052a9a)
- commit traversals on shallow clones are non-fatal by default (1a75357)
- adapt to changes in git-ref (f606f88)
- support for trimming of whitespace around name and email (a39bf71)
- Add and improve Debug implementation on major types (d23c3d4)
- also inform about average and max commit sizes (5052a4e)
- Adjust to breaking changes in `git-traverse` (d79b506)
- fix install_dir(); refactor (11644bd)
- `Repository::head_commit()` (0057804)
- `Repository::head_id()` (f0d8a49)
- fix docs (29822c6)
- `Id::prefix` -> `Id::shorten()` (5f75953)
- refactor (b1b9871)
- Easier access to local and remote branches (a8b6589)
- Fix lifetime declarations to allow ancestors().all() chaining (df24f16)
- consolidate naming of directories, use same convention as git2 (a7dbed1)
- Full error handling for CommitRefIter (b94471a)
- More speedy access to author/committer (6129607)
- adjust to changes in git-actor (e5c0200)
- cleaner API for detaching objects, now for commits as well (59d75fc)
* **#366**
- `ein tool estimate-hours` now supports mailmaps (def80df)
- `gix repository mailmap entries` (d2388d8)
- frame for printing mailmap entries using git-repository (2a01f47)
- the first possibly working version of loading a mailmap with multiple sources (98d745e)
- frame for `Repository::load_mailmap_into()` (c8c87ec)
- unstable mailmap module (e3bc1b4)
* **Uncategorized**
- Merge branch 'for-onefetch' (8e5cb65)
- Release git-hash v0.9.3, git-features v0.20.0, git-config v0.2.0, safety bump 12 crates (f0cbb24)
- Merge branch 'svetli-n-refactor_git_config_tests' (babaa9f)
- make fmt (7cf3545)
- Properly classify worktrees as non-bare, helps with `ein t find` (c329dd7)
- fix MSRV (1bf5d11)
- thanks clippy (8e2e4e3)
- Merge branch 'short-id' (5849d5b)
- Set the MSRV version explicitly in git-repository (bbf6799)
- thanks clippy (4618f8a)
- thanks clippy (5db3993)
- remove unused dependency (2fbc93c)
- thanks clippy (d5911b5)
- Release git-tempfile v2.0.0, safety bump 6 crates (90b1c42)
- upgrade document-features (c35e62e)
- Merge branch 'AP2008-implement-worktree' (f32c669)
- Release git-actor v0.8.1 (08fe550)
- Release git-bitmap v0.0.1, git-hash v0.9.0, git-features v0.19.0, git-index v0.1.0, safety bump 9 crates (4624725)
- fix lint (b339b41)
- remove debug-helper (c243215)
- Release git-hash v0.9.2, git-object v0.17.1, git-pack v0.16.1 (0db19b8)
- Don't use bleeding edge features (3de0ab1)
- reference statistics for stats example (83b99ce)
- Merge branch 'index-verification' (ad3c803)
- Release git-config v0.1.11 (a605b67)
- thanks clippy (2f25bf1)
- Merge branch 'index-information' (025f157)