Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.55.2 (2023-10-13)

Bug Fixes

  • bump gix-transport version to prevent it from being picked up. gix-transport v0.37.1 could accidentally be picked up by older, incompatible, gix versions which now fail to build.

    Thus v0.37.1 is now yanked and replaced with v0.38.0 along with a new release of gix to go with it.

Commit Statistics

  • 2 commits contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Prepare changelogs prior to release (12b5caf)
    • Bump gix-transport version to prevent it from being picked up. (8011c73)

0.55.1 (2023-10-12)

New Features

  • Add take_data() to all primitive object types. That is the new, most direct way to obtain its data which otherwise is immovable.
  • Add detach() and detached() too all object types. That way, the detachment API is symmetric. It's required to overcome the Drop implementation of each of these types which prevents moving data out of the object (easily).

Commit Statistics

  • 3 commits contributed to the release.
  • 2 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix v0.55.1 (4642c0c)
    • Add take_data() to all primitive object types. (5732303)
    • Add detach() and detached() too all object types. (88f2e6c)

0.55.0 (2023-10-12)

This release contains a complete rewrite of the internal url parsing logic, the public interface stays mostly the same however. Gitoxide will now be more correct, interpreting more urls the same way Git does. Improvements include the added support for ssh aliases (github:byron/gitoxide has previously been parsed as local path), adjustments around the interpretation of colons in file names (previously we disallowed colons that were not followed up with a slash character) and some smaller changes that bring the interpretation of file urls more in line with Git's implementation. Additionally, the error types have been adjusted to print a more comprehensive message by default, making sure they stay helpful even when bubbled up through multiple abstraction layers.

There are still many (edge) cases in Git's url parsing implementation which are not handled correctly by Gitoxide. If you notice any such deviation please open a new issue to help us making Gitoxide even more correct.

Other

  • inform about the absence of strict hash verification and strict object creation. Those are present in git2 and enabled by default, and gitoxde definitely wants to do the same at some point.

New Features

  • add Repository::head_tree() to more easily obtain the current tree.

  • Add Repository::has_object() as a high-level alternative. Previously, one would have to call repo.objects.contains(), which is fine, but this method is necessary for symmetry of the API and one shouldn't have to drop down a level to do this.

    This method also knows empty trees as special case.

  • add Object::try_into_blob() and into_blob() and Repository::empty_blob() This way it's easier to assert that an object is actually a blob.

  • add Repository::index_or_empty(). This is useful if a missing index should mean it's empty.

Commit Statistics

  • 15 commits contributed to the release over the course of 16 calendar days.
  • 17 days passed between releases.
  • 5 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

  • Uncategorized
    • Release gix-transport v0.37.1, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0 (14ddbd4)
    • Release gix-hash v0.13.1, gix-features v0.36.0, gix-actor v0.28.0, gix-object v0.38.0, gix-glob v0.14.0, gix-attributes v0.20.0, gix-command v0.2.10, gix-filter v0.6.0, gix-fs v0.8.0, gix-commitgraph v0.22.0, gix-revwalk v0.9.0, gix-traverse v0.34.0, gix-worktree-stream v0.6.0, gix-archive v0.6.0, gix-tempfile v11.0.0, gix-lock v11.0.0, gix-ref v0.38.0, gix-config v0.31.0, gix-url v0.25.0, gix-credentials v0.21.0, gix-diff v0.37.0, gix-discover v0.26.0, gix-ignore v0.9.0, gix-index v0.26.0, gix-mailmap v0.20.0, gix-negotiate v0.9.0, gix-pack v0.44.0, gix-odb v0.54.0, gix-pathspec v0.4.0, gix-packetline v0.16.7, gix-transport v0.37.0, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0, safety bump 37 crates (68e5432)
    • Prepare changelogs prior to release (1347a54)
    • Merge branch ‘improvements’ (429e7b2)
    • Inform about the absence of strict hash verification and strict object creation. (f478a37)
    • Add Repository::head_tree() to more easily obtain the current tree. (c79a7da)
    • Add Repository::has_object() as a high-level alternative. (787a9aa)
    • Add Object::try_into_blob() and into_blob() and Repository::empty_blob() (3cec935)
    • Thanks clippy (345712d)
    • Merge branch ‘reset’ (b842691)
    • Trust Ctime again (f929d42)
    • Add Repository::index_or_empty(). (7d9ecdd)
    • Adapt to changes in gix-status (54fb7c2)
    • Merge branch ‘gix-url-parse-rewrite’ (a12e4a8)
    • Update changelogs (4349353)

0.54.1 (2023-09-25)

Bug Fixes

  • local refs created during fetching will now always be valid. Previously it could create symbolic refs that were effectively unborn, i.e. point to a reference which doesn't exist.

    Now these will always point to the peeled object instead.

Commit Statistics

  • 2 commits contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix v0.54.1 (f603fd7)
    • Local refs created during fetching will now always be valid. (300a838)

0.54.0 (2023-09-24)

New Features

  • Add PathspecDetached as pathspec that can more easily be used across threads.
  • PathSpec implements gix_status::PathSpec to allow it to be used there. The reason we need a trait and can't do with simply a function is that multiple calls are needed to test for inclusion and allow the common-prefix optimization.
  • add Repository::stat_options() to learn how an index would compare filesystem stats.
  • add parallel feature toggle Make certain data structure threadsafe (or Sync) to facilitate multithreading. Further, many algorithms will now use multiple threads by default. If unset, most of gix can only be used in a single thread as data structures won't be Send anymore.

Bug Fixes

  • do not trust ctime by default. On MacOS it seems to be off by two seconds right from the source, which seems to be an issue stat isn't having.
  • ignore empty core.askpass settings This is the same as what git does, it's explicit per value, which means that other paths might be flagged as empty automatically.

Other

  • add note about the trust-model. It should explain why gix is happy to open repositories that won't be handled by git unless overrides are set.

Test

  • add assertion to assure ThreadSafeRepository is sync. If it doesn't appear to be sync, be sure to use the max-performance-safe feature.

Bug Fixes (BREAKING)

  • PrepareCheckout::main_worktree() now takes Progress as geric argument. This makes it more flexible and convenient, but is technically a breaking change.

