Skip to content

gix v0.67.0

Compare
Choose a tag to compare
@Byron Byron released this 22 Oct 19:07
· 183 commits to main since this release
f1364dc

New Features

  • add Repository::diff_tree_to_tree() for greater similarity to git2

  • add gix merge-file with similar features as git merge-file

  • add Repository::blob_merge_options() to obtain options for merging blobs and Repository::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 new Repository 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 the revision feature.
    Technically it doesn't depend on it.

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.)

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 mutable Repository 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 its buf 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 merges object::tree::diff::change::Event into object::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 to git2 (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 as git merge-file (3da2da9)
    • Add Repository::blob_merge_options() to obtain options for merging blobs and Repository::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 by gix-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 and Repository. (b279957)
    • Tree::lookup_entry() looses its buf 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 the revision feature. (c515edd)
    • Merge branch 'fixes' (46cd1ae)
    • Remove all workspace dependencies (1757377)