- `TreeRef::to_owned()` and `Tree::into_owned()` for a convenient way to get a fully-owned `Tree`
- add `tree::Editor`
With it it's easy to alter existing trees or build entirely new ones,
efficiently.
- add `Default` implementation to `Tree`
### Bug Fixes
- keep multi-line header value newlines verbatim
Previously they were normalized to \n which made round-trips
degenerate information.
It's notable that we explicitly do NOT normalize the newline
at the very last line of the multi-line header as its part
of that line, even though it's also relevant to make the header field
valid. The reason is that these *can* also be written with \r\n, and
we don't want to degenerate that information.
- remove workspace lints from Cargo manifests of fuzz-projects.
They are not part of the parent workspace.
### Other
- Update gitoxide repository URLs
This updates `Byron/gitoxide` URLs to `GitoxideLabs/gitoxide` in:
- Markdown documentation, except changelogs and other such files
where such changes should not be made.
- Documentation comments (in .rs files).
- Manifest (.toml) files, for the value of the `repository` key.
- The comments appearing at the top of a sample hook that contains
a repository URL as an example.
When making these changes, I also allowed my editor to remove
trailing whitespace in any lines in files already being edited
(since, in this case, there was no disadvantage to allowing this).
The gitoxide repository URL changed when the repository was moved
into the recently created GitHub organization `GitoxideLabs`, as
detailed in #1406. Please note that, although I believe updating
the URLs to their new canonical values is useful, this is not
needed to fix any broken links, since `Byron/gitoxide` URLs
redirect (and hopefully will always redirect) to the coresponding
`GitoxideLabs/gitoxide` URLs.
While this change should not break any URLs, some affected URLs
were already broken. This updates them, but they are still broken.
They will be fixed in a subsequent commit.
This also does not update `Byron/gitoxide` URLs in test fixtures
or test cases, nor in the `Makefile`. (It may make sense to change
some of those too, but it is not really a documentation change.)
### Bug Fixes (BREAKING)
- `Tree|TreeRef::write_to()` will now assure the most basic sanity of entry names.
Previously, it would allow null-bytes in the name which would corrupt the written tree.
Now this is forbidden.
For some reason, it disallowed newlines, but that is now allowed as validation is should
be handled on a higher level.
- remove all workspace dependencies
The problem is that with them, we don't notice anymore if the crate changes,
because a dependency changes. That also means that older versions of the dependency
may stay even though some other crates might pick up a newer version.
Ultimately, this will lead to drift and subtle incompatibilities.
We declare this breaking to enforce a proper re-release.
### Commit Statistics
- 35 commits contributed to the release over the course of 60 calendar days.
- 60 days passed between releases.
- 8 commits were understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: #1542
### Thanks Clippy
[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
### Commit Details
* **#1542**
- Be lenient to missing timestamp in signature (059c9f9)
- Add test for tag missing timestamp in tagger (ce5d79c)
* **Uncategorized**
- Merge pull request #1624 from EliahKagan/update-repo-url (795962b)
- Update gitoxide repository URLs (64ff0a7)
- Merge pull request #1612 from Byron/merge (37c1e4c)
- Thanks clippy (af03832)
- Merge pull request #1617 from Byron/commit-roundtrip (f35b109)
- Modernize integration tests (7fcf91a)
- Keep multi-line header value newlines verbatim (4a6bbb1)
- Reproduce roundtrip failure for commit that looks good otherwise (9db3f9c)
- Merge pull request #1593 from Byron/fix-fuzz (72daa46)
- Remove workspace lints from Cargo manifests of fuzz-projects. (cdac4a9)
- Merge pull request #1566 from Byron/merge (d69c617)
- `TreeRef::to_owned()` and `Tree::into_owned()` for a convenient way to get a fully-owned `Tree` (7c48556)
- Use a standard HashMap instead of one based on SHA1 (39d8e03)
- Add benchmarks for the tree editor and the tree-editor cursor (b5dc45f)
- `Tree|TreeRef::write_to()` will now assure the most basic sanity of entry names. (a085b7e)
- Add `tree::Editor::cursor()` to allow speedier creation of sub-trees. (91fa478)
- Add `tree::Editor` (14dfcf0)
- Add `Default` implementation to `Tree` (71bf808)
- Merge pull request #1557 from Byron/merge-base (649f588)
- Allow empty-docs (beba720)
- Merge branch 'global-lints' (37ba461)
- Workspace Clippy lint management (2e0ce50)
- Merge pull request #1547 from nyurik/cast-lossless (c3a7dcf)
- Fix clippy::cast_lossless (29ad2df)
- Merge pull request #1546 from nyurik/semilocons (f992fb7)
- Add missing semicolons (ec69c88)
- Merge branch 'issue-1542' (c3f173c)
- Make binary-search based test more robust (1b600f3)
- Adjust expectation now that author parsing is more lenient. (bfd5009)
- Merge pull request #1540 from NobodyXu/patch-1 (f4898b9)
- Fix winnow version requirement in gix-object (0a3ce48)
- Merge branch 'fixes' (46cd1ae)
- Remove all workspace dependencies (1757377)