Commit Statistics

  • 31 commits contributed to the release over the course of 15 calendar days.
  • 15 days passed between releases.
  • 9 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates (7891fb1)
    • Prepare changelogs prior to release (8a60d5b)
    • Merge branch ‘reset’ (54a8495)
    • Add PathspecDetached as pathspec that can more easily be used across threads. (f9d14d8)
    • Do not trust ctime by default. (e22893c)
    • PathSpec implements gix_status::PathSpec to allow it to be used there. (f066f98)
    • Add Repository::stat_options() to learn how an index would compare filesystem stats. (a8333f1)
    • Fix compile time warning (4ce7f7c)
    • Merge branch ‘parallel-feature’ (c270f78)
    • Add parallel feature toggle (2734e84)
    • Add assertion to assure ThreadSafeRepository is sync. (79e47a5)
    • Merge pull request #1015 from NobodyXu/optimize/prepare-checkout (14312b6)
    • Merge branch ‘path-config’ (9c528dc)
    • Merge pull request #1012 from NobodyXu/optimization/try-into-de-momo (afb1960)
    • Ignore empty core.askpass settings (334281c)
    • Merge branch ‘optimize/progress-use’ (1f2ffb6)
    • PrepareCheckout::main_worktree() now takes Progress as geric argument. (ee9276f)
    • Add note about the trust-model. (e022096)
    • Optimize clone::PrepareCheckout::main_worktree`` ([938f518`](https://github.com/Byron/gitoxide/commit/938f5187f0ff51561971ca463584ec0db93f3455))
    • Fix maybe_async (c80e809)
    • Rm unused clippy lint (d82f84b)
    • Fixed error by also using trait object in remote::fetch::Prepare::receive (44faa01)
    • Revert changes to binary files (3eb8653)
    • Rm binary files (6a33594)
    • Use trait object for progress in PrepareFetch::fetch_only (70989b3)
    • Fix clippy warnings (d5aa2ba)
    • Optimize Repository::write_blob_stream: Avoid dup codegen (ca8a373)
    • Apply gix_macros::momo to Repository::write_blob (bae928d)
    • Optimize Repository::write_object: Avoid dup momo (32f1c7d)
    • Rm unnecessary lifetime annotation in Repository::commit_as_inner (cf70a2e)
    • Optimize gix: de-momo impl TryInto by hand (b19c140)

0.53.1 (2023-09-08)

Bug Fixes

  • interrupt feature only gates signal-handling, but leaves the interrupt module alone.

Commit Statistics

  • 2 commits contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix v0.53.1 (1b1fc25)
    • interrupt feature only gates signal-handling, but leaves the interrupt module alone. (902639b)

0.53.0 (2023-09-08)

This release adds feature toggles which help to reduce compile time. Please see the library documentation for all the details.

New Features

  • remove log dependency in favor of gix-trace
  • add interrupt feature to reduce dependencies
  • Allow index access to be toggled with the index feature.
  • add excludes feature to make exclude-checks possible.
  • add mailmap feature
  • add revision component behind a feature toggle.
  • gix without connection support includes less code
  • allow disabling the blob-diff capability This also removes all diff capabilities.
  • improve feature documentation. This should make optimizing compile time and performance easier, while assuring these options aren't pre-determined by library providers.
  • Clone for ThreadSafeRepository It is Sync and can easily be passed by reference, but sometimes it's nice to be cloning it as well.
  • provide Repository::find_fetch_remote() to obtain a remote just like git would.

Bug Fixes

  • put gix-credentials and gix-prompt behind the ‘credentials’ feature toggle. They are also available when using https transports.
  • handle submodules whose entry in the index is a file.

Chore (BREAKING)

  • update to the latest prodash It makes proper usage of Progress types easier and allows them to be used as dyn traits as well.

New Features (BREAKING)

  • Use stack abstraction in Repository::excludes(). This makes it easier to use.
  • use prodash::Count to indicate that nothing more than counting is performed, in place of prodash::Progress
  • Provide a wrapper for gix_worktree::Stack for simpler attribute queries.

Bug Fixes (BREAKING)

  • remove regex feature in favor of revparse-regex. revparse-regex is only used when parsing revspecs that use a special syntax. This feature is also enabled by default.
  • use dyn trait where possible. This reduces compile time due to avoiding duplication.

Commit Statistics

  • 57 commits contributed to the release over the course of 17 calendar days.
  • 17 days passed between releases.
  • 19 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Thanks Clippy

Clippy helped 2 times to make code idiomatic.

Commit Details

  • Uncategorized
    • Release gix-transport v0.36.0, gix-protocol v0.39.0, gix-revision v0.21.0, gix-refspec v0.17.0, gix-submodule v0.3.0, gix-worktree v0.25.0, gix-worktree-state v0.2.0, gix v0.53.0 (1ff3064)
    • Release gix-date v0.8.0, gix-hash v0.13.0, gix-features v0.34.0, gix-actor v0.26.0, gix-object v0.36.0, gix-path v0.10.0, gix-glob v0.12.0, gix-attributes v0.18.0, gix-packetline-blocking v0.16.6, gix-filter v0.4.0, gix-fs v0.6.0, gix-commitgraph v0.20.0, gix-hashtable v0.4.0, gix-revwalk v0.7.0, gix-traverse v0.32.0, gix-worktree-stream v0.4.0, gix-archive v0.4.0, gix-config-value v0.14.0, gix-tempfile v9.0.0, gix-lock v9.0.0, gix-ref v0.36.0, gix-sec v0.10.0, gix-config v0.29.0, gix-prompt v0.7.0, gix-url v0.23.0, gix-credentials v0.19.0, gix-diff v0.35.0, gix-discover v0.24.0, gix-ignore v0.7.0, gix-index v0.24.0, gix-macros v0.1.0, gix-mailmap v0.18.0, gix-negotiate v0.7.0, gix-pack v0.42.0, gix-odb v0.52.0, gix-pathspec v0.2.0, gix-packetline v0.16.6, gix-transport v0.36.0, gix-protocol v0.39.0, gix-revision v0.21.0, gix-refspec v0.17.0, gix-submodule v0.3.0, gix-worktree v0.25.0, gix-worktree-state v0.2.0, gix v0.53.0, safety bump 39 crates (8bd0456)
    • Prepare changelogs for release (375db06)
    • Merge branch ‘optimizations’ (6135a5e)
    • Adapt to changes in gix (805b8aa)
    • Remove log dependency in favor of gix-trace (2b8d09f)
    • Add interrupt feature to reduce dependencies (36d34bd)
    • Allow index access to be toggled with the index feature. (721c377)
    • Put gix-credentials and gix-prompt behind the ‘credentials’ feature toggle. (a957478)
    • Add excludes feature to make exclude-checks possible. (92dd181)
    • Use stack abstraction in Repository::excludes(). (58b0e6f)
    • Add mailmap feature (c4ffde0)
    • Simplify test-suite (799a515)
    • Remove regex feature in favor of revparse-regex. (741b41e)
    • Add revision component behind a feature toggle. (c42064d)
    • gix without connection support includes less code (147528f)
    • Allow disabling the blob-diff capability (fea044e)
    • Improve feature documentation. (c5ec244)
    • Merge branch ‘feat/gix-momo’ (a1ed6a1)
    • Handle submodules whose entry in the index is a file. (4971a48)
    • Merge branch dynification (f658fcc)
    • Use dyn trait where possible. (072ee32)
    • Use prodash::Count to indicate that nothing more than counting is performed, in place of prodash::Progress (24dd870)
    • Update to the latest prodash (ed327f6)
    • Merge branch ‘improvements’ (8a7c2af)
    • Provide a wrapper for gix_worktree::Stack for simpler attribute queries. (54291fd)
    • Clone for ThreadSafeRepository (c79991c)
    • Merge branch ‘adjustments-for-cargo’ (b7560a2)
    • Adapt to changes in gix-submodule (f8471b1)
    • Release gix-index v0.23.1 (11b9c71)
    • Release gix-date v0.7.4, gix-index v0.23.0, safety bump 5 crates (3be2b1c)
    • Apply momo to fn gix::Remote::save_as_to (875c287)
    • Apply momo to fn gix::revision::Spec::from_bstr (1d90301)
    • Apply momo to mod config::snapshot::access (25912fe)
    • Apply momo to mod gix::create::into (cd3c289)
    • Rm unnecessary #[allow(unused_mut)] put on momoed functions (89ae797)
    • Remove unnecessary change in repository/config/transport.rs (86b8e50)
    • Remove unnecessary #[allow(clippy::needless_lifetimes)] (e1b9d51)
    • Dramatically simplify gix_macros::momo (c72eaa0)
    • Manually de-momo Repository::try_find_remote_{without_url_rewrite} (e760225)
    • Merge branch ‘fixes’ (4bfd1cc)
    • Thanks clippy (0d6d4ec)
    • Adapt to changes in gix-index and pass skip-hash through for performance.. (713cd59)
    • Use new gix method to obtain the fetch remote (instead of implementing it by hand) (e2c0912)
    • Provide Repository::find_fetch_remote() to obtain a remote just like git would. (d22b7fb)
    • Fix clippy lints in gix/src/repository/remote.rs (ff210d8)
    • Apply momo to mod gix::repository (5a50537)
    • Apply momo to mod remote::connection::fetch::receive_pack (ea5c2db)
    • Apply momo to gix::reference (3c205ab)
    • Apply momo to gix::pathspec (767ec2d)
    • Apply momo to mod gix::open::repository (3ce0144)
    • Apply momo to gix::object::tree (d835526)
    • Apply momo to mod gix::init (46a9dfe)
    • Apply momo to mod gix::discover (58fbb08)
    • Thanks clippy (5044c3b)
    • Imrpove git2 mapping by using aliases. (6194ebe)
    • Merge branch ‘gix-submodule’ (363ee77)

0.52.0 (2023-08-22)

New Features

  • add Worktree::pathspec() to easily get worktree-scoped pathspec searches.
  • add Submodule type to represent a declared submodule.
  • pathspec_search([specs]) to instantiate a search using pathspecs. It can be used to for filtering input paths. This type also makes filtering index entries easy.
  • make gix-pathspec crate available
  • add Commit::signature() to yield the PGP sigature of a commit, if present.

Bug Fixes

  • fix incorrect s/git-config/gix-config/ 3a861c8f049f6502d3bcbdac752659aa1aeda46a just blindly replaced any occurence of “git-config” or “git_config” with “gix-config”/“gix_config”.

    There is no such thing as a gix-config file. gix-config is a git-config file parser.

New Features (BREAKING)

  • Repository::prefix() turns Option<Result into Result<Option. This makes it easier for the caller as they won't have to call transpose anymore.

  • improve interrupt::init_handler() to be usable from multiple threads Previously it was geared towards applications which would initialize handlers only from the main thread.

    Now the API supports multiple threads.

Bug Fixes (BREAKING)

  • Repository::prefix() is now side-effect free and won't error if CWD is outside of working tree dir. This makes it more usable, especially in contexts where many repositories are held, possibly with changing current working dirs.

Commit Statistics

  • 32 commits contributed to the release over the course of 18 calendar days.
  • 19 days passed between releases.
  • 9 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-url v0.22.0, gix-credentials v0.18.0, gix-diff v0.34.0, gix-discover v0.23.0, gix-ignore v0.6.0, gix-bitmap v0.2.7, gix-index v0.22.0, gix-mailmap v0.17.0, gix-negotiate v0.6.0, gix-pack v0.41.0, gix-odb v0.51.0, gix-pathspec v0.1.0, gix-packetline v0.16.5, gix-transport v0.35.0, gix-protocol v0.38.0, gix-revision v0.20.0, gix-refspec v0.16.0, gix-submodule v0.2.0, gix-worktree v0.24.0, gix-worktree-state v0.1.0, gix v0.52.0, gitoxide-core v0.31.0, gitoxide v0.29.0 (6c62e74)
    • Release gix-date v0.7.3, gix-hash v0.12.0, gix-features v0.33.0, gix-actor v0.25.0, gix-object v0.35.0, gix-path v0.9.0, gix-glob v0.11.0, gix-quote v0.4.7, gix-attributes v0.17.0, gix-command v0.2.9, gix-packetline-blocking v0.16.5, gix-filter v0.3.0, gix-fs v0.5.0, gix-commitgraph v0.19.0, gix-hashtable v0.3.0, gix-revwalk v0.6.0, gix-traverse v0.31.0, gix-worktree-stream v0.3.0, gix-archive v0.3.0, gix-config-value v0.13.0, gix-tempfile v8.0.0, gix-lock v8.0.0, gix-ref v0.35.0, gix-sec v0.9.0, gix-config v0.28.0, gix-prompt v0.6.0, gix-url v0.22.0, gix-credentials v0.18.0, gix-diff v0.34.0, gix-discover v0.23.0, gix-ignore v0.6.0, gix-bitmap v0.2.7, gix-index v0.22.0, gix-mailmap v0.17.0, gix-negotiate v0.6.0, gix-pack v0.41.0, gix-odb v0.51.0, gix-pathspec v0.1.0, gix-packetline v0.16.5, gix-transport v0.35.0, gix-protocol v0.38.0, gix-revision v0.20.0, gix-refspec v0.16.0, gix-submodule v0.2.0, gix-worktree v0.24.0, gix-worktree-state v0.1.0, gix v0.52.0, gitoxide-core v0.31.0, gitoxide v0.29.0, safety bump 41 crates (30b2761)
    • Update changelogs prior to release (f23ea88)
    • Merge branch ‘gix-submodule’ (8f3f358)
    • Make sure that submodule hashes aren't attached as the parent repo is the wrong one here. (c96f26b)
    • Properly isolate environment variable based tests into their own binary (c35ddab)
    • Just fmt (0d258f4)
    • Merge branch ‘submodule-in-gix’ (36f7b78)
    • Adapt to changes in gix (9fe3052)
    • Add Worktree::pathspec() to easily get worktree-scoped pathspec searches. (28249bd)
    • Add Submodule type to represent a declared submodule. (59bb3c4)
    • Merge branch ‘worktree-organization’ (8d0d8e0)
    • Adapt to changes in gix-worktree (e5717e1)
    • Merge pull request #988 from not-my-profile/fix-gix-config-sub (7735047)
    • Fix incorrect s/git-config/gix-config/ (c51c8da)
    • Merge branch ‘submodule-active’ (a3afaa4)
    • Adapt to changes in gix-url (f8fc662)
    • pathspec_search([specs]) to instantiate a search using pathspecs. (a7d0e44)
    • Repository::prefix() is now side-effect free and won't error if CWD is outside of working tree dir. (430e58c)
    • Merge branch ‘pathspec-matching’ (9f4dfe0)
    • Repository::prefix() turns Option<Result into Result<Option. (b1e55d6)
    • Make gix-pathspec crate available (77da014)
    • Merge branch ‘handlers-mt’ (f584d76)
    • Improve interrupt::init_handler() to be usable from multiple threads (46225c2)
    • Merge branch ‘extract-signatures’ (b37affe)
    • Add Commit::signature() to yield the PGP sigature of a commit, if present. (5c13459)
    • Release gix-glob v0.10.2, gix-date v0.7.2, gix-validate v0.8.0, gix-object v0.34.0, gix-ref v0.34.0, gix-config v0.27.0, gix-commitgraph v0.18.2, gix-revwalk v0.5.0, gix-revision v0.19.0, gix-refspec v0.15.0, gix-submodule v0.1.0, safety bump 18 crates (4604f83)
    • Merge branch ‘submodules’ (b629f8a)
    • More idiomatic use of config.section_by_name() (0a584ee)
    • Adjust to changes in gix-validate (a8bc0de)
    • Merge branch ‘dev-on-linux’ (6b4a303)
    • Fix various tests to run properly on linux (ef8ccd9)

0.51.0 (2023-08-02)

This is mostly a bug-fix release with many improvements for fetching, along with more forgiving commit parsing.

New Features

  • Add Reference::follow() as a way to peel symbolic refs step by step.

Bug Fixes (BREAKING)

  • handle symbolic ref updates far more gracefully and with more logical consistency. Previously, refspecs couldn‘t be used to update sybolic references locally, particularly because the logic to do so correctly isn’t trivial and git itself also seems to cover only the most common cases.

    However, the logic now changed so that remote updates will only be rejected if

    • fast-forward rules are violated
  • the local ref is currently checked out
  • existing refs would not become ‘unborn’, i.e. point to a reference that doesn‘t exist and won’t be created due to ref-specs

Commit Statistics

  • 7 commits contributed to the release over the course of 2 calendar days.
  • 9 days passed between releases.
  • 2 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-actor v0.24.2, gix-object v0.33.2, gix-ref v0.33.3, gix-config v0.26.2, gix-prompt v0.5.5, gix-odb v0.50.2, gix-transport v0.34.2, gix-protocol v0.37.0, gix-worktree v0.23.1, gix v0.51.0, safety bump 3 crates (231ac1c)
    • Prepare additional changelogs (db63815)
    • Prepare changelogs (e4d2890)
    • Merge branch ‘fixes-and-improvements’ (f8b1f55)
    • Handle symbolic ref updates far more gracefully and with more logical consistency. (74ce863)
    • Adapt to changes in gix-protocol (df81076)
    • Add Reference::follow() as a way to peel symbolic refs step by step. (d9e551b)

0.50.1 (2023-07-24)

Bug Fixes

  • Tree::lookup_entry(_by_path)() now actually works Previously it was lacking a test and that showed.

Commit Statistics

  • 3 commits contributed to the release.
  • 1 day passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-archive v0.2.1, gix-ref v0.33.2, gix-pack v0.40.2, gix v0.50.1 (13883e5)
    • Prepare changelogs (735c206)
    • Tree::lookup_entry(_by_path)() now actually works (145f865)

0.50.0 (2023-07-22)

New Features

  • TreeEntryRefExt and TreeEntryExt to be able to easily attach a repo to it. Also, add detach() to types that were missing it.
  • Tree::find_entry() to easily find an entry in a tree's entries.
  • add Repository::archive() as extra It implements a high-level interface to achieve git archive like functionality.
  • optionally make gix-workspace-stream available via Repository::worktree_stream() That way it's easy to obtain a representation of the worktree in a fully streaming fashion, which is also the basis for archive-like functionality.

New Features (BREAKING)

  • unify API between object::tree::Entry and object::tree::EntryRef<'_>

Bug Fixes (BREAKING)

  • Tree::lookup_entry(_by_path))() are not mutating anymore; add Tree::peel_to_entry() and peel_to_entry_by_path() The previous implementation was a crutch that could now be circumvented.

    The new methods allow to reuse a buffer in case the object isn't used or needed further, possibly saving allocations.

Commit Statistics

  • 18 commits contributed to the release over the course of 1 calendar day.
  • 3 days passed between releases.
  • 6 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-config v0.26.1, gix v0.50.0 (d34a4ea)
    • Release gix-diff v0.33.1, gix-discover v0.22.1, gix-ignore v0.5.1, gix-bitmap v0.2.6, gix-index v0.21.1, gix-mailmap v0.16.1, gix-negotiate v0.5.1, gix-pack v0.40.1, gix-odb v0.50.1, gix-packetline v0.16.4, gix-transport v0.34.1, gix-protocol v0.36.1, gix-revision v0.18.1, gix-refspec v0.14.1, gix-worktree v0.23.0, gix v0.50.0 (0062971)
    • Release gix-tempfile v7.0.2, gix-utils v0.1.5, gix-lock v7.0.2, gix-ref v0.33.1, gix-sec v0.8.4, gix-prompt v0.5.4, gix-url v0.21.1, gix-credentials v0.17.1, gix-diff v0.33.1, gix-discover v0.22.1, gix-ignore v0.5.1, gix-bitmap v0.2.6, gix-index v0.21.1, gix-mailmap v0.16.1, gix-negotiate v0.5.1, gix-pack v0.40.1, gix-odb v0.50.1, gix-packetline v0.16.4, gix-transport v0.34.1, gix-protocol v0.36.1, gix-revision v0.18.1, gix-refspec v0.14.1, gix-worktree v0.23.0, gix v0.50.0 (107a64e)
    • Release gix-features v0.32.1, gix-actor v0.24.1, gix-validate v0.7.7, gix-object v0.33.1, gix-path v0.8.4, gix-glob v0.10.1, gix-quote v0.4.6, gix-attributes v0.16.0, gix-command v0.2.8, gix-packetline-blocking v0.16.4, gix-filter v0.2.0, gix-fs v0.4.1, gix-chunk v0.4.4, gix-commitgraph v0.18.1, gix-hashtable v0.2.4, gix-revwalk v0.4.1, gix-traverse v0.30.1, gix-worktree-stream v0.2.0, gix-archive v0.2.0, gix-config-value v0.12.5, gix-tempfile v7.0.1, gix-utils v0.1.5, gix-lock v7.0.2, gix-ref v0.33.1, gix-sec v0.8.4, gix-prompt v0.5.4, gix-url v0.21.1, gix-credentials v0.17.1, gix-diff v0.33.1, gix-discover v0.22.1, gix-ignore v0.5.1, gix-bitmap v0.2.6, gix-index v0.21.1, gix-mailmap v0.16.1, gix-negotiate v0.5.1, gix-pack v0.40.1, gix-odb v0.50.1, gix-packetline v0.16.4, gix-transport v0.34.1, gix-protocol v0.36.1, gix-revision v0.18.1, gix-refspec v0.14.1, gix-worktree v0.23.0, gix v0.50.0, safety bump 5 crates (16295b5)
    • Prepare more changelogs (c4cc5f2)
    • Release gix-date v0.7.1, gix-hash v0.11.4, gix-trace v0.1.3, gix-features v0.32.0, gix-actor v0.24.0, gix-validate v0.7.7, gix-object v0.33.0, gix-path v0.8.4, gix-glob v0.10.0, gix-quote v0.4.6, gix-attributes v0.15.0, gix-command v0.2.7, gix-packetline-blocking v0.16.3, gix-filter v0.1.0, gix-fs v0.4.0, gix-chunk v0.4.4, gix-commitgraph v0.18.0, gix-hashtable v0.2.4, gix-revwalk v0.4.0, gix-traverse v0.30.0, gix-worktree-stream v0.2.0, gix-archive v0.2.0, gix-config-value v0.12.4, gix-tempfile v7.0.1, gix-utils v0.1.5, gix-lock v7.0.2, gix-ref v0.33.0, gix-sec v0.8.4, gix-prompt v0.5.3, gix-url v0.21.0, gix-credentials v0.17.0, gix-diff v0.33.0, gix-discover v0.22.0, gix-ignore v0.5.0, gix-bitmap v0.2.6, gix-index v0.21.0, gix-mailmap v0.16.0, gix-negotiate v0.5.0, gix-pack v0.40.0, gix-odb v0.50.0, gix-packetline v0.16.4, gix-transport v0.34.0, gix-protocol v0.36.0, gix-revision v0.18.0, gix-refspec v0.14.0, gix-worktree v0.22.0, gix v0.49.1 (5cb3589)
    • Update changelogs prior to release (2fc66b5)
    • Merge branch ‘improvements-for-crates-index’ (3f914e8)
    • TreeEntryRefExt and TreeEntryExt to be able to easily attach a repo to it. (caa8fb9)
    • Tree::find_entry() to easily find an entry in a tree's entries. (62cacd4)
    • Tree::lookup_entry(_by_path))() are not mutating anymore; add Tree::peel_to_entry() and peel_to_entry_by_path() (8cad009)
    • Unify API between object::tree::Entry and object::tree::EntryRef<'_> (d5e4ee0)
    • J fmt (57cab40)
    • Merge branch ‘gix-archive’ (1dda48b)
    • Change archive implementation to require the seek bound. (61aed0e)
    • Add Repository::archive() as extra (c4a1fb1)
    • Optionally make gix-workspace-stream available via Repository::worktree_stream() (4ee2857)
    • Update license field following SPDX 2.1 license expression standard (9064ea3)

0.49.1 (2023-07-19)

A maintenance release without user-facing changes.

Bug Fixes (BREAKING)

  • Tree::lookup_entry(_by_path))() are not mutating anymore; add Tree::peel_to_entry() and peel_to_entry_by_path() The previous implementation was a crutch that could now be circumvented.

    The new methods allow to reuse a buffer in case the object isn't used or needed further, possibly saving allocations.

New Features (BREAKING)

  • unify API between object::tree::Entry and object::tree::EntryRef<'_>

New Features

  • TreeEntryRefExt and TreeEntryExt to be able to easily attach a repo to it. Also, add detach() to types that were missing it.
  • Tree::find_entry() to easily find an entry in a tree's entries.
  • add Repository::archive() as extra It implements a high-level interface to achieve git archive like functionality.
  • optionally make gix-workspace-stream available via Repository::worktree_stream() That way it's easy to obtain a representation of the worktree in a fully streaming fashion, which is also the basis for archive-like functionality.

Commit Statistics

  • 4 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-prompt v0.5.3, gix v0.49.1, cargo-smart-release v0.20.0 (f069852)
    • Prepare changelogs prior to release (849f508)
    • Merge branch ‘smart-release-stability’ (8629f56)
    • Update git2 API mapping and be clear what stability means as well. (64cd396)

0.49.0 (2023-07-19)

New Features

  • Make EntryMode available from gix::object::tree. Previously one had to go through gix::objs::tree which wasn't symmetric with gix::object::Kind.
  • Add Id::header() and Id::try_header() as syblings to ::object() and ::try_object(). With the new header related functions one can obtain information about an object more quickly.
  • Repository::header() and ::try_header() to learn about objects, quickly Accessing just the headers of an object is much faster than accessing the entire object. Previously, this method was only available on the objects field, now it's available through Repository directly.
  • top-level examples that represent fully-fledged command-line applications. Please note that these are just examples, which aren't necessarily production ready in terms of quality or performance.
  • checkouts when cloning now respect attributes and use filters.
  • add Repository::filter_pipeline() to obtain a primitive to handle data conversions. It's fully configured as git would, and can be used to convert data from git or to git.

Bug Fixes

  • properly re-initialize object caches after their configuration changes.

Refactor (BREAKING)

  • move error structs into repository module where appropriate.

Commit Statistics

  • 28 commits contributed to the release over the course of 11 calendar days.
  • 19 days passed between releases.
  • 8 commits were understood as conventional.
  • 1 unique issue was worked on: #925

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

  • #925
    • Remove all copies of repo-initialization files and rework them to be our own. (5ac2269)
  • Uncategorized
    • Release gix-filter v0.1.0, gix-ignore v0.5.0, gix-revwalk v0.4.0, gix-traverse v0.30.0, gix-index v0.21.0, gix-mailmap v0.16.0, gix-negotiate v0.5.0, gix-pack v0.40.0, gix-odb v0.50.0, gix-transport v0.34.0, gix-protocol v0.36.0, gix-revision v0.18.0, gix-refspec v0.14.0, gix-worktree v0.22.0, gix v0.49.0 (4aca8c2)
    • Release gix-features v0.32.0, gix-actor v0.24.0, gix-glob v0.10.0, gix-attributes v0.15.0, gix-commitgraph v0.18.0, gix-config-value v0.12.4, gix-fs v0.4.0, gix-object v0.33.0, gix-ref v0.33.0, gix-config v0.26.0, gix-command v0.2.7, gix-url v0.21.0, gix-credentials v0.17.0, gix-diff v0.33.0, gix-discover v0.22.0, gix-filter v0.1.0, gix-ignore v0.5.0, gix-revwalk v0.4.0, gix-traverse v0.30.0, gix-index v0.21.0, gix-mailmap v0.16.0, gix-negotiate v0.5.0, gix-pack v0.40.0, gix-odb v0.50.0, gix-transport v0.34.0, gix-protocol v0.36.0, gix-revision v0.18.0, gix-refspec v0.14.0, gix-worktree v0.22.0, gix v0.49.0 (68ae3ff)
    • Adjust package versions (by cargo-smart-release) (c70e54f)
    • Prepare changelogs prior to release (e4dded0)
    • Just fmt (a063c62)
    • Merge branch ‘adjustments-for-crates-index’ (b82868d)
    • Make EntryMode available from gix::object::tree. (980c2ba)
    • Add Id::header() and Id::try_header() as syblings to ::object() and ::try_object(). (d4a8f8c)
    • Repository::header() and ::try_header() to learn about objects, quickly (b73435b)
    • Properly re-initialize object caches after their configuration changes. (47ca846)
    • Top-level examples that represent fully-fledged command-line applications. (c05eb22)
    • Cargo fmt (6121b8f)
    • git log example include empty parents and paths (bd59bbe)
    • git log example now accepts multiple paths. (0df9f70)
    • git log example filter for min/max parents (01e9c29)
    • git log example iterator now properly lazy (8a6f1e8)
    • git log example now shows merge parents (5cbb6a7)
    • A git log example (03b3423)
    • A git ls-tree example (6f4b431)
    • Thanks clippy (3ef32af)
    • Merge branch ‘unique-templates’ (cbb0db8)
    • Adapt journey tests to changes in init templates (6297d22)
    • Merge branch ‘integrate-filtering’ (b19a56d)
    • Checkouts when cloning now respect attributes and use filters. (8cc106a)
    • Add Repository::filter_pipeline() to obtain a primitive to handle data conversions. (8993b77)
    • Move error structs into repository module where appropriate. (c548780)
    • Add keys required to deal with worktree conversions and filters. (3fbd7b0)

0.48.0 (2023-06-29)

The main feature of this release is support dates prior to the UNIX epoch. Note that this is a feature that isn't supported by git, but only by libgit2.

Bug Fixes

  • use type for time consistently. This will allow it to be changed more easily later.

Other

  • Add incomplete mapping of typical git2 functions and their counterpart in gix. That way the ground-work is laid for making the usage of gix easier for those who used git2 before.
  • make clear what can happen if rewrite-tracking isn't disabled if it is not desired. Triggered by this onefetch PR: https://github.com/o2sh/onefetch/pull/1093

Commit Statistics

  • 15 commits contributed to the release over the course of 6 calendar days.
  • 6 days passed between releases.
  • 3 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-transport v0.33.1, gix v0.48.0 (f27ca12)
    • Release gix-lock v7.0.1, gix v0.48.0 (5ce81ef)
    • Release gix-glob v0.9.1, gix-attributes v0.14.1, gix-config-value v0.12.3, gix-ref v0.32.1, gix-sec v0.8.3, gix-config v0.25.1, gix-url v0.20.1, gix-credentials v0.16.1, gix-discover v0.21.1, gix-ignore v0.4.1, gix-pack v0.39.1, gix-odb v0.49.1, gix-worktree v0.21.1, gix v0.48.0 (69c6a36)
    • Release gix-features v0.31.1, gix-path v0.8.3, gix v0.48.0 (9ca3464)
    • Release gix-date v0.7.0, gix-trace v0.1.2, gix-actor v0.23.0, gix-commitgraph v0.17.1, gix-utils v0.1.4, gix-object v0.32.0, gix-ref v0.32.0, gix-config v0.25.0, gix-diff v0.32.0, gix-discover v0.21.0, gix-hashtable v0.2.3, gix-revwalk v0.3.0, gix-traverse v0.29.0, gix-index v0.20.0, gix-mailmap v0.15.0, gix-negotiate v0.4.0, gix-pack v0.39.0, gix-odb v0.49.0, gix-protocol v0.35.0, gix-revision v0.17.0, gix-refspec v0.13.0, gix-worktree v0.21.0, gix v0.48.0, safety bump 20 crates (27e8c18)
    • Prepare changelogs prior to release (00f96fb)
    • Merge branch ‘i64-times’ (b407461)
    • Add incomplete mapping of typical git2 functions and their counterpart in gix. (fb63f3f)
    • Adapt to changes in gix-date (fba45c6)
    • Use type for time consistently. (9cfc4aa)
    • Add a test to see what happens if negative dates are used in commits (57a5cd1)
    • Make clear what can happen if rewrite-tracking isn't disabled if it is not desired. (3c8e3c1)
    • More tracing information when updating refs (6906e0d)
    • Add more details for negotation phases (8341d08)
    • Add a span for each negotiation round (ec73479)

0.47.0 (2023-06-22)

Chore

  • Add clippy::redundant-closure-for-method-calls lint

New Features

  • provide basic tracing spans for common operations. This is just the beginning and more crates will integrate with it over time.
  • expose hashtable in root for access to optimized-for-object-ids sets and maps.

Bug Fixes

  • make sure empty packs in shallow clones are working as well.

  • no-want detection for negotiation phase is now consistent. It being inconsistent was a reason for ‘failing to parse server response’ which was empty as we didn‘t provide any wants to the server, but didn’t detect that case in the initial negotiation-preparation phase.

    Turns out we didn't detect it as our special handling of implicit tags was not done in the negotiation-preparation phase.

    The fix consists of unifying the filtering phase to all places that needed, so the preparation phase outcome is now consistent with what would have come later.

New Features (BREAKING)

  • provide fetch::outcome::Negotiate for details on what happened during negotiation. We also remove the negotiation_rounds field in favor of a far more detailed fetch::outcome::Negotiate struct.
  • respect the core.commitGraph option. Previously, we would always use the commitgraph when available, but now we only do so if the core.commitGraph option is set.

Commit Statistics

  • 22 commits contributed to the release over the course of 11 calendar days.
  • 12 days passed between releases.
  • 7 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-date v0.6.0, gix-hash v0.11.3, gix-trace v0.1.1, gix-features v0.31.0, gix-actor v0.22.0, gix-path v0.8.2, gix-glob v0.9.0, gix-quote v0.4.5, gix-attributes v0.14.0, gix-chunk v0.4.3, gix-commitgraph v0.17.0, gix-config-value v0.12.2, gix-fs v0.3.0, gix-tempfile v7.0.0, gix-utils v0.1.3, gix-lock v7.0.0, gix-validate v0.7.6, gix-object v0.31.0, gix-ref v0.31.0, gix-sec v0.8.2, gix-config v0.24.0, gix-command v0.2.6, gix-prompt v0.5.2, gix-url v0.20.0, gix-credentials v0.16.0, gix-diff v0.31.0, gix-discover v0.20.0, gix-hashtable v0.2.2, gix-ignore v0.4.0, gix-bitmap v0.2.5, gix-revwalk v0.2.0, gix-traverse v0.28.0, gix-index v0.19.0, gix-mailmap v0.14.0, gix-negotiate v0.3.0, gix-pack v0.38.0, gix-odb v0.48.0, gix-packetline v0.16.3, gix-transport v0.33.0, gix-protocol v0.34.0, gix-revision v0.16.0, gix-refspec v0.12.0, gix-worktree v0.20.0, gix v0.47.0, gitoxide-core v0.29.0, gitoxide v0.27.0, safety bump 30 crates (ea9f942)
    • Prepare changelogs prior to release (18b0a37)
    • Add a span for another potentially expensive portion of the negotiation (f2e7ec4)
    • just fmt (871dd0b)
    • Merge branch ‘corpus’ (aa16c8c)
    • Change MSRV to 1.65 (4f635fc)
    • Provide basic tracing spans for common operations. (3cffa26)
    • Merge branch ‘gix-revision-graph’ (036e60a)
    • Expose hashtable in root for access to optimized-for-object-ids sets and maps. (47c7b0d)
    • Provide fetch::outcome::Negotiate for details on what happened during negotiation. (682def0)
    • Merge branch ‘fix-no-want-detection’ (71efcbb)
    • Make sure empty packs in shallow clones are working as well. (67c06d9)
    • No-want detection for negotiation phase is now consistent. (db69e31)
    • Merge branch ‘help-874-redundant-closures’ (fe59956)
    • Add clippy::redundant-closure-for-method-calls lint (bcad5c2)
    • Merge branch ‘future-dates’ (8d2e6a9)
    • Respect the core.commitGraph option. (574e0f4)
    • Adapt to changes in gix-revision/gix-revwalk (1fdaf71)
    • Adapt to changes in gix-protocol (b785e81)
    • Adapt to changes in gix-traverse (b447f47)
    • Adapt to changes in gix-actor (4a80e86)
    • Adapt to changes in gix-date (d575336)

0.46.0 (2023-06-10)

New Features (BREAKING)

  • revision::Walk yields revision::Info structs instead of Ids. This enables re-use of information that was already obtained, like the parents of a commit and possibly its commit-time.

Changed (BREAKING)

  • rename Repository::commit_graph() to ::revision_graph(). THat's a better fix given its locaion in gix-revision, while differentiating it further from the lower-level commit-graph.

    Also rename Repository::commit_cache() to ::commit_graph() now that the name is free.

Other

  • gix::revision::walk::Platform now informas about the commitgraph. In short, one should use the Graph to obtain the tools necessary for potentially accelerated, custom commit walks.

New Features

  • make it possible to use config::tree::Key to more conveniently set values via config::SnapshotMut::set()

  • use the commitgraph if possible and allow its usage to be controlled via revision::walk::Platform::use_commit_graph(toggle). The commitgraph is a data structure to greatly accelerate commit walks. It is now supported and used by default, but can be deactivated if desired.

    Further, add Repository::commit_cache() for direct access to just the commit-graph datastructure, without the extras provided by gix_revision::Graph.

  • add Repository::index_or_load_from_head(). That way it's possible to either open the existing worktree index, or create one in-memory by turning our HEAD tree into an index on the fly.

  • make it possible to use config::tree::Key to more conveniently set values via config::SnapshotMut::set()

Commit Statistics

  • 15 commits contributed to the release over the course of 2 calendar days.
  • 3 days passed between releases.
  • 6 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-attributes v0.13.1, gix-diff v0.30.1, gix-revwalk v0.1.0, gix-traverse v0.27.0, gix-index v0.18.0, gix-revision v0.15.2, gix-negotiate v0.2.1, gix-pack v0.37.0, gix-odb v0.47.0, gix-protocol v0.33.2, gix-worktree v0.19.0, gix v0.46.0, safety bump 7 crates (2560a2c)
    • Prepare changelogs prior to release (298f3d7)
    • Improve tests related to the handling of shallow repos (d50bfa9)
    • Merge branch ‘walk-with-commitgraph’ (fdee9a2)
    • Adapt to changes in gix (20f73c8)
    • revision::Walk yields revision::Info structs instead of Ids. (7e9f202)
    • Rename Repository::commit_graph() to ::revision_graph(). (068603a)
    • Use the commitgraph if possible and allow its usage to be controlled via revision::walk::Platform::use_commit_graph(toggle). (b2b88dc)
    • Adapt to changes in gix-traverse (1f682fd)
    • Adapt to changes in gix-revwalk (f7d95d1)
    • Add Repository::index_or_load_from_head(). (5d32012)
    • gix::revision::walk::Platform now informas about the commitgraph. (f0ddc3b)
    • Update changelog with information for the gix CLI. (4e081f2)
    • Make it possible to use config::tree::Key to more conveniently set values via config::SnapshotMut::set() (2a698fa)
    • Release gix-protocol v0.33.1 (9c99ed3)

0.45.1 (2023-06-06)

Bug Fixes

  • gix::env::fetch::collate::Error now considers negotiation errors a sign of corrupt git repos. Indeed, all of these negotiation errors are due to failures reading references or objects that ought to be there.

Commit Statistics

  • 3 commits contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-revision v0.15.1, gix v0.45.1 (11766a0)
    • Merge branch ‘adjustments-for-cargo’ (04f011c)
    • gix::env::fetch::collate::Error now considers negotiation errors a sign of corrupt git repos. (9010f58)

0.45.0 (2023-06-06)

The reason for this release is the ability to properly negotiate packs, also across multiple rounds, and with protocol.version 1 or 2, across stateless or stateful transports.

Chore

  • inline format args

New Features

  • use gix-negotiate in fetch machinery. Thanks to it we are finally able to do pack negotiations just like git can, as many rounds as it takes and with all available algorithms.

    Works for V1 and V2 and for stateless and stateful transports.

  • Add gitoxide.core.defaultPackCacheMemoryLimit to control memory limits. Previously the 64 slot LRU cache didn't have any limit, now one is implemented that defaults to about 96MB.

New Features (BREAKING)

  • respect core.useReplaceRefs and remove gitoxide.objects.noReplace. The gitoxide specific variable wasn't needed in the first place.

Refactor (BREAKING)

  • Move Kind into repository::Kind. This type was from old times where gix was called gix-repository. Also remote ThreadSafeRepository::kind() in favor of leaving only Repository::kind().

Commit Statistics

  • 33 commits contributed to the release over the course of 40 calendar days.
  • 40 days passed between releases.
  • 5 commits were understood as conventional.
  • 1 unique issue was worked on: #851

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

  • #851
    • Add gitoxide.core.defaultPackCacheMemoryLimit to control memory limits. (020ff4e)
  • Uncategorized
    • Release gix-date v0.5.1, gix-hash v0.11.2, gix-features v0.30.0, gix-actor v0.21.0, gix-path v0.8.1, gix-glob v0.8.0, gix-quote v0.4.4, gix-attributes v0.13.0, gix-chunk v0.4.2, gix-commitgraph v0.16.0, gix-config-value v0.12.1, gix-fs v0.2.0, gix-tempfile v6.0.0, gix-utils v0.1.2, gix-lock v6.0.0, gix-validate v0.7.5, gix-object v0.30.0, gix-ref v0.30.0, gix-sec v0.8.1, gix-config v0.23.0, gix-command v0.2.5, gix-prompt v0.5.1, gix-url v0.19.0, gix-credentials v0.15.0, gix-diff v0.30.0, gix-discover v0.19.0, gix-hashtable v0.2.1, gix-ignore v0.3.0, gix-bitmap v0.2.4, gix-traverse v0.26.0, gix-index v0.17.0, gix-mailmap v0.13.0, gix-revision v0.15.0, gix-negotiate v0.2.0, gix-pack v0.36.0, gix-odb v0.46.0, gix-packetline v0.16.2, gix-transport v0.32.0, gix-protocol v0.33.0, gix-refspec v0.11.0, gix-worktree v0.18.0, gix v0.45.0, safety bump 29 crates (9a9fa96)
    • just fmt (ffc1276)
    • Prepare changelogs prior to release (8f15cec)
    • Merge branch ‘integrate-gix-negotiate’ (ae845de)
    • Add test to validate alternates in the context of fetching (ae1bc41)
    • Use gix-negotiate in fetch machinery. (af0ef2f)
    • Respect core.useReplaceRefs and remove gitoxide.objects.noReplace. (e011e36)
    • Thanks clippy (9525ac8)
    • Merge branch ‘fix-docs’ (420553a)
    • Minor fixes (89a8cfe)
    • Cleaning up documentation (2578e57)
    • Move Kind into repository::Kind. (9689a08)
    • Merge branch ‘auto-clippy’ (dbf8aa1)
    • Autofix map-or-unwrap clippy lint (and manual fix what was left) (2087032)
    • Merge branch ‘main’ into auto-clippy (3ef5c90)
    • Merge pull request #864 from nyurik/lint-fmt (279dc09)
    • Merge branch ‘blinxen/main’ (9375cd7)
    • Inline format args (dbc6cbb)
    • Include license files in all crates (facaaf6)
    • Merge branch ‘consecutive-negotiation’ (97b3f7e)
    • Release gix-commitgraph v0.15.0, gix-revision v0.14.0, gix-negotiate v0.1.0, safety bump 7 crates (92832ca)
    • Merge branch ‘consecutive-negotiation’ (4507f94)
    • Adapt to changes in gix-revision (56f4d30)
    • Refactor (f4245f4)
    • Merge branch ‘fix-851’ (2f275d5)
    • Adjust to changes in gix-pack (215889c)
    • Support reading the fetch algorithm from configuration (33b7770)
    • Release gix-object v0.29.2 (4f879bf)
    • Release gix-discover v0.18.1, gix-worktree v0.17.1, gix-testtools v0.12.0 (f7b6c6f)
    • Release gix-index v0.16.1 (08c6f9d)
    • Release gix-ref v0.29.1 (13e01f5)
    • Improve docs for Shallow (3d95bb7)

0.44.1 (2023-04-27)

A maintenance release without user-facing changes. It's meant to fix breakage that occurred when publishing a breaking change in gix-path by accident.

Commit Statistics

  • 3 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-path v0.8.0, gix-glob v0.7.0, gix-attributes v0.12.0, gix-config-value v0.12.0, gix-ref v0.29.0, gix-sec v0.8.0, gix-config v0.22.0, gix-prompt v0.5.0, gix-url v0.18.0, gix-credentials v0.14.0, gix-discover v0.18.0, gix-ignore v0.2.0, gix-pack v0.35.0, gix-odb v0.45.0, gix-transport v0.31.0, gix-protocol v0.32.0, gix-refspec v0.10.1, gix-worktree v0.17.0, gix v0.44.1 (7ebc9f7)
    • Prepare changelogs prior to release (0135158)
    • Bump gix-path v0.8.0, safety bump 20 crates (gix set to 0.44.1 manually) (43ebaf2)

0.44.0 (2023-04-26)

New Features

  • gix index entries also prints attributes.
  • add Repository::attributes() and Worktree::attributes().
  • add index.threads configuration to gix::config::tree
  • Before writing new objects, check if they exist. That way we safe expensive IO at the cost of some CPU.
  • add Object::into_tag() and Tag::decode() methods. This makes the API more symmetric as similar methods exist for commits and trees.
  • Allow USE_NSEC and USE_STDEV compile time flags to configured at runtime. Right now git may be compiled without these capabilities, even though on some platforms it might make perfect sense to enable them by default or enable them on a per repository basis. This is now possible thanks to added gitoxide specific functions.
  • open::Options now allow controlling where gitattributes files are loaded from. That way it's possible to, for example, isolate all operations that rely on the gitattribute system, like checkouts or additions to the index.
  • revision::walk::Platform::selected(filter) to selectively prune parts of the commit graph.

Bug Fixes

  • When removing all shallow commits from shallow file, delete it. Previously it would leave an empty file, which will be ignored by the implementation but might be confusing to users.
  • gix::open() can handle bare repositories with index. These are mis-classified as non-bare repository, which previosuly caused it to get off-track.

New Features (BREAKING)

  • add Repository::excludes() and simplify signature of Worktree::excludes(). Further, this change removes the permission module without replacement, and moves permissions into open.

    This corrects an artifact of this crate previously being name gix-repository and brings these types semantically closer to where they are actually used.

  • support configuring the connection (i.e. for auth) during clone. This change also removes the generic type for Progress from Connection which forces it to be passed to every potentially long-running method.

  • Rename serde1 cargo feature to serde and use the weak-deps cargo capability. With it it's possible to not automatically declare all optional dependencies externally visible features, and thus re-use feature names that oterwise are also a crate name.

    Previously I thought that serde1 is for future-proofing and supporting multiple serde versions at the same time. However, it‘s most definitely a burden I wouldn’t want anyway, so using serde seems to be the way to go into the future.

  • remove types that are now available in gix-os

Commit Statistics

  • 48 commits contributed to the release over the course of 26 calendar days.
  • 27 days passed between releases.
  • 14 commits were understood as conventional.
  • 2 unique issues were worked on: #801, #814

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

  • #801
    • revision::walk::Platform::selected(filter) to selectively prune parts of the commit graph. (ec93f75)
  • #814
    • Rename serde1 cargo feature to serde and use the weak-deps cargo capability. (b83ee36)
  • Uncategorized
    • Release gix-worktree v0.16.0, gix v0.44.0 (4527fb8)
    • Release gix-index v0.16.0, gix-mailmap v0.12.0, gix-pack v0.34.0, gix-odb v0.44.0, gix-packetline v0.16.0, gix-transport v0.30.0, gix-protocol v0.31.0, gix-revision v0.13.0, gix-refspec v0.10.0, gix-worktree v0.16.0, gix v0.44.0 (d7173b2)
    • Release gix-index v0.16.0, gix-mailmap v0.12.0, gix-pack v0.34.0, gix-odb v0.44.0, gix-packetline v0.16.0, gix-transport v0.30.0, gix-protocol v0.31.0, gix-revision v0.13.0, gix-refspec v0.10.0, gix-worktree v0.16.0, gix v0.44.0 (e4df557)
    • Release gix-hash v0.11.1, gix-path v0.7.4, gix-glob v0.6.0, gix-attributes v0.11.0, gix-config-value v0.11.0, gix-fs v0.1.1, gix-tempfile v5.0.3, gix-utils v0.1.1, gix-lock v5.0.1, gix-object v0.29.1, gix-ref v0.28.0, gix-sec v0.7.0, gix-config v0.21.0, gix-prompt v0.4.0, gix-url v0.17.0, gix-credentials v0.13.0, gix-diff v0.29.0, gix-discover v0.17.0, gix-hashtable v0.2.0, gix-ignore v0.1.0, gix-bitmap v0.2.3, gix-traverse v0.25.0, gix-index v0.16.0, gix-mailmap v0.12.0, gix-pack v0.34.0, gix-odb v0.44.0, gix-packetline v0.16.0, gix-transport v0.30.0, gix-protocol v0.31.0, gix-revision v0.13.0, gix-refspec v0.10.0, gix-worktree v0.16.0, gix v0.44.0, safety bump 7 crates (91134a1)
    • Prepare changelogs prior to release (30a1a71)
    • When removing all shallow commits from shallow file, delete it. (2cd5054)
    • Merge branch ‘index-entries-attrs’ (f37a930)
    • gix index entries also prints attributes. (08e8fc2)
    • Adjust to changes in gix-worktree (27a39ca)
    • Add Repository::attributes() and Worktree::attributes(). (bc28443)
    • Add Repository::excludes() and simplify signature of Worktree::excludes(). (26e6a66)
    • Add index.threads configuration to gix::config::tree (40a1b74)
    • Adjust to changes in gix-worktree (f722d6b)
    • Merge branch ‘attributes-cache’ (3456c84)
    • Adjust to changes in gix-worktree (13a070f)
    • Merge branch ‘fix-823’ (6ebd61e)
    • gix::open() can handle bare repositories with index. (43f695a)
    • Thanks clippy (14e64e7)
    • Merge branch ‘clone-auth’ (1a65308)
    • Support configuring the connection (i.e. for auth) during clone. (cb34376)
    • Merge branch ‘fix-819’ (69faad0)
    • Before writing new objects, check if they exist. (afe7faa)
    • Add Object::into_tag() and Tag::decode() methods. (037f52d)
    • Release gix-utils v0.1.0, gix-hash v0.11.0, gix-date v0.5.0, gix-features v0.29.0, gix-actor v0.20.0, gix-object v0.29.0, gix-archive v0.1.0, gix-fs v0.1.0, safety bump 25 crates (8dbd0a6)
    • Support native zlib-ng via flate2's zlib-ng feature (9a6e0d7)
    • Make fmt (5d2b5d0)
    • Merge branch ‘main’ into dev (cdef398)
    • Minor adjustments to the worktree structure. (8920229)
    • Rename the serde1 feature to serde (19338d9)
    • Create new gix-fs crate to consolidate all filesystem utilities (f8cc33c)
    • Allow USE_NSEC and USE_STDEV compile time flags to configured at runtime. (35cb6b4)
    • Merge branch ‘main’ into dev (23ee47f)
    • Merge branch ‘worktree-stack’ (3d47919)
    • open::Options now allow controlling where gitattributes files are loaded from. (358500f)
    • Adjust to changes in gix-attributes (1755c81)
    • Remove types that are now available in gix-os (b645d28)
    • Refactor (0677406)
    • Centralize index entry Stat creation/comparison (870bdb2)
    • Release gix-hash v0.10.4, gix-hashtable v0.1.3 (b574a39)
    • Merge branch ‘patch-1’ (b02bf24)
    • Add test to run tests on 32 bit systems (fb31ee8)
    • Merge branch ‘patch-1’ (d0052c1)
    • Upgrade serial-test to v2 (6932017)
    • Release gix-revision v0.12.2 (ec64a88)
    • Merge branch ‘fix-801’ (a884121)
    • Prevent env-altering tests to affect shallow tests (61eec5a)

0.43.1 (2023-03-30)

Documentation

  • fix minor typos
  • fix minor typos

New Features

  • add Tree::decode() and TryFrom<Tree> for gix::objs::Tree. This makes it possible to obtain mutable trees for creating trees by hand for the purpose of making commits.

Bug Fixes

  • $HOME detection on windows

Commit Statistics

  • 9 commits contributed to the release over the course of 3 calendar days.
  • 4 days passed between releases.
  • 4 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-path v0.7.3, gix-config-value v0.10.2, gix-config v0.20.1, gix-discover v0.16.2, gix-index v0.15.1, gix-odb v0.43.1, gix-packetline v0.15.1, gix-protocol v0.30.2, gix-worktree v0.15.2, gix v0.43.1 (38eed1d)
    • Merge branch ‘pascalkuthe/main’ (d47cebe)
    • Refactor (d1e5e12)
    • $HOME detection on windows (d1bd513)
    • Fix minor typos (02c4659)
    • Fix minor typos (cc48c35)
    • Add Tree::decode() and TryFrom<Tree> for gix::objs::Tree. (7c2e5c8)
    • Release gix-ref v0.27.2 (e965b18)
    • Be sure to clear the buffer after an intermediate read error happened and we ignore it. (877951a)

0.43.0 (2023-03-26)

Bug Fixes

  • opening repositories without ‘strict’ mode also ignores IO errors. These will instead be logged, but won't make it impossible to open an otherwise fine repository.

Other

  • make clear that gix::discover() isn't suited for authentication remote operations. We also provide information on how to accomplish this.

Commit Statistics

  • 6 commits contributed to the release over the course of 5 calendar days.
  • 11 days passed between releases.
  • 2 commits were understood as conventional.
  • 2 unique issues were worked on: #787, #790

Commit Details

  • #787
    • Make clear that gix::discover() isn't suited for authentication remote operations. (87f5621)
  • #790
    • Opening repositories without ‘strict’ mode also ignores IO errors. (7bd8823)
  • Uncategorized
    • Release gix-tempfile v5.0.2, gix-validate v0.7.4, gix-config v0.20.0, gix-prompt v0.3.3, gix-diff v0.28.1, gix-discover v0.16.1, gix-pack v0.33.2, gix-transport v0.29.1, gix-protocol v0.30.1, gix-revision v0.12.1, gix-worktree v0.15.1, gix v0.43.0, safety bump gix v0.43.0 (5dc1f9f)
    • Prepare changelogs prior to release (3016a28)
    • Merge branch ‘fix-790’ (ee36e5b)
    • Less dependencies for tests (via serial_test no default features) (8f2accd)

0.42.0 (2023-03-14)

New Features

  • shallow support for fetch operations.
  • shallow support for clone operations.

Commit Statistics

  • 11 commits contributed to the release over the course of 3 calendar days.
  • 3 days passed between releases.
  • 2 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-features v0.28.1, gix-tempfile v5.0.1, gix-ref v0.27.1, gix-pack v0.33.1, gix-packetline v0.15.0, gix-transport v0.29.0, gix-protocol v0.30.0, gix v0.42.0, safety bump 3 crates (c1f1bfb)
    • Prepare changelogs prior to release (c66e298)
    • Make fmt (3836cc0)
    • Merge branch ‘various-fixes’ (cc0f506)
    • Improve fetchspec handling to be closer to what git does. (a22621d)
    • Assure that --deepen 0 (despite allowed) doesn't actually confuse the server. (b43ea6b)
    • Adjust to changes in gix-packetline (4f45814)
    • Merge branch ‘shallow-protocol’ (531dd19)
    • Shallow support for fetch operations. (93d412c)
    • Shallow support for clone operations. (4e89c19)
    • Merge branch ‘fix-cred-helper’ (01277a6)

0.41.0 (2023-03-10)

A maintenance release without user-facing changes, but with some fixes in the dependency chain, namely:

  • gix-credentials allows credential helpers to ignore stdin, making it robust when facing helpers that don't read from stdin.
  • gix-tempfile refers to the most recent version of tempfile without pinning it, which removes a security vulnerability.

Commit Statistics

  • 4 commits contributed to the release.
  • 1 day passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-tempfile v5.0.0, gix-lock v5.0.0, gix-ref v0.27.0, gix-config v0.19.0, gix-url v0.16.0, gix-credentials v0.12.0, gix-discover v0.16.0, gix-index v0.15.0, gix-pack v0.33.0, gix-odb v0.43.0, gix-transport v0.28.0, gix-protocol v0.29.0, gix-worktree v0.15.0, gix v0.41.0, safety bump 12 crates (29a0870)
    • Prepare changelogs prior to release (e06f5f5)
    • Merge branch ‘password-in-urls’ (85f8b28)
    • Adjust to changes in gix-url (66602bb)

0.40.0 (2023-03-09)

New Features

  • Repository::shallow_commits() returns an uptodate list of shallow boundary commits.
  • Repository::is_shallow() to test if a repository is shallow.

Bug Fixes (BREAKING)

  • allow to traverse the entire commit graph of shallow repos Previously, when traversing commits, we would assume to be in a shallow repository if a commit's parent could not be found in the repository.

    Now we validate that assumption by reading the ‘shallow’ file to check if the last seen commit is on the commit boundary.

    This removes is_shallow and error_on_missing_commit() on the revision::walk::Platform as shallow commits are now known and handled without any guesswork.

Commit Statistics

  • 5 commits contributed to the release over the course of 3 calendar days.
  • 4 days passed between releases.
  • 3 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix v0.40.0 (18e72c9)
    • Merge branch ‘shallow-support’ (6d88fd2)
    • Allow to traverse the entire commit graph of shallow repos (1046ea2)
    • Repository::shallow_commits() returns an uptodate list of shallow boundary commits. (5bfbb9a)
    • Repository::is_shallow() to test if a repository is shallow. (3e69535)

0.39.0 (2023-03-04)

A maintenance release without user-facing changes, primarily for getting the progress-bar updates into cargo.

Commit Statistics

  • 3 commits contributed to the release.
  • 3 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-attributes v0.10.0, gix-ref v0.26.0, gix-config v0.18.0, gix-url v0.15.0, gix-credentials v0.11.0, gix-discover v0.15.0, gix-index v0.14.0, gix-mailmap v0.11.0, gix-odb v0.42.0, gix-transport v0.27.0, gix-protocol v0.28.0, gix-revision v0.12.0, gix-refspec v0.9.0, gix-worktree v0.14.0, gix v0.39.0 (93e75fe)
    • Prepare changelogs prior to release (895e482)
    • Release gix-features v0.28.0, gix-actor v0.19.0, gix-object v0.28.0, gix-diff v0.28.0, gix-traverse v0.24.0, gix-pack v0.32.0, safety bump 20 crates (0f411e9)

0.38.0 (2023-03-01)

New Features

  • the hp-tempfile-registry feature toggle to control the dashmap dependency. And also, probably provide a better performance in certain cases.
  • make gix-pack feature toggles related to pack caches available. Previously they would have to be configured by pulling in gix-pack, which isn't desirable as the only crate we want to expose like that is gix-features.
  • Add comfort feature toggle (default enabled) to make better progress units available. This could be a breaking change for those who turned default-features off, as you may now have to re-add the comfort feature to get nicer progress messages.

Bug Fixes

  • gix-tempfile is now configured to not use the high-performance hashmap anymore. It was hard to justify as tests actually seemed to be faster without it.

New Features (BREAKING)

  • Put progress::tree behind the progress-tree feature toggle. It's a convenience export that implies pulling in more dependencies, so it should be gated.

  • gate all signal handling behind the signals feature toggle. This change also consolidates all signal handling into its own module called signal to provide reusable handlers and as well as well as signal initialization.

    Note that the functions to cleanup tempfiles don't interact with the signal registry, hence they still can be called without the signals feature enabled.

    Note that this change sneakily fixes a bug that could have caused a write_all() on a tempfile that was removed by a signal to enter an infinite loop.

Commit Statistics

  • 17 commits contributed to the release over the course of 4 calendar days.
  • 4 days passed between releases.
  • 6 commits were understood as conventional.
  • 1 unique issue was worked on: #339

Commit Details

  • #339
    • Gate all signal handling behind the signals feature toggle. (441f5ac)
  • Uncategorized
    • Release gix-tempfile v4.1.0, gix-lock v4.0.0, gix-ref v0.25.0, gix-config v0.17.0, gix-url v0.14.0, gix-credentials v0.10.0, gix-diff v0.27.0, gix-discover v0.14.0, gix-hashtable v0.1.2, gix-bitmap v0.2.2, gix-traverse v0.23.0, gix-index v0.13.0, gix-mailmap v0.10.0, gix-pack v0.31.0, gix-odb v0.41.0, gix-transport v0.26.0, gix-protocol v0.27.0, gix-revision v0.11.0, gix-refspec v0.8.0, gix-worktree v0.13.0, gix v0.38.0, safety bump 6 crates (ea9fd1d)
    • Release gix-features v0.27.0, gix-actor v0.18.0, gix-quote v0.4.3, gix-attributes v0.9.0, gix-object v0.27.0, gix-ref v0.25.0, gix-config v0.17.0, gix-url v0.14.0, gix-credentials v0.10.0, gix-diff v0.27.0, gix-discover v0.14.0, gix-hashtable v0.1.2, gix-bitmap v0.2.2, gix-traverse v0.23.0, gix-index v0.13.0, gix-mailmap v0.10.0, gix-pack v0.31.0, gix-odb v0.41.0, gix-transport v0.26.0, gix-protocol v0.27.0, gix-revision v0.11.0, gix-refspec v0.8.0, gix-worktree v0.13.0, gix v0.38.0 (e6cc618)
    • Adjust manifests prior to release (addd789)
    • Prepare changelogs prior to release (94c99c7)
    • Merge branch ‘adjustments-for-cargo’ (d686d94)
    • gix-tempfile is now configured to not use the high-performance hashmap anymore. (b2375e3)
    • Depend on latest version of prodash for performance improvements. (5d00324)
    • The hp-tempfile-registry feature toggle to control the dashmap dependency. (256f7d4)
    • Make gix-pack feature toggles related to pack caches available. (fd7eebc)
    • Put progress::tree behind the progress-tree feature toggle. (fea8c56)
    • Add comfort feature toggle (default enabled) to make better progress units available. (5b0ebd2)
    • Prepare for git-tempfile release (56c005b)
    • Merge branch ‘tempfile-upgrades’ (3522cba)
    • Adjust to changes in gix-tempfile (c6785fc)
    • Make fmt (8ef1cb2)
    • Fix diff-tests on windows (441a64b)

0.37.2 (2023-02-24)

Bug Fixes

  • reproduce a diff issue and fix it Diffs could be quite wrong and this is a small repro along with the fix.

Commit Statistics

  • 5 commits contributed to the release.
  • 3 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-object v0.26.4, gix-diff v0.26.3, gix v0.37.2, gix-commitgraph v0.13.1, gitoxide-core v0.25.0, gitoxide v0.23.0 (9982949)
    • Fix new diff tests on windows (b1ec1b7)
    • Prepare changelog for release (13a1ec1)
    • Merge branch ‘rename-tracking’ (550144a)
    • Reproduce a diff issue and fix it (1d3d22d)

0.37.1 (2023-02-21)

A maintenance release to restore MSRV (1.64) support.

Commit Statistics

  • 3 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-config v0.16.3, gix v0.37.1 (a3c283f)
    • Prepare changelogs prior to release (362d659)
    • Restore msrv compatibility by removing sole if let ... else (9160659)

0.37.0 (2023-02-20)

Bug Fixes

  • Repository::object_cache_size() now unsets the cache if Some(0) is passed. Previously it would fail.

New Features (BREAKING)

  • object::tree::diff::Platform::track_rewrites(...) The invocation of object::tree::diff::Platform::track_rewrites(Rewrites { percentage: None, ..Default::default() }) is now able to explicitly configure perfect rename tracking without percentage of equivalence.

    By setting percentage = Some(<fraction>) one can set how similar both files should be to be considered related.

    The same can be configured for copy-tracking, which also includes something like --find-copies-harder.

    Note that by default, renames are considered if a file looks 50% similar, and copies tracking is using the same convention.

Commit Statistics

  • 4 commits contributed to the release.
  • 2 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix-object v0.26.3, gix-diff v0.26.2, gix-traverse v0.22.2, gix v0.37.0, safety bump 3 crates (8b3e42f)
    • Repository::object_cache_size() now unsets the cache if Some(0) is passed. (d3b9740)
    • Merge branch ‘rename-tracking’ (35415c5)
    • object::tree::diff::Platform::track_rewrites(...) (ed87f4c)

0.36.1 (2023-02-20)

Bug Fixes

  • compatibility with bstr v1.3, use *.as_bytes() instead of .as_ref(). as_ref() relies on a known target type which isn‘t always present. However, once there is only one implementation, that’s no problem, but when that changes compilation fails due to ambiguity.

Commit Statistics

  • 5 commits contributed to the release over the course of 2 calendar days.
  • 3 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release gix v0.36.1 (fac6bce)
    • Release gix-date v0.4.3, gix-hash v0.10.3, gix-features v0.26.5, gix-actor v0.17.2, gix-glob v0.5.5, gix-path v0.7.2, gix-quote v0.4.2, gix-attributes v0.8.3, gix-validate v0.7.3, gix-object v0.26.2, gix-ref v0.24.1, gix-config v0.16.2, gix-command v0.2.4, gix-url v0.13.3, gix-credentials v0.9.2, gix-discover v0.13.1, gix-index v0.12.4, gix-mailmap v0.9.3, gix-pack v0.30.3, gix-packetline v0.14.3, gix-transport v0.25.6, gix-protocol v0.26.4, gix-revision v0.10.4, gix-refspec v0.7.3, gix-worktree v0.12.3, gix v0.36.1 (9604783)
    • Compatibility with bstr v1.3, use *.as_bytes() instead of .as_ref(). (135d317)
    • Release gix-glob v0.5.4 (c56d336)
    • Release gix-transport v0.25.5 (f872ba8)

0.36.0 (2023-02-17)

New Features

  • cloning repositories doesn't require a committer anymore. This is similar to what git does and probably a decent convenience to have.

Commit Statistics

  • 45 commits contributed to the release over the course of 3 calendar days.
  • 4 days passed between releases.
  • 1 commit was understood as conventional.
  • 1 unique issue was worked on: #737

Commit Details

  • #737
    • Cloning repositories doesn't require a committer anymore. (4f49992)
  • Uncategorized
    • Release gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (7fc00f8)
    • Release gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (59e9fac)
    • Release gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (48f5bd2)
    • Release gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (a5869e0)
    • Release gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (41d57b9)
    • Release gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (e313112)
    • Release gix-features v0.26.4, gix-actor v0.17.1, gix-glob v0.5.3, gix-path v0.7.1, gix-quote v0.4.1, gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (6efd0d3)
    • Release gix-date v0.4.2, gix-hash v0.10.2, gix-features v0.26.4, gix-actor v0.17.1, gix-glob v0.5.3, gix-path v0.7.1, gix-quote v0.4.1, gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 (6ccc88a)
    • Merge branch ‘rename-crates’ into inform-about-gix-rename (c9275b9)
    • Release git-date v0.4.3, git-hash v0.10.3, git-features v0.26.5, git-actor v0.17.2, git-glob v0.5.4, git-path v0.7.2, git-quote v0.4.2, git-attributes v0.8.3, git-bitmap v0.2.2, git-chunk v0.4.2, git-command v0.2.4, git-commitgraph v0.13.1, git-config-value v0.10.2, git-tempfile v3.0.3, git-lock v3.0.3, git-validate v0.7.3, git-object v0.26.2, git-ref v0.24.1, git-sec v0.6.3, git-config v0.16.2, git-prompt v0.3.3, git-url v0.13.3, git-credentials v0.9.2, git-diff v0.26.2, git-discover v0.13.1, git-fetchhead v0.1.0, git-filter v0.1.0, git-hashtable v0.1.2, git-traverse v0.22.2, git-index v0.12.4, git-lfs v0.1.0, git-mailmap v0.9.3, git-note v0.1.0, git-pack v0.31.0, git-odb v0.41.0, git-packetline v0.14.3, git-pathspec v0.1.0, git-transport v0.25.5, git-protocol v0.26.4, git-rebase v0.1.0, git-revision v0.10.4, git-refspec v0.7.3, git-sequencer v0.1.0, git-submodule v0.1.0, git-tix v0.1.0, git-tui v0.1.0, git-worktree v0.12.3, safety bump 2 crates (90035a3)
    • Rename git-testtools to gix-testtools (b65c33d)
    • Adjust to renaming of git-pack to gix-pack (1ee81ad)
    • Adjust to renaming of git-odb to gix-odb (476e2ad)
    • Adjust to renaming of git-index to gix-index (86db5e0)
    • Adjust to renaming of git-diff to gix-diff (49a163e)
    • Adjust to renaming of git-mailmap to gix-mailmap (2e28c56)
    • Adjust to renaming of git-discover to gix-discover (53adfe1)
    • Adjust to renaming for git-protocol to gix-protocol (823795a)
    • Adjust to renaming of git-refspec to gix-refspec (c958802)
    • Adjust to renaming of git-revision to gix-revision (ee0ee84)
    • Adjust to renaming of git-transport to gix-transport (b2ccf71)
    • Adjust to renaming of git-credentials to gix-credentials (6b18abc)
    • Adjust to renaming of git-prompt to gix-prompt (6a4654e)
    • Adjust to renaming of git-worktree to gix-worktree (73a1282)
    • Adjust to renamining of git-hashtable to gix-hashtable (26a0c98)
    • Adjust to renamining of git-worktree to gix-worktree (108bb1a)
    • Adjust to renaming of git-url to gix-url (b50817a)
    • Adjust to renaming of git-date to gix-date (9a79ff2)
    • Adjust to renamining of git-attributes to gix-attributes (4a8b3b8)
    • Adjust to renaming of git-config to gix-config (3a861c8)
    • Adjust to renaming of git-ref to gix-ref (1f5f695)
    • Adjust to renaming of git-lock to gix-lock (2028e78)
    • Adjust to renaming of git-tempfile to gix-tempfile (b6cc3eb)
    • Adjust to renaming of git-object to gix-object (fc86a1e)
    • Adjust to renaming of git-actor to gix-actor (4dc9b44)
    • Adjust to renaming of git-validate to gix-validate (5e40ad0)
    • Adjust to renaming of git-hash to gix-hash (4a9d025)
    • Adjust to renaming of git-features to gix-features (e2dd68a)
    • Adjust to renaming of git-glob to gix-glob (35b2a3a)
    • Adjust to renaming of git-sec to gix-sec (eabbb92)
    • Adapt to renaming of git-path to gix-path (d3bbcfc)
    • Fix gix changelog (find-replace issue) to indicate renaming from git-repository (f86b780)
    • Release git-features v0.26.4 (109f434)
    • Release git-features v0.26.3 (1ecfb7f)

0.35.0 (2023-02-13)

This is the last release under this name and merely a notice to inform that git-repository from now on is gix.

Furthermore, all git-* crates belonging to the gitoxide project will be renamed to gix-*.

Changed (BREAKING)

  • a note of the pending rename of git-repository to gix

New Features

  • tree diffs with simple rename and copy tracking in cases where there is no additional modification. As the fastest way of rename tracking, we now offer support for tracking renames and copies, that is a file was renamed or copied without modification.
  • Add diff.renames and diff.renameLimit keys to config tree. In preparation for the implementation.

Commit Statistics

  • 5 commits contributed to the release over the course of 1 calendar day.
  • 2 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized
    • Release git-config v0.16.1, git-revision v0.10.3, gix v0.35.0 (74390ba)
    • Show more debugging information if unreachable code is reached. (66f5341)
    • Prepare changelogs prior to release (446f866)
    • Merge branch ‘rename-crates’ (6461c3d)
    • Rename git-repository to gix (7bed2a9)

0.34.0 (2023-02-09)

Documentation

  • fix typos

New Features

  • add env::collate::fetch::Error - a combined error type with its own API. This error API allows to look at all the steps it takes to perform an operation and gather insights from it which require understanding a lot about the semantics of the contained errors.

  • use enumerations to advertise progress ids publicly. Previously these were an implementation detail which also means they couldn't be relied upon.

    Thanks to an intermediate enumeration, they become part of the public API and their actual value is not exposed.

  • read shared indices by dissolving them into the current one. This allows the ‘link’ extension to be processed correctly, even though it won't be maintained. When written back, the ‘link’ extension will be removed automatically.

Bug Fixes

  • don't panic, but error when parsing the rev-specs ^, .., ....

Chore (BREAKING)

  • adjust to changes in gitoxide for clap upgrade to 4.1

New Features (BREAKING)

  • transfer knowledge about configuration and its usage into the type system. That way it's possible to use configuration overrides, even though ultimately being strings, in a type-safe manner and leverage code-completion while at it.

    In that process, we also change Repository::(committer|Author)() to return Option<Result<...>> to be able to account for date parse errors.

0.33.0 (2023-01-10)

Chore (BREAKING)

  • upgrade MSRV to v1.64 (possible due to windows upgrade)

0.32.0 (2023-01-09)

Bug Fixes

  • default author and committer time When needing to fallback to a default author or committer signature, the time from GIT_AUTHOR_DATE should only be used for the author and GIT_COMMITTER_DATE should only be used for the committer and not intermixed. This change enforces that constraint.

  • signature name and email resolution The name and email for the author and/or committer may come from different config files. For example, user.name may be set in the global config and user.email may come from the repository local config.

    This case was broken due to Personas.from_config_and_env() only looking in the last config section containing, for example, a “user” section. Thus if the user.name and user.email are split across multiple sections (i.e. originating from separate config files), the fallback name and email (“gitoxide” and “gitoxide@localhost”) would be used.

    The solution is to use gix_config::File::string() to lookup the name and email separately. The string() method correctly resolves the value by looking through all sections from all files in the correct order.

Other

  • name and email from different config sections The user.name, user.email, author.name, author.email, committer.name, and committer.email configuration may come from different sections from different config files. This new test exercises a couple of scenarios that are currently broken.

Reverted (BREAKING)

  • committer_or_default(), author_or_default() and user_default(). This means that all methods that previously succeeded by adding a default will now fail.

    This is preferable over ‘doing something’ and also admits that gits guesswork that tries to find user information by querying the system is nothing we want to repeat.

0.31.0 (2022-12-30)

New Features

  • fetching ssh urls can ask for a different username. If authentication fails, the user will be queried for a different username to try authentication via ssh mechanisms again.
  • collect ssh-specific options to control how the ssh program is invoked. These are passed through when creating the ssh transport.

Other

  • explain how it‘s possible to deal with the first commit when comparing trees The reason the other tree isn’t an option is that it's a special case that can more easily be handled with an .unwrap_or_else(|| repo.empty_tree()) (or similar) for those who need it.

    Making the empty tree explicit also helps to deal with diffs from the empty tree (which can't be Option<Tree>) to the first tree of the first commit.

Chore (BREAKING)

  • upgrade to prodash v23

0.30.2 (2022-12-26)

New Features

  • make more HTTP options available
    • http.schannelCheckRevoke

Other

  • provide a repository clone example

0.30.1 (2022-12-22)

New Features

  • open::Options::open_path_as_is() allows to avoid ‘smart opening’ to try the path verbatim. The path to git repositories is well-known as they either end in .git or .../.git. If this is not the case, by default we append /.git to the path.

    With this new option enabled, no path transformations apply to open the given path as is, which is preferable if you know it's a non-standard git repository folder name.

0.30.0 (2022-12-19)

Changed

  • represent GIT_(COMMITTER|AUTHOR)_(NAME|EMAIL|DATE) with git configuration. That way it becomes more obvious where values are coming from.

New Features

  • expose gix-features crate at root under features. That way application developers can use more of the utilities that power most of the gitoxide plumbing crates.

  • Remote knows about its tagOpt configuration. That way it‘s clear if it should or shouldn’t fetch included/reachable tags automatically.

    The default setting for this is to include tags, similar to git.

    The fetch_tags() accessor allows to query this information, and the with_fetch_tags() builder method allows to set the value comfortably right after creating the Remote instance.

    The tagOpt key will also be written as part of the remote's git configuration.

    Clone operations can set the Tags setting when configuring the remote in a callback.

    This also comes with a fix to assure that ref-updates aren't skipped just because there was no pack to receive. That way, locally missing refs or tags will automatically be put back.

  • network related Error type support is_spurious() method. That way the caller can determine more easily if it makes sense to try again.

  • Make prodash::tree available as progress::tree.

  • read worktree specific configuration to override the one from the shared repository. This is intensively used when space checkouts are created, along with Cone mode. Thus it's the basis for properly interpreting sparse checkout options which are set on a per-worktree basis.

  • add permissions::Environment::http_transport. That way it's possible to deny using environment variables that affect the HTTP transport, like setting the proxy.

  • open::Options::modify() as general pattern to allow builder methods usage in &mut self. That way it's easier to configure both the full and the partial trust instances of discovery options.

  • Add Repository::commit_as(committer, author, …) convenience method. That way it's, very much beyond convenience, possible to set the time of a commit.

    Many thanks to @epage for the suggestion.

  • upgrade to prodash 21.1 and add Ids to all progress instances. That way callers can identify progress they are interested in, say, for selective visualizations.

Bug Fixes

  • provide a clearer error message when trying to open a git repository that isn't one.

  • http transports can now reuse a connection. This makes connections more efficient generally and cargo relies on that behaviour in their tests as well.

  • allow to open a Repository from if ‘config’ file is missing. In this case, treat it similar to having an empty repository configuration file and assume defaults everywhere.

  • improve error verbosity when fetching and cloning

  • tree::diff::Platform::for_each_to_obtain_tree() now properly surfaces user provided errors. Previously it would squelch them unintentionally.

    First discovered via https://github.com/Byron/crates-index-diff-rs/issues/35.

  • when fetching from file://, don't upset windows by trying d:/foo, use d:\\foo instead.

  • config::CommitAutoRollback now implements DerefMut.

Changed (BREAKING)

  • default features are set to max-performance-safe to assure compatibility. Previously the max-performance setting might have caused issues during compilation or issues at runtime if libraries like git2 are used in the same binary, and the new default feature settings maximizes compatibility so this won't happen.

    For best performance, however, one will have to activate the max-performance feature on top of that.

  • environment variable permissions are per topic. Now Permissions for environment variables are so that they are by topic instead of by prefix, by default. That way it's easier to allow or deny particular sets of related environment variables.

    The catch-all permissions by prefix are still present for all other variables that aren't contained in one particular topic.

  • open::ReplacementObjects is removed in favor of two custom git-configuration flags. Now it's possible to map the environment variables GIT_REPLACE_REF_BASE and GIT_NO_REPLACE_OBJECTS to custom git configuration keys which can also be set, namely gitoxide.odb.replaceObjectsRefBase and gitoxide.odb.noReplaceObjects.

    Along with the possibility of disabling the usage of GIT_ prefixed environment variables one reaches the previous level of control without making object replacement a special case.

New Features (BREAKING)

  • interrupts::init_handler() can now be undone. This can be done by calling deregister() or auto_deregister() on the return value of interrupts::init_handler(…).

    That way it's possible to temporarily do interrupt handling only while some methods that require it are running.

  • represent object cache configuration like GITOXIDE_PACK_CACHE_MEMORY in git-configuration. That way there is a unified system for how to set values, which may be overridable by configuration variables or not.

    With this changes, the explicit application of environment variables for setting the cache isn't required anymore as everything happens using git-configuration, and automatically, while providing full control like before.

  • remove SnapshotMut::apply_cli_overrides() in favor of open::Options::cli_overrides().

  • more type-safety for remote names by making clear they can be named after URLs.

Other (BREAKING)

  • Remote::with_refspec() to Remote::with_refspecs() to allow adding more than one refspec as part of the builder.

0.29.0 (2022-11-21)

New Features

  • Make reqwest TLS backend configuration easy. We provide the choice of native-tls or rust-tls. If none is provided, the user can configure on their on similar to how it's done in gix.

    Please note that a choice now has to be made or HTTPS will not be available, so use one of…

    • blocking-http-transport-reqwest-rust-tls
  • blocking-http-transport-reqwest-native-tls

Bug Fixes

  • gix::Commit::describe() chooses tag names (more) correctly. Previously, if there were multiple choices for tags on the same commit, git describe would disagree with gitoxide due to different prioritization of names.

    This has now been fixed.

  • also sort entries lexicographically

Other

  • Set GIT_EDITOR in make_rebase_i_repo.sh If the user has core.editor set in their global git config, then that value takes precedence over the EDITOR environment variable. The GIT_EDITOR environment variable, however, has higher precedence than core.editor. For this test, using GIT_EDITOR ensures that the desired sed command line is used.

New Features (BREAKING)

  • rename blocking-http-transport feature to blocking-http-transport-curl; add blocking-http-transport-reqwest. With the new and relatively immature second tier http backend we pave the way to support builds without the use of open-ssl and probably many other C libraries.

    Note that it's early and not http configuration option is implemented yet.

  • upgrade edition to 2021 in most crates. MSRV for this is 1.56, and we are now at 1.60 so should be compatible. This isn‘t more than a patch release as it should break nobody who is adhering to the MSRV, but let’s be careful and mark it breaking.

    Note that gix-features and gix-pack are still on edition 2018 as they make use of a workaround to support (safe) mutable access to non-overlapping entries in a slice which doesn't work anymore in edition 2021.

0.28.0 (2022-11-17)

New Features

  • Id implements std::fmt::Display
  • Remote::repo() to obtain the underlying repository. For convenience.
  • Support for user-customizable user agent strings. Doable by setting the gitoxide.userAgent variable.
  • add env::agent() for obtaining the default client agent string.

Other

  • try to apply maybe-async in a place where it‘s probably not possible. The goal is to re-use the existing tests, but right now they only compile in async mode as the maybe-async crates needs a feature to be set. Doing so is hard(er) if it’s not already used in the main crate, which we do not and will do our best to avoid.

New Features (BREAKING)

  • add remote::Connection::with_transport_config(), change the way *::transport_mut() is used. Previously transport_mut() was supposed to be used for calling configure(), but that doesn't work anymore as configure() can only effectively be called once the initialization of the Connection is complete, as it may depend on the Remote name AND the credential provider for proxy auth credential acquisition.

    Thus we allow callers to set the transport options they need in advance for it to be used when needed.

0.27.0 (2022-11-08)

Changed (BREAKING)

  • Move object::tree::diff::change::DiffPlatform to object::blob::diff::Platform.
  • new DiffPlatform::counts(), open DiffPlatform for use of gix-diff::blob::*.

0.26.0 (2022-11-06)

New Features

  • diff algorithm is controlled by git configuration diff.algorithm

  • Query of core.logAllRefUpdates is now fallible. This is the same behaviour as shown by git, which requires valid values or aborts.

  • automatically handle .keep files after writing a pack bundle to disk. The logic implemented here tries to do the right thing, that is when we have reason to believe that the objects in the pack are linked up with a ref, we delete the keep file automatically.

    However, if there was no local ref edit as the ref specs didn't contain local destinations, or if the pack was empty, then keep the .keep file and leave it to the caller to handle.

  • Use core.askpass when building the credential helper. Previously it would only consider the environment variable, which can still override the provided git-configuration at core.askpass .

  • remote::fetch::Prepare::handshake_outcome() to obtain server information right after listing refs.

  • open::Options::config_overrides() for early configuration; support for init.defaultBranch.

Bug Fixes

  • don't allow non-bare repositories to be initialized into non-empty directories.

  • init_bare() now creates the destination directory if it doesn't exist.

  • build correct path for $HOME/.config/… files. The special per-user ignore and attributes files can also be defaulted if some environment variables are set and may be accessed.

    Previously the default for $HOME was incorrect, as it was missing the intermediate .config/ directory. This is now present to build paths exactly like git.

  • ref-map filtering now uses correct prefixes. Previously specs could get filtered out server-side as a matching prefix was entirely missing.

Changed (BREAKING)

  • Repository::branch_remote_name() returns reference::remote::Name. That way it‘s made clear the remote can also be a URL, while rejecting illformed UTF8. The latter isn’t valid for remote names anyway as these only support a very limited character set.

    Note that this error currently is degenerated, making it appear if the remote name doesn't exists if illformed UTF-8 is found in what appears to be a symbolic ref.

  • be specific about the kind of diff::Error, moving it to diff::for_each::Error.

New Features (BREAKING)

  • Tree::lookup_entry*() returns attached Entry type. That way chaining gets even easier.

Bug Fixes (BREAKING)

  • create::into(…) takes create::Kind to determine if it‘s bare or not. First of all, bare is not an option anymore, but a parameter as it can’t be defaulted. Other public signatures change as well to accommodate for it.

Other (BREAKING)

  • DiffPlatform::text() to *::lines(). This is more specific as one could also do character changes in a single line, and it adapts the signature to the new imra-diff powered mechanism, for a 2x speed boost.

0.25.0 (2022-10-10)

New Features

  • Url::try_from(path: &std::path::Path) for more convenient instantiation.
  • make some private methods public to give callers more flexibility. This allows to implement the fetch-negotiation part oneself and break free from constraints of the delegate.
  • add config::SnapshotMut::commit() to make clear it's transactional.
  • add config::SnapshotMut::forget() to forget all changes before applying them. The documentation was update to make clear when the changes are applied.
  • add Repository::find_default_remote() which works on detached heads as well.
  • Remote::rem_map() now specifies ref-prefixes to the remote. This can greatly reduce the amount of refs sent.

Other

  • try to make the transport configurable after being boxed, but… …that would force it to be 'static, which is something we explicitly cannot have. We need references to be contained within, if I remember correctly.

Changed (BREAKING)

  • All methods editing references don't take the author as parameter anymore. Instead, these are taken from the git configuration and can be configured on the fly with temporarily altered configuration.
  • remote lock_mode from all methods dealing with reference edits. It is now read from core.filesRefLockTimeout accordingly.

New Features (BREAKING)

  • make jwalk fully optional
  • add fetch::Transport::configure to generically configure any transport.

0.24.0 (2022-09-20)

New Features

  • Object::peel_to_tree() as convenience method. It‘s very common to try to work with trees, so let’s make that easier.

  • interrupt::Iter now allows accessing the inner iterator without consumption. This is useful if these provide additional out-of-band information.

  • Once a change is obtained, it's easy to obtain changes line by line.

  • obtain a refmap after listing refs via remote::Connection::list_refs_to_map(). With it it‘s possible to establish a relationship between what’s about to be fetched to local tracking branches as established by refspecs for fetching.

  • Add permissions::Config::git_binary field When true, default false, inject the git installation configuration file if present at the cost of one git config invocation.

    Note that we rely on the underlying gix-config crate to not load duplicate files.

    We also currently lie about the scope which is actually unclear - have seen ‘unknown’ or normal scopes like system.

  • add prompt to top level forwarding #450)

Bug Fixes

  • rev-spec parsing can now handle the empty tree as full hex hash. Even though the empty-tree object can be found when searched via Repository::find_object(), previously it was not locatable when used during rev-spec parsing.
  • Reference::remote() can produce remotes for URLs

Refactor

  • use specific error type for rev_parse_single()

Changed (BREAKING)

  • upgrade bstr to 1.0.1

New Features (BREAKING)

  • Add reference remote name type to make usage of remote_name() result clear

Other (BREAKING)

  • Tree::lookup_path() -> Tree::lookup_entry().

0.23.1 (2022-09-01)

Changed (BREAKING)

  • Remove ‘unstable’ feature. It's not worth maintaining it especially since everything is in pre-release mode right now.

    It might be something to re-introduce after go-live.

Bug Fixes

  • max-performance-safe mode does not include zlib-ng adjustments anymore. git2 cannot handle this and fails to fetch packs after a couple of seconds.

    It‘s unclear what is causing this except that git2 doesn’t like libz with zlibng support enabled, which happens if git2 in the same tree is with us.

  • Transitively through a kindly contributed fix in the gix-discover crate, Repository can now be opened on exFat volumes.

0.23.0 (2022-08-28)

New Features

  • The empty tree can always be returned by Repository::(try_)find_object() This matches the behaviour of git and libgit2. We consciously chose to only do this on the highest level, allowing lower levels to determine if the object exists or not.
  • Make find::object::*::Error publicly available.
  • Add Reference::delete() for simple reference deletion
  • Reference::set_target_id() to easily set the target id of a reference
  • Reference::head_ref() to quickly access the reference the head points to.

Bug Fixes

  • Commit::tree_id() now returns a connected id

New Features (BREAKING)

  • gix-diff is now included by default as part of core functionality

0.22.1 (2022-08-24)

A maintenance release without user facing changes.

0.22.0 (2022-08-24)

Chore

  • uniformize deny attributes

New Features

  • support avoiding usage of fast-sha1 in gix-features separately. That way one has an angle on compile failures in client libraries, see https://github.com/o2sh/onefetch/pull/752 for motivation.
  • Repository::write_blob[_stream]() to more easily write blobs. That way, one won't have to use the underlying objects database but can remain in the land of Repository enabled types for longer.
  • SnapshotMut::apply_cli_overrides() to make it easy to support things like -c
  • Repository::config_snapshot_mut() to mutate configuration values in memory. It‘s a first step towards writing changes back to disk, which can work already, but probably wouldn’t as we currently don't localize changes to only one section type, i.e. Api, but instead may change values from other sections.
  • use docsrs feature in code to show what is feature-gated automatically on docs.rs
  • pass --cfg docsrs when compiling for https://docs.rs

Bug Fixes

  • Don‘t fail worktree tests if the system’s git version is not supporting required features

0.21.1 (2022-08-19)

A maintenance release that speeds up commit.describe() performance if max_candidates() is 0.

0.21.0 (2022-08-17)

Changed

  • Invert behaviour to open::Options::strict_config(), with lenient being the default. This means API users will get libgit2 behaviour but commands like gix can change options to emulate git behaviour.

New Features

  • Kind can now represent submodules. This should complete the list of git repository types and flavors.
  • open() and discover() support opening submodules. This includes submodule checkouts as well as their original module git directories.
  • open::Options::lenient_config(…) to default otherwise invalid configuration values where possible Originally required by https://github.com/starship/starship/issues/4266 .
  • support core.worktree option
  • display for object::tree::EntryRef
  • Head::prior_checked_out_branches()
  • Repository::index() and Worktree::index(). These methods provide a possibly updated shared index.
  • add Repository::object_cache_size_if_unset()
  • Commit::message_raw_sloppy() to provide yet another way to obtain a commit message.
  • add rev_spec::parse::ObjectKindHint to support core.disambiguate. The latter is seemingly undocumented in the typical place, gix-config.
  • Remote::with_refspec() to add new unique refspecs
  • Remote::push_url() to set it after the fact
  • Repository::remote_at(…) to create an unnamed remote
  • more conversions for TryFrom: String and &str
  • Head::into_remote() to try really hard to find the correct remote
  • Repository::remote_default_name() to obtain the repo-wide remote for a a direction.
  • Repository::branch_names() to obtain branch names for which configuration exists.

Bug Fixes

  • assure permissions per trust level are properly inherited into open::Options.
  • provide additional explanation about when to use open::Options::with()

Refactor

  • embrace revision module and move rev_walk there. Let's embrace the idea of structured modules and platforms in the right spot in the module hierarchy instead of forcing known names on it that over-simplify.

Changed (BREAKING)

  • remove permissions::Config::strict() as they were unused internally. Furthermore, they were allowing everything as before so better not to have it.

  • rename Repository::load_mailmap* to Repository::open_mailmap*. For consistency with other similar methods.

  • remove Repository::load_index() in favor of repo.worktree().open_index().

  • gix_revision is now available in revision::plumbing. That way it won't clash with the higher-level constructs on top of it which use the same names.

  • Turn id::Ancestors into general-purpose RevWalk.

  • remove Permissions::git_dir field entirely. It was meant to help dealing with bailing out if the git dir isn‘t fully trusted, but the way this was done was over-engineered especially since the read-only permission level wasn’t implemented at all.

    That function is now performed by a new flag, the bail_on_untrusted which is off by default.

  • rename Repository::remote_ref() to ::branch_remote_ref()

New Features (BREAKING)

  • Repository::rev_parse() returns a RevSpec. This lays the foundation for actually handling rev-specs faithfully. Previous users should use rev_parse().single() to obtain a single object id which was the only supported usecase previously.

Bug Fixes (BREAKING)

  • Don't panic for @{1} in new repos; rename Head::into_referent() to ::try_into_referent() The signature change will prevent such issues in the future as one cannot simply ignore new repositories.

0.20.0 (2022-07-22)

New Features

  • respect safe.directory. In practice, this code will rarely be hit as it would require very strict settings that forbid any operation within a non-owned git directory.
  • permissions for configuration. It provides fine-grained control over what sources to load.
  • gix-config is now accessible in git-repository::config.
  • gix config lists all entries of all configuration files git considers. Filters allow to narrow down the output.
  • repository now initializes global configuration files and resolves includes
  • resolve includes in local repository configuration
  • config::Snapshot::trusted_path() to obtain trustworthy paths. We also apply trust-based config query during initialization to assure we don‘t use paths which aren’t owned by the current user.
  • Repository::config_snapshot() to access configuration values.
  • Use gix-config to write config file on initialization, including logallrefupdates and precomposeunicode.
  • respect core.logallrefupdates configuration setting.

Changed (BREAKING)

  • Make SignatureRef<'_> mandatory for editing reference changelogs. If defaults are desired, these can be set by the caller.

  • Repository::committer() now returns an Option, see ::committer_or_default() for a method that doesn't.

  • remove local-time-support feature toggle. We treat local time as default feature without a lot of fuzz, and will eventually document that definitive support needs a compile time switch in the compiler (--cfg unsound_local_offset or something).

    One day it will perish. Failure is possible anyway and we will write code to deal with it while minimizing the amount of system time fetches when asking for the current local time.

  • Associate file::Metadata with each File. This is the first step towards knowing more about the source of each value to filter them based on some properties.

    This breaks various methods handling the instantiation of configuration files as file::Metadata typically has to be provided by the caller now or be associated with each path to read configuration from.

New Features (BREAKING)

  • Support for lossy load mode. There is a lot of breaking changes as file::from_paths::Options now became file::init::Options, and the same goes for the error type.
  • change mostly internal uses of [u8] to BString/BStr

0.19.0 (2022-06-13)

New Features (BREAKING)

  • Make realpath() easier to use by introducing realpath_opt(). That way there is consistency about how many symlinks to follow.

0.18.1 (2022-05-23)

New Features

  • Debug for Reference.

0.18.0 (2022-05-21)

Other

  • add ceiling_dirs option to upwards discovery

0.17.0 (2022-05-18)

New Features

  • Add Repository::head_name(). A convenient way to obtain the name of a head, if not detached.

Bug Fixes

  • Commit::describe() now returns annotated tags before lightweight ones and prefers more recent ones as well
  • Support for in truncated history in git-describe This allows describe() to work on shallow clones.

Other

  • allow reading information about remote branch

  • path::discover() now returns the shortest path. If and only if it canonicalized the source path. That way, users will still get a familiar path. This is due to parent() not operating in the file system, which otherwise would be equivalent to .., but that's not how we work.

    Maybe we should overhaul the way this works to use ../ instead and just ‘absolutize’ the path later (std::path::absolute()) is on the way for that.

  • remove unused variant

Changed (BREAKING)

  • integrate trust model into repository discovery That way it‘s possible to ignore repositories which effectively aren’t owned by the current user, or to not ignore them (default) but assign tighter permissions to the repository.

  • path::discover::existing() -> path::discover()

  • remove values::*Error in favor of value::parse::Error. This makes it easier to work with errors in practice, we are either interested in the value that failed to parse to try something else or want a nice user message.

    Having one decode error type facilitates that.

New Features (BREAKING)

  • use gix-credentials in gix-protocol

0.16.0 (2022-04-05)

New Features

  • auto-calculation of a good hex-len, like what git does If the core.abbrev value isn't set or is set to auto.

  • Commit::describe() A way to fluidly configure a git describe operation and run it.

    Along that, a new Tag top-level object was added as well to provide convenient access to otherwise lower-level objects. It‘s not strictly required for our implementation here but it’s needed for a symmetric API.

0.15.0 (2022-04-03)

New Features

  • support for object replacement The Repository now respects replacement refs created by git replace and picks up environment variables for its configuration as well.

    Which environment variables are used is fully configurable.

  • support for trimming of whitespace around name and email It‘s separated from parsing to assure we can round-trip, but it’s made easy to obtain trimmed results using new methods.

    This high-level git-repository will also trim by default now.

  • Repository::head_commit() A shortcut to get to the commit much faster.

  • ein tool estimate-hours now supports mailmaps

  • Repository::head_id() A long-needed shortcut.

  • gix repository mailmap entries

  • unstable mailmap module

  • Commit::short_id()

  • in-manifest and in-lib documentation of feature toggles

  • easy::Commit::time() to access the committers time conveniently.

  • easy::Head::name() to learn about the name of the HEAD ref It's mainly for completeness to provide people with with a FullNameRef of HEAD.

  • easy::Head::peel_to_commit_in_place() It allows to quickly get a commit from the head, something most people want when getting started with any kind of tool.

  • Repository::load_index() This method makes the index of the default workspace available.

Bug Fixes

  • Properly classify worktrees as non-bare, helps with ein t find They use git-files which point to the actual repository data.

Changed (BREAKING)

  • Easier access to local and remote branches

New Features (BREAKING)

  • interrupt::Iter, rename interrupt::Iter -> interrupt::IterWithError
  • Let 'easy::Object::try_into_…()returntry_into::Error. That way, the typical usage of try_into_commit()?will not result in a strange error aboutObject` not being convertible into some error. We think having a real error there is the least surprising.

Bug Fixes (BREAKING)

  • do not install signal handlers by default The previous behaviour is meant to be convenient for the casual user even though it ends up being surprising when used in applications that install their own signal handlers and need more control over how the program shuts down.

    This is now fixed by requiring an explicit setup() call before the first tempfile is created, which makes it a breaking change.

Other (BREAKING)

  • Id::prefix -> Id::shorten() It's definitely more intuitive that way.

Refactor (BREAKING)

  • dissolve ‘easy’ module by moving everything one level up
  • clarify different repository types much better

0.14.0 (2022-01-23)

New Features

  • Add easy::Tree::traverse() platform

  • Add easy::Commit object It allows to more conveniently access commit information.

  • easy::Oid::ancestors() now supports sorting() and iteration by first commit only Especially the sorting is useful to avoid having to sort commits by hand after collecting them.

  • Use GITOXIDE_OBJECT_CACHE_MEMORY to control how much object cache is used Note that this is mostly for debugging or quickly seeing if object caches help with certain operations.

    Ideally the implementation knows themselves and sets up caches accordingly, probably after trying it with these environment variables.

Changed (BREAKING)

  • rename easy::Object methods returning Ref objects to have ref in their name That way, it's more clear that the Ref versions are low-level ones whereas the into_ ones are higher-level ones that are part of the easy suite.

  • Rename OwnedObject to DetachedObject The latter more clearly indicates what the difference is to Object (which is attached and carries a lifetime)

  • Remove easy::borrow::Error entirely; support for multiple objects per handle This massive simplification finally allows any amounts of objects to be created while adding support for reusing their data buffers thanks to a simple free-list stored with the handle.

  • rename easy::Object to OwnedObject; remove Ref suffix from ObjectRef and TreeRef

  • use gix_odb::Find* traits in prelude, instead of gix_pack::Find* These are higher-level and generally more desirable. The Find traits in gix-pack are more useful internally when packs have to be handled directly, for example when generating packs.

  • rename easy::State to easy::Handle As the first step to remove the ‘Easy’ abstraction.

  • fully rely on OdbHandle in repository State

  • Rename Repository::odb to Repository::objects This way it's more inline with Repository::refs.

  • remove Repository::refresh_object_database() With the linked DB this is simply not possible anymore and we expect these updates to happen automatically in future for greater convenience.

    For now, in order to refresh a repository, one has to reopen it.

  • Rename Handle to Cache Because this is exactly what it is effectively. Also add some basic instantiation for the new object store.

  • remove borrowing Repo as possible failure cause The easy::Handle is now a full (but shared) clone of the original Repository with additional thread-local state, hence there is no more need for a way to access the original repository.

  • remove Easy… abstraction in favor of Handle This great reduction of complexity allows for being multi-threading capable by default with the option to turn that off at compile time.

    All to|into_easy…() methods are removed in favor of to_easy() along with the removal of all Easy types in favor of the single

  • remove pack-cache from Find::try_find(…) With the new architecture this can be an implementation detail without forcing it to be Sync.

  • move gix_pack::data::Object to gix_object::Data, massively alter gix_odb::Find trait This will break a lot, but has to happen to prepare these traits for the next generation of object databases.

0.13.0 (2021-11-29)

With changes to gix-ref, what follows is all the adjustments made to simplify the gix implementation.

Changed (BREAKING)

  • file::Store::iter() is now a platform, with .all() and .prefixed(…) respectively This way, it's possible to keep shared ownership of the packed buffer while allowing the exact same iterator machinery to work as before.

  • file::Store::(try_)find(…, packed) was removed The packed buffer is now handled internally while loading it on demand. When compiled with gix-features/parallel the file::Store remains send and sync.

    The packed refs buffer is shared across clones and it's recommended to clone one file::Store instance per thread, each of which can use its own namespace.

  • move gix_ref::file::WriteRefLog to gix_ref::store::WriteRefLog

Bug Fixes (BREAKING)

  • ref namespaces are now thread-local Previously these were shared in the shared Repo instance, which makes threaded applications impossible to remain deterministic across multiple connections.

    Now they are local to the thread, which allowed some methods to remove their Result<> as they cannot fail anymore, the reason for this being a breaking change.

Other (BREAKING)

  • Reference::logs() -> Reference::log_iter() The latter now returns a standard Platform to iterate over all reflog entries from oldest to newest or vice versa.

Refactor (BREAKING)

  • file::Store::base is now file::Store::base() and read-only That way, file databases can‘t be repositioned anymore, it’s recommended to recreate it if that's desired.

0.12.0 (2021-11-16)

New Features

  • Allow PartialNameRef to be created from owned items

Changed (BREAKING)

  • Rename gix->ein and gixp->gix

v0.11.0 (2021-10-19)

A maintenance release to properly dealing with previously breaking changes in gix-hash.

v0.10.0 (2021-10-15)

New Features

  • Make gix_url::Url available under gix::Url

  • add easy::ext::ObjectAccessExt::tag(…) to create tag objects It's a quick sketch on how tag object creation could work.

    Note the duplication the method name using traits, which seems like a good solution to the problem of differentiating tag objects and tag references while keeping the method name short.

    Most will only ever need one, right?

    Even in my example that's not the case, so maybe we have to rename it.

  • Make gix_url::Url available under gix::Url

BREAKING Changes

  • Use ‘to_*’ when converting easy::Object to specific object kind This also makes the API more consistent while being more idiomatic.
  • Avoid duplicate module paths in ‘tree’ and ‘commit’
  • rename ObjectIdExt::ancestors_iter() to *::ancestors()
  • rename easy::Object::to_(commit|tag)_iter()… …to easy::Object::try_to_(commit|tag)_iter() for consistency.
  • rename *::State into *::Platform
  • various small API changes
  • move easy::head::peel::Error -> easy::head::peel::to_id::Error
  • rename path::is_git to path::is
  • rename easy::reference::log::State to easy::reference::Logs

Other

  • loose reference iteration with non-dir prefixes… Previously it was expected for the prefix Path to always exist for the prefix to be valid. This, however, is not similar to packed prefixes, which allow non-dir prefixes as well.

    Now we will check if the prefix is actually a directory, and if not split it into its parent directory and the filename portion. The latter is then used for prefix matching file names within that directory.

  • Add ‘references().all().peeled().’… …to not only make typical usage of iterated references more convenient but also work around a double-borrow error one would see otherwise.

  • filter refs correctly, but… …it needs a way to peel references right away without trying to double-borrow. This means the Iterator needs to implement this.

  • improved changelog… …akin to ‘Keep a changelog’.

Refactor

  • split data::output::count::objects into files
  • use new gix_pack::cache::Object trait
  • remove object cache impl which now lives in gix-pack

Other

  • :remote_url() is now optional Otherwise it wouldn‘t work on repos that don’t have a remote set yet. Instead of failing, we don't create links.
  • try to create persistent Easy iterator, but can‘t make it Send… …which is fair as it contains borrowed RefCells, which really would have to be owned to work for this, which would in turn require the Ancestor’s struct to be kind of self-referential
  • path::is
  • path::discover
  • top-level of ‘path’ module
  • object_id
  • repository
  • ext::tree
  • easy::object::peel
  • easy::object::errors
  • a seemingly slow version of path lookup, but… …in debug mode it's faster than the fast path, despite doing more and being the same when it comes to searching path components.
  • easy::object, sans a few child-modules
  • update ‘platform’ information to reflect the current usage
  • configure caches with env vars using apply_environment()
  • refactor
  • set package cache via RepositoryAccessExt
  • Add GITOXIDE_PACK_CACHE_MEMORY_IN_BYTES=536870912 to control pack-cache size… …which can mean another considerable speed-up for many workloads, but usually needs some knowledge about the application, repos, and should thus be with the user.
  • allow disabling the pack cache with GITOXIDE_DISABLE_PACK_CACHE
  • prepare for configurable pack cache
  • object-cache to allow for a speed boost… …by avoiding duplicate accesses to hit the object database. However, the cost for the cache are relatively high and involve some memory copying, so hit rates of about 50% is certainly what is needed to get any speed boost at all.
  • build commit history for later use in changelog generation
  • Allow object access during commit ancestor traversal… …by getting only a temporary handle to the pack-cache. The cost of this should be negligible compared to the cost of object decoding.
  • sketch history acquisition
  • add ‘Head::peeled()’ method

Changed (BREAKING)

  • easy::Object::try_to_commit() now returns Result<CommitRef>… …without the nested Option, folding the type mismatch into a specific conversion::Error instead.
  • rename ObjectAccessExt::tag(…) to *::tag_reference(…), add easy::Object::try_to_tag() This one also contains the first and probably only test for tag object creation.

v0.9.1 (2021-09-10)

  • Remove max-performance feature from default set until the msvc build issue is fixed. Otherwise it will surprisingly break windows builds.

Other

  • loose reference iteration with non-dir prefixes… Previously it was expected for the prefix Path to always exist for the prefix to be valid. This, however, is not similar to packed prefixes, which allow non-dir prefixes as well.

    Now we will check if the prefix is actually a directory, and if not split it into its parent directory and the filename portion. The latter is then used for prefix matching file names within that directory.

  • Add ‘references().all().peeled().’… …to not only make typical usage of iterated references more convenient but also work around a double-borrow error one would see otherwise.

  • filter refs correctly, but… …it needs a way to peel references right away without trying to double-borrow. This means the Iterator needs to implement this.

  • improved changelog… …akin to ‘Keep a changelog’.

v0.9.0 (2021-09-08)

  • rename prelude::ConfigAccessExt to prelude::RepositoryAccessExt
  • prelude::ObjectAccessExt::commit() signature change
  • cargo feature changed in incompatible ways. network was replaced by more finegrained options for blocking and async networking, as well as optional http transport

New

  • init()
  • init_bare()
  • Repository::init(Kind)
  • open()
  • Repository::open()
  • easy::Head
  • easy::ext::ReferenceAccessExt::head()
  • ext::ReferenceExt trait

Breaking

  • renames / moves / Signature Changes
    • path::Path to Path
    • init::repository(dir) -> path::create::into(dir, **Kind**)

v0.8.2 (2021-09-07)

v0.8.1 (2021-08-28)

  • Introduce EasyArcExclusive type, now available thanks to parking_lot 0.11.2

v0.8.0 (2021-08-27)

  • Rename object to objs to be equivalent to refs and make space for the new object module
  • various minor version updates of pre-release dependencies

v0.7.2 (2021-08-17)

v0.7.1 (2021-08-13)

v0.7.0 (2021-08-10)

v0.6.0 (2021-05-28)

v0.5.0 (2021-04-08)

v0.4.0 (2020-09-12)

v0.3.0 (2020-08-12)

v0.1.0 (2020-07-12)

0.0.0 (2023-02-10)

Commit Statistics

  • 2 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like ‘(#ID)’ were seen in commit messages

Commit Details

  • Uncategorized