github GitoxideLabs/gitoxide gix-v0.68.0
gix v0.68.0

9 hours ago

New Features

  • Add support for index application in merge results via merge::tree::Outcome::index_changed_after_applying_conflicts()

  • add Repository::merge_base_octopus()

  • add Repository::virtual_merge_base() and Repository::virtual_merge_base_with_graph().

  • add Repository::merge_commits()
    It's often more convenient to work with commits when merging, especially
    when merge-bases are dealt with automatically.

  • add objects::tree::Editor::detach() to get the underlying editor back.
    This can be useful to have more control over what gets written, or how.

  • add Repository::index_or_load_from_head_or_empty().
    It's useful to get a reasonable index in any case, even on unborn repositories.
    It's for cases where the HEAD isn't setup at all, despite content being available,
    and to avoid unnecessary restrictions on what works.

  • add Object::peel_to_commit() to assure an object turns into a commit.

  • add Repository::merge_trees()

  • gix::Repository implements all traits for object reading and writing.
    That way it becomes usable when merging trees, which benefits from automatic
    checking of hashes before writing loose objects.

  • add tree() and commit() merge support, en par with merge-ORT as far as tests go.
    Note that this judgement of quality is based on a limited amount of partially complex
    test, but it's likely that in practice there will be deviations of sorts.

    Also, given the complexity of the implementation it is definitely under-tested,
    but with that it's mostly en par with Git, unfortunatly.

    On the bright side, some of the tests are very taxing and I'd hope this
    means something for real-world quality.

Bug Fixes

  • Repository::tree_merge_options() now comes with rewrite tracking.
    This is the way Git acts, as it's either configured, or defaults to the value
    coming from the diff.renames configuration.

  • respect core.bare=true in conjunction with the main worktree

  • propagate errors that are triggered when writing objects
    Previously it was assumed that writing objects could never fail unless
    there isn't enough memory to do so. However, it turns out that
    some last-minute validation can always be triggered and prevent an object
    to be written.

    Now that error is propagated instead.

  • assure submodules are skipped everywhere
    This also adds Repository::head_tree() for convenience.

New Features (BREAKING)

  • Repository::merge_trees() now takes portable version of Options.
  • Repository::merge_trees() now has a fully-wrapped outcome.
    That way, more attached types are used for greater convenience.

Bug Fixes (BREAKING)

  • rename blob-merge feature to tree-merge.
    By now, blob-merge is the lowest-level of features which is required
    for both tree-merges and commit based merges. Hence it's better
    to just call it merge.

  • Adjust blob-merge baseline to also test the reverse of each operation
    This also fixes an issue with blob merge computations.

    It's breaking because the marker-size was reduced to u8.

Commit Statistics

  • 46 commits contributed to the release.
  • 18 commits were understood as conventional.
  • 2 unique issues were worked on: #1678, #1683

Commit Details

