Skip to content

gix v0.56.0

Compare
Choose a tag to compare
@Byron Byron released this 06 Dec 16:05
· 1503 commits to main since this release
476d5ef

New Features

  • add gitoxide.core.externalCommandStderr to allow enabling stderr to the enclosing terminal.
    Previously, this was enabled by default, now it can additionally be disabled by
    the caller.
  • use gitoxide.credentials.helperStderr key to control how stderr is handled with helpers.
    That way users can configure each repository instance according to their needs,
    with which includes disabling the stderr of credential helpers.
  • revision::Spec::path_and_mode()
    Provide additional information about revspecs for use with
    worktree filters.
  • add key for diff.external.
    That way it's conceivable that applications correctly run either
    a configured external diff tool, or one that is configured on a
    per diff-driver basis, while being allowed to fall back to
    a built-in implementation as needed.
  • add thediff::resource_cache() low-level utility for rapid in-memory diffing of combinations of resources.
    We also add the object::tree::diff::Platform::for_each_to_obtain_tree_with_cache() to pass a resource-cache
    for re-use between multiple invocation for significant savings.
  • Add config value gitoxide.http.sslNoVerify
    This value can by overriden by GIT_SSL_NO_VERIFY env variable. We use
    the value to override http.sslVerify when specifying ssl_verify in
    transport Options.
  • In gix read http.sslVerify config value and pass it to gix-transport.
  • add gitoxide.core.refsNamespace key and respect the GIT_NAMESPACE environment variable.
    It's also provided as context value.
  • make verbose-object-parsing-errors available in gix.
    That way, it's easy to create programs that are geared towards
    debugging repositories and finding invalid objects with detailed
    errors.
  • add the gitoxide.credentials.terminalPrompt key to represent the GIT_TERMINAL_PROMPT
    That way, it's easy to control the usage of terminals without using and environment.
  • Add http-client-curl-rustls (CLI) and blocking-http-transport-curl-rustls (lib) features to avoid openssl.
    That way, we should be able to avoid crashes on certain CI configurations.
  • add Head::try_into_peeled_object() and Head::peel_to_object_in_place()
    This makes it easier to peel to a specific object type, after
    all tags have been followed, without having to assume an intermediate
    commit.

Bug Fixes

  • assure the correct repository is used for checkouts after clone.
    If this is not the case, it's possible for filters to run in the context of
    potential parent repositories, which then can have all kinds of issues.

    In case of git-lfs, for instance, it would try to download objects
    from the wrong repository.

  • Allow multiple packs to be received one after another.
    Previously it would be difficult to perform another fetch operation on the
    same connection as the final flush packet after a pack wouldn't be consumed.

    This has now been mitigated by consuming it in the one place where knoweldge
    about this specialty exists.

  • don't use trust-dns by default when using request.
    It's reported to have issues under certain condition, please see
    seanmonstar/reqwest#437 for more.

    The blocking-http-transport-reqwest-rust-tls-trust-dns feature was added
    to provide the same feature-set as before for those who want trust-dns.

  • V1 negotiation won't hang anymore
    The logic previously tried to estimate when a pack can be expected,
    and when a NAK is the end of a block, or the beginning of a pack.

    This can be known because a pack (with our settings) needs two things:

    • the server thinks it's ready
  • a done sent by the client

New Features (BREAKING)

  • object::blob::diff::Platform now performs all necessary conversions.
    Previously it would just offer the git-ODB version of a blob for diffing,
    while it will now make it possible to apply all necessary conversion steps
    for you.

    This also moves Event::diff() to Change::diff(), adds
    Repository::diff_resource_cache() and refactors nearly everything
    about the objects::blob::diff::Platform.

  • generalize rename-tracking engine for later use with status.
    Previously the rename tracking engine was integrated with tree-diffs,
    but already operates in a stand-alone fashion.
    Now it's officially generalized which allows it to be tested separately
    and used when tracking renames for diffs between index and tree, index
    and index, and index and worktree.

  • make it possible to trace incoming and outgoing packetlines.
    Due to the way this is (and has to be) setup, unfortunately one
    has to integrate that with two crates, instead of just one.

    This changes touches multiple crates, most of which receive a single
    boolean as last argument to indicate whether the tracing should
    happen in the first place.

  • improve head() peeling API
    Previously it was partially untested and it was hard to obtain an object of choice.

    Further breaking changes:

    • rename Head::peeled() to into_peeled_id()
  • rename Head::into_fully_peeled_id() to try_peel_into_id()
  • rename Head::peel_to_id_in_place() to Head::try_peel_to_id_in_place()

