gix v0.67.0
New Features
-
add
Repository::diff_tree_to_tree()
for greater similarity togit2
-
add
gix merge-file
with similar features asgit merge-file
-
add
Repository::blob_merge_options()
to obtain options for merging blobs andRepository::diff_algorithm()
-
Repository::merge_resource_cache()
to obtain the foundation for merging files directly. -
make implicit free-list more controllable
This is done by three newRepository
methods:empty_reusable_buffer()
- hook into the free-list yourself.
set_freelist()
- enable or initialize the free-list.without_freelist()
- a builder to disable the freelist from the start.
Bug Fixes
- make
GIT_WORK_TREE
variable work as expected.
Now it's picked up durign initialization. - improve directory matching
Previously the sorting wasn't accounted for, so an assumption about
the order of changes weren't actually true. - don't be too generous when extrapolating worktree directories.
Previously it was possible that a non-bare repository that didn't have
worktree directory incorrectly claimed it had one. - don't unconditionally stuff fetch-specs if these are already present.
Previously, we'd always add 'default' refspecs, even though ref-specs
might already have been present.
Now we only do this if there were no refspecs prior, and that might
still be more than Git does. I wonder where this requirement came from,
except that it might help with tests. - Don't bail out if there are extra-refspecs.
- make
rev_walk
available even without therevision
feature.
Technically it doesn't depend on it.
Other
-
Update gitoxide repository URLs
This updatesByron/gitoxide
URLs toGitoxideLabs/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 organizationGitoxideLabs
, 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, sinceByron/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 theMakefile
. (It may make sense to change
some of those too, but it is not really a documentation change.) -
New Features (BREAKING)
-
optional rename tracking for directories.
Depending on the source of the rename-information, items that are children
of renamed parents may be provided to enable rename tracking based on these
containers, instead of always resorting to tracking leaf nodes (i.e. blobs). -
Support for 'fast-tracking' reaching the beginning of the commit-graph during traversals.
It's implemented by sorting commits oldest first when choosing the next one to traverse,
which can greatly reduce the time it takes to reach the first commit of a graph. -
optionally store objects new objects in memory only.
The default object database changed to a version that allows to
keep objects in memory. This needs a mutableRepository
instance
to setup. -
Do not let
revision::walk::Platform
rely on plumbing crate types.
This is a step towards a more stable API, but also, will allow using
different implementations.Notably, this replaces
gix_traverse::commit::simple::Sorting
with
gix::revision::walk::Sorting
.
Bug Fixes (BREAKING)
-
improve error messages when failing to find references.
It's breaking due to changes in the error type. -
unify location of error type of
Repository::diff_resource_cache()
. -
Tree::lookup_entry()
looses itsbuf
argument.
The buffer will now be previded from the free-list of the repository. -
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.
Refactor (BREAKING)
- always trackt he full path when producing diffs, but allow to disable it.
- Use the new
tree_with_rewrites
plumbing implementation.
This mergesobject::tree::diff::change::Event
intoobject::tree::diff::Change
as well.
Commit Statistics
- 77 commits contributed to the release over the course of 60 calendar days.
- 60 days passed between releases.
- 25 commits were understood as conventional.
- 1 unique issue was worked on: #1562
Thanks Clippy
Clippy helped 1 time to make code idiomatic.
Commit Details
view details
- #1562
- Don't bail out if there are extra-refspecs. (977b81b)
- Uncategorized
- Release gix-date v0.9.1, gix-utils v0.1.13, gix-actor v0.33.0, gix-hash v0.15.0, gix-trace v0.1.11, gix-features v0.39.0, gix-hashtable v0.6.0, gix-validate v0.9.1, gix-object v0.45.0, gix-path v0.10.12, gix-glob v0.17.0, gix-quote v0.4.13, gix-attributes v0.23.0, gix-command v0.3.10, gix-packetline-blocking v0.18.0, gix-filter v0.14.0, gix-fs v0.12.0, gix-chunk v0.4.9, gix-commitgraph v0.25.0, gix-revwalk v0.16.0, gix-traverse v0.42.0, gix-worktree-stream v0.16.0, gix-archive v0.16.0, gix-config-value v0.14.9, gix-tempfile v15.0.0, gix-lock v15.0.0, gix-ref v0.48.0, gix-sec v0.10.9, gix-config v0.41.0, gix-prompt v0.8.8, gix-url v0.28.0, gix-credentials v0.25.0, gix-ignore v0.12.0, gix-bitmap v0.2.12, gix-index v0.36.0, gix-worktree v0.37.0, gix-diff v0.47.0, gix-discover v0.36.0, gix-pathspec v0.8.0, gix-dir v0.9.0, gix-mailmap v0.25.0, gix-merge v0.0.0, gix-negotiate v0.16.0, gix-pack v0.54.0, gix-odb v0.64.0, gix-packetline v0.18.0, gix-transport v0.43.0, gix-protocol v0.46.0, gix-revision v0.30.0, gix-refspec v0.26.0, gix-status v0.14.0, gix-submodule v0.15.0, gix-worktree-state v0.14.0, gix v0.67.0, gix-fsck v0.7.0, gitoxide-core v0.42.0, gitoxide v0.38.0, safety bump 41 crates (3f7e8ee)
- Merge pull request #1639 from cruessler/respect-env-variables (48aa74b)
- Make
GIT_WORK_TREE
variable work as expected. (e9b3db8) - Merge pull request #1637 from GitoxideLabs/improve-error-message (b36d7ef)
- Improve error messages when failing to find references. (206f5d7)
- Merge pull request #1635 from GitoxideLabs/fix-ci (2622936)
- Improve wording of comment in test (e51fcd0)
- Fix CI for now by excluding the failing assertion from running. (c949030)
- Merge pull request #1630 from GitoxideLabs/diff-fix (155b5e1)
- Improve directory matching (53fa8ab)
- Reproduce ordering issue when finding parents (ddc99b5)
- Merge pull request #1624 from EliahKagan/update-repo-url (795962b)
- Update gitoxide repository URLs (64ff0a7)
- Merge pull request #1620 from Byron/fix-discovery (6487269)
- Silently re-add
diff::tree::ChangeDetached
(c18ebbe) - Don't be too generous when extrapolating worktree directories. (f8952e4)
- Merge pull request #1612 from Byron/merge (37c1e4c)
- Refactor integration tests for a more modern look (3745212)
- Add
Repository::diff_tree_to_tree()
for greater similarity togit2
(2b81e6c) - Always trackt he full path when producing diffs, but allow to disable it. (743695f)
- Use the new
tree_with_rewrites
plumbing implementation. (45b7155) - Adapt to changes in
gix-diff
(3fd9fab) - Thanks clippy (af03832)
- Adapt to changes in
gix-diff
(2bf1e5f) - Optional rename tracking for directories. (7be142d)
- Adapt to chagnes in
gix-diff
(5c1f010) - Merge pull request #1611 from Byron/merge (5ffccd2)
- Add
gix merge-file
with similar features asgit merge-file
(3da2da9) - Add
Repository::blob_merge_options()
to obtain options for merging blobs andRepository::diff_algorithm()
(c02adc7) - Unify location of error type of
Repository::diff_resource_cache()
. (9e79ba3) Repository::merge_resource_cache()
to obtain the foundation for merging files directly. (1937480)- Add all keys for merge-configuration (e0b09d2)
- Merge pull request #1585 from Byron/merge (2261de4)
- Use new
WorktreeRoot
API provided bygix-diff
(25c6806) - Merge pull request #1610 from nrdxp/traverse/oldest-first (20f9b3f)
- Support for 'fast-tracking' reaching the beginning of the commit-graph during traversals. (14d6bb9)
- Merge pull request #1604 from Byron/protocol-shallow-v1 (612896d)
- Adapt to changes in
gix-protocol
(0d3b480) - Merge pull request #1603 from Byron/freelist (73a7d15)
- Make implicit free-list more controllable (0cac690)
- Merge pull request #1589 from EliahKagan/maintenance (7c2af44)
- Add missing executable bits (694ebad)
- Merge pull request #1587 from jayvdb/typos (c2bdda4)
- Fix typos (b12c7c9)
- Merge pull request #1586 from Byron/fix-ci (22fbe70)
- Update crate-status to inform about tree-editing capabilities (fe1eb97)
- Merge pull request #1584 from EliahKagan/jj-realistic-ignore (5242aad)
- Don't test
jj_realistic_needs_to_be_more_clever
on Windows (3adcfc5) - Merge pull request #1582 from Byron/gix-path-release (93e86f1)
- Release gix-trace v0.1.10, gix-path v0.10.11 (012a754)
- Merge pull request #1566 from Byron/merge (d69c617)
- Optionally store objects new objects in memory only. (dfbc732)
- Add tree-editing capabilities to
Tree
andRepository
. (b279957) Tree::lookup_entry()
looses itsbuf
argument. (c545d71)- Merge pull request #1564 from Byron/improvements (1cfe577)
- When using the cache, allow using the entire graph. (0fe5133)
- Adapt to changes in
gix-revwalk
(ea403a4) - Merge pull request #1563 from Byron/fixes (750e268)
- Don't unconditionally stuff fetch-specs if these are already present. (877f4d2)
- Merge pull request #1557 from Byron/merge-base (649f588)
gix merge-base
for the CLI (7249291)- Add
Repository::merge_base()
(3abf043) - Adapt to changes in
gix-revision
(ce5a320) - Allow empty-docs (beba720)
- Merge branch 'global-lints' (37ba461)
- A few more missing semicolons (fc45c93)
- 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 'improvements' (e82f795)
- Do not let
revision::walk::Platform
rely on plumbing crate types. (d63ec06) - Make
rev_walk
available even without therevision
feature. (c515edd) - Merge branch 'fixes' (46cd1ae)
- Remove all workspace dependencies (1757377)