github Byron/gitoxide git-repository-v0.13.0
git-repository v0.13.0

2 years ago

With changes to git-ref, what follows is all the adjustments made to simplify the git-repository 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 git-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 git_ref::file::WriteRefLog to git_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.

Commit Statistics

  • 15 commits contributed to the release over the course of 11 calendar days.
  • 6 commits where understood as conventional.
  • 2 unique issues were worked on: #259, #263

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • #259
    • Describe and propose fix for ref namespace-sharing issue (55773b8)
  • #263
    • Adjust to changes in git-ref (1e32855)
    • Reference::logs() -> Reference::log_iter() (951c050)
    • Adapt to new iteration Platform in git-ref (b5a749e)
    • file::Store::iter() is now a platform, with .all() and .prefixed(…) respectively (5d498a3)
    • Adjustments to match new signature of peel_to_ids_in_place (f87a11f)
    • file::Store::(try_)find(…, packed) was removed (15d429b)
    • file::Store::base is now file::Store::base() and read-only (0e18753)
    • move git_ref::file::WriteRefLog to git_ref::store::WriteRefLog (9524732)
    • ref namespaces are now thread-local (fc8e85c)
    • Add cheap and sync loose ref DB directly to state (38c8146)
  • Uncategorized
    • Release git-features v0.18.0, git-actor v0.7.0, git-config v0.1.9, git-object v0.16.0, git-diff v0.12.0, git-traverse v0.11.0, git-pack v0.15.0, git-odb v0.25.0, git-packetline v0.12.2, git-transport v0.14.0, git-protocol v0.13.0, git-ref v0.10.0, git-repository v0.13.0, cargo-smart-release v0.7.0, safety bump 12 crates (acd3737)
    • Adjust changelogs prior to release (ec38950)
    • thanks clippy (a74f27c)
    • Merge branch 'git-loose-objects' of https://github.com/xmo-odoo/gitoxide into xmo-odoo-git-loose-objects (ee737cd)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.