Bug Fixes (BREAKING)

  • rename GITOXIDE_* environment variables to GIX_#
  • Remove unsafe transmute of should_interrupt
    Adds a lifetime to the ExtendedBufRead trait to specify how long the
    callback provided must live.

Commit Statistics

  • 68 commits contributed to the release over the course of 53 calendar days.
  • 54 days passed between releases.
  • 23 commits were understood as conventional.
  • 6 unique issues were worked on: #1061, #1076, #1090, #1125, #1129, #972

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • #1061
    • V1 negotiation won't hang anymore (6295dec)
  • #1076
    • Don't use trust-dns by default when using request. (8d9296f)
  • #1090
    • Add the gitoxide.credentials.terminalPrompt key to represent the GIT_TERMINAL_PROMPT (e95bb9f)
  • #1125
    • Fix; SnapshotMut::set_value() now sets values for keys in subsections as well. (d8452a0)
  • #1129
    • Assure the correct repository is used for checkouts after clone. (0b3eb14)
  • #972
    • Allow multiple packs to be received one after another. (3ff1827)
  • Uncategorized
    • Release gix-worktree-state v0.5.0, gix v0.56.0, gix-fsck v0.1.0, gitoxide-core v0.34.0, gitoxide v0.32.0 (c8568b9)
    • Release gix-worktree v0.28.0, gix-diff v0.38.0, gix-discover v0.27.0, gix-macros v0.1.1, gix-mailmap v0.20.1, gix-negotiate v0.10.0, gix-pack v0.45.0, gix-odb v0.55.0, gix-pathspec v0.4.1, gix-packetline v0.17.0, gix-transport v0.39.0, gix-protocol v0.42.0, gix-revision v0.24.0, gix-refspec v0.20.0, gix-status v0.3.0, gix-submodule v0.6.0, gix-worktree-state v0.5.0, gix v0.56.0, gix-fsck v0.1.0, gitoxide-core v0.34.0, gitoxide v0.32.0 (d3fd11e)
    • Release gix-date v0.8.1, gix-hash v0.13.2, gix-trace v0.1.4, gix-features v0.36.1, gix-actor v0.28.1, gix-validate v0.8.1, gix-object v0.39.0, gix-path v0.10.1, gix-glob v0.14.1, gix-quote v0.4.8, gix-attributes v0.20.1, gix-command v0.3.0, gix-packetline-blocking v0.17.0, gix-utils v0.1.6, gix-filter v0.7.0, gix-fs v0.8.1, gix-chunk v0.4.5, gix-commitgraph v0.22.1, gix-hashtable v0.4.1, gix-revwalk v0.10.0, gix-traverse v0.35.0, gix-worktree-stream v0.7.0, gix-archive v0.7.0, gix-config-value v0.14.1, gix-tempfile v11.0.1, gix-lock v11.0.1, gix-ref v0.39.0, gix-sec v0.10.1, gix-config v0.32.0, gix-prompt v0.8.0, gix-url v0.25.2, gix-credentials v0.22.0, gix-ignore v0.9.1, gix-bitmap v0.2.8, gix-index v0.27.0, gix-worktree v0.28.0, gix-diff v0.38.0, gix-discover v0.27.0, gix-macros v0.1.1, gix-mailmap v0.20.1, gix-negotiate v0.10.0, gix-pack v0.45.0, gix-odb v0.55.0, gix-pathspec v0.4.1, gix-packetline v0.17.0, gix-transport v0.39.0, gix-protocol v0.42.0, gix-revision v0.24.0, gix-refspec v0.20.0, gix-status v0.3.0, gix-submodule v0.6.0, gix-worktree-state v0.5.0, gix v0.56.0, gix-fsck v0.1.0, gitoxide-core v0.34.0, gitoxide v0.32.0, safety bump 27 crates (55d386a)
    • Prepare changelogs prior to release (d3dcbe5)
    • Merge branch 'adjustments-for-cargo' (8156340)
    • Add gitoxide.core.externalCommandStderr to allow enabling stderr to the enclosing terminal. (2762724)
    • Use gitoxide.credentials.helperStderr key to control how stderr is handled with helpers. (6cf73a4)
    • Rename GITOXIDE_* environment variables to GIX_# (2189cee)
    • Merge branch 'gix-status' (5fdc9df)
    • Merge branch 'remove-unsafe' (d2ba97c)
    • Remove unsafe transmute of should_interrupt (88f8b34)
    • revision::Spec::path_and_mode() (77686db)
    • J fmt (51c7abc)
    • Merge branch 'gix-status' (dfb3f18)
    • Adapt to changes in gix-diff (1706e23)
    • object::blob::diff::Platform now performs all necessary conversions. (4743212)
    • Add key for diff.external. (6f4bbc3)
    • Add thediff::resource_cache() low-level utility for rapid in-memory diffing of combinations of resources. (4aea9b0)
    • Merge branch 'support_ssl_verify' (5ce9784)
    • Refactor (ead00e9)
    • Add config value gitoxide.http.sslNoVerify (dd575cd)
    • In gix read http.sslVerify config value and pass it to gix-transport. (c6e83cf)
    • Merge pull request #1140 from bittrance/fix-pr1127 (698caaa)
    • Connect new gitoxide.credentials subsection into section tree. (8b8704f)
    • Adapt to changes in gix-filter (1763862)
    • Merge branch 'improve-filters' (f09ea13)
    • Add gitoxide.core.refsNamespace key and respect the GIT_NAMESPACE environment variable. (8434aab)
    • Merge branch 'check-cfg' (5a0d93e)
    • Replace all docsrs config by the document-features feature (bb3224c)
    • Merge branch 'sh-on-windows' (2b80d84)
    • Remove special handling in favor of allowing shell-avoidance. (a0cc80d)
    • Merge branch 'fix-1103' (d75159c)
    • Adapt to changes in gix-credentials (c712850)
    • Merge branch 'gix-status' (c87f2cc)
    • Generalize rename-tracking engine for later use with status. (089c4dc)
    • Merge branch 'error' (c372321)
    • Make verbose-object-parsing-errors available in gix. (0ed0a89)
    • Merge branch 'fix-1096' (ff99a18)
    • Adapt to changes in gix-object (203d69c)
    • Merge branch 'caio/main' (7227410)
    • Count removed bytes correctly (267b13d)
    • Merge branch 'gix-object-find' (c8bd660)
    • Thanks clippy (82b01c2)
    • Adapt to changes related to usage of gix-object::Find trait where necessary (5761a4d)
    • Adapt to changes in gix_object and gix_odb. (24e319e)
    • Merge branch 'BloopAI/main' (c197cbf)
    • Add feature to allow using rustls without trust-dns (ea8cd0e)
    • Merge branch 'size-optimization' (c0e72fb)
    • Remove CHANGELOG.md from all packages (b65a80b)
    • Merge branch 'fix-v1-negotiation' (eb23338)
    • Merge branch 'trace-packetlines' (e7de4c7)
    • Make it possible to trace incoming and outgoing packetlines. (c3edef1)
    • Merge branch 'discover-split-worktree' (16170d9)
    • Improve the error message around incorrect worktree paths (dd57957)
    • Allow to open split worktree repositories (20f962e)
    • Merge branch 'fuzz' (c5a7e66)
    • Add http-client-curl-rustls (CLI) and blocking-http-transport-curl-rustls (lib) features to avoid openssl. (f34f46a)
    • Make it easier to see what's happening during negotiation with tracing enabled (4e48558)
    • Release gix-url v0.25.1 (47a1241)
    • Merge branch 'head-conversions' (c2cf20c)
    • Add Head::try_into_peeled_object() and Head::peel_to_object_in_place() (117357e)
    • Improve head() peeling API (4e6a4e6)