view details
  • #1678
    • Propagate errors that are triggered when writing objects (dc3d8bf)
    • Reproduce a commit-write panic if the author is invalid (d15a493)
  • #1683
    • Respect core.bare=true in conjunction with the main worktree (88d9d43)
  • Uncategorized
    • Release gix-date v0.9.2, gix-actor v0.33.1, gix-hash v0.15.1, gix-features v0.39.1, gix-validate v0.9.2, gix-object v0.46.0, gix-path v0.10.13, gix-quote v0.4.14, gix-attributes v0.23.1, gix-packetline-blocking v0.18.1, gix-filter v0.15.0, gix-chunk v0.4.10, gix-commitgraph v0.25.1, gix-revwalk v0.17.0, gix-traverse v0.43.0, gix-worktree-stream v0.17.0, gix-archive v0.17.0, gix-config-value v0.14.10, gix-lock v15.0.1, gix-ref v0.49.0, gix-config v0.42.0, gix-prompt v0.8.9, gix-url v0.28.1, gix-credentials v0.25.1, gix-bitmap v0.2.13, gix-index v0.37.0, gix-worktree v0.38.0, gix-diff v0.48.0, gix-discover v0.37.0, gix-pathspec v0.8.1, gix-dir v0.10.0, gix-mailmap v0.25.1, gix-revision v0.31.0, gix-merge v0.1.0, gix-negotiate v0.17.0, gix-pack v0.55.0, gix-odb v0.65.0, gix-packetline v0.18.1, gix-transport v0.43.1, gix-protocol v0.46.1, gix-refspec v0.27.0, gix-status v0.15.0, gix-submodule v0.16.0, gix-worktree-state v0.15.0, gix v0.68.0, gix-fsck v0.8.0, gitoxide-core v0.43.0, gitoxide v0.39.0, safety bump 25 crates (8ce4912)
    • Prepare changelogs prior to release (bc9d994)
    • Merge pull request #1661 from GitoxideLabs/merge (0b7abfb)
    • Add support for index application in merge results via merge::tree::Outcome::index_changed_after_applying_conflicts() (71b0cea)
    • Repository::tree_merge_options() now comes with rewrite tracking. (b57be71)
    • Adapt to changes in gix-merge. (47110d6)
    • Merge pull request #1687 from EliahKagan/run-ci/32bit (aeaebec)
    • Add 32-bit expectations for remaining == size assertions (daf9990)
    • Use <= on 32-bit for some size assertions (fc13fc3)
    • Merge pull request #1684 from GitoxideLabs/fixes (9ab86a2)
    • Merge pull request #1679 from GitoxideLabs/fix-1678 (275a0c5)
    • Turn single-mod directories into a file (49ba115)
    • Merge pull request #1662 from paolobarbolini/thiserror-v2 (7a40648)
    • Upgrade thiserror to v2.0.0 (0f0e4fe)
    • Merge pull request #1659 from GitoxideLabs/merge (cf0c7ee)
    • Add Repository::merge_base_octopus() (65ae68e)
    • Merge pull request #1658 from GitoxideLabs/merge (905e5b4)
    • Add Repository::virtual_merge_base() and Repository::virtual_merge_base_with_graph(). (7aee32a)
    • Add Repository::merge_commits() (5f3f63a)
    • Merge pull request #1656 from GitoxideLabs/hasconfig (c5955fc)
    • Add test to assure hasconfig is working on gix level as well. (d51aec9)
    • Merge pull request #1653 from GitoxideLabs/merge (697a632)
    • Assure submodules are skipped everywhere (4079519)
    • Merge pull request #1651 from GitoxideLabs/merge (a876533)
    • Repository::merge_trees() now takes portable version of Options. (a43e563)
    • Rename blob-merge feature to tree-merge. (2547935)
    • Repository::merge_trees() now has a fully-wrapped outcome. (1d2262f)
    • Add objects::tree::Editor::detach() to get the underlying editor back. (27b663e)
    • Add Repository::index_or_load_from_head_or_empty(). (1f9556a)
    • Add Object::peel_to_commit() to assure an object turns into a commit. (2fce14f)
    • Remove a TODO that turned out to be unnecessary. (5b428a9)
    • Merge pull request #1652 from EliahKagan/run-ci/chmod (8e99eba)
    • Fix chmod in make_rev_spec_parse_repos; regenerate archive on macOS (d74e919)
    • Regenerate gix make_rev_spec_parse_repos fixture archive (72cd7f3)
    • Avoid unneeded +x in make_rev_spec_parse_repos (8720acb)
    • Merge pull request #1618 from GitoxideLabs/merge (3fb989b)
    • Add Repository::merge_trees() (d1ac584)
    • gix::Repository implements all traits for object reading and writing. (07746f3)
    • Support for merge related options in config tree (80e006b)
    • Add tree() and commit() merge support, en par with merge-ORT as far as tests go. (4b1764c)
    • Adapt to changes in gix-object and gix-odb (96488f7)
    • Adjust blob-merge baseline to also test the reverse of each operation (de1cfb6)
    • Merge pull request #1642 from GitoxideLabs/new-release (db5c9cf)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.