github GitoxideLabs/gitoxide gix-merge-v0.1.0
gix-merge v0.1.0

9 hours ago

New Features

  • provide a way to record and apply index changes.
    These changes will then be applicable to an index that is created
    from the written tree editor.

  • when blob-merging, clarify if something would have conflicted.

  • add Conflict::is_unresolved() as utility to see if multiple of them are considered unresolved.

  • respect the conflict-marker-size attribute as well.

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

  • add blob::PlatformRef::id_by_pick() to more efficiently pick merge results.
    This works by either selecting a possibly unchanged and not even loaded resource,
    instead of always loading it to provide a buffer, in case the user doesn't
    actually want a buffer.

    Note that this also alters buffer_by_pick() to enforce handling of the 'buffer-too-large'
    option.

Other

  • Fix code fences in gix-merge ConflictStyle and Driver
    They are not Rust code (they are text with conflict markers and a
    shell command, respectively) and they are not intended as doctests,
    but the absence of anything on the opening line caused them to be
    taken as doctests, so cargo test --workspace --doc would fail
    with parsing errors.

    (Doctests for all crates have not always been run automatically on
    CI, so this was not caught when these documentation comments were
    introduced in #1585.)

New Features (BREAKING)

  • Add more modes for checking for unresolved conflicts.
    They aim at making it possible to know if a conflict happened that was
    automatically resolved.

  • add commit::virtual_merge_base() to produce the single merge-base to use.
    This allows more flexibility in conjunction with tree-merging, as
    commits as input aren't required.

    This is breaking as it changes the return value of commit().

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

  • Don't fail on big files during blob-merge, but turn them into binary merges.
    Binary merges are mere choices of which side to pick, which works well for big files
    as well. Git doesn't define this well during its own merges, so there is some room here.

Bug Fixes (BREAKING)

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

  • prefer to receive borrowed gix_command::Context when it's just passed on.
    That way, the clone occours only when needed, without forcing the caller
    to pre-emptively clone each time it's called.

Commit Statistics

  • 28 commits contributed to the release.
  • 13 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • 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)
    • Provide a way to record and apply index changes. (3ee8b62)
    • Add more modes for checking for unresolved conflicts. (aff76f2)
    • When blob-merging, clarify if something would have conflicted. (09213bc)
    • Merge pull request #1662 from paolobarbolini/thiserror-v2 (7a40648)
    • Upgrade thiserror to v2.0.0 (0f0e4fe)
    • Merge pull request #1658 from GitoxideLabs/merge (905e5b4)
    • Add commit::virtual_merge_base() to produce the single merge-base to use. (9d43b75)
    • Merge pull request #1654 from EliahKagan/doctest-workspace (1411289)
    • Fix code fences in gix-merge ConflictStyle and Driver (2fdbcfe)
    • Merge pull request #1651 from GitoxideLabs/merge (a876533)
    • Repository::merge_trees() now has a fully-wrapped outcome. (1d2262f)
    • Add Conflict::is_unresolved() as utility to see if multiple of them are considered unresolved. (9e106c4)
    • Remove a TODO that turned out to be unnecessary. (5b428a9)
    • Merge pull request #1652 from EliahKagan/run-ci/chmod (8e99eba)
    • Update tree-baseline archive (ab45415)
    • Set +x in index in added-file-changed-content-and-mode (6faf11a)
    • Set +x in index in same-rename-different-mode baseline (041bdde)
    • Merge pull request #1618 from GitoxideLabs/merge (3fb989b)
    • Respect the conflict-marker-size attribute as well. (bd91d6a)
    • Add tree() and commit() merge support, en par with merge-ORT as far as tests go. (4b1764c)
    • Adjust blob-merge baseline to also test the reverse of each operation (de1cfb6)
    • Add blob::PlatformRef::id_by_pick() to more efficiently pick merge results. (dd99991)
    • Don't fail on big files during blob-merge, but turn them into binary merges. (c1cf08c)
    • Prefer to receive borrowed gix_command::Context when it's just passed on. (78a5355)
    • Merge pull request #1642 from GitoxideLabs/new-release (db5c9cf)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.