github GitoxideLabs/gitoxide git-odb-v0.26.0
git-odb v0.26.0

2 years ago

New Features

  • git_pack::Find::try_find_cached(…, pack_cache)
    With this method it's easier to bypass local caches and control
    the cache oneself entirely.
  • add linked::Store::rc_iter()
    For completeness in case of single-threaded operations
  • linked::Store sorts bundles by modification date, newest first
  • A simplified version of the Find trait
    It's meant for the next generation of object db handles which keep a
    local cache of all the details of the actual object database.

Bug Fixes

  • support Rust 1.52
  • linked::Store now assures unique IDs across compound stores

Changed (BREAKING)

  • cleanup and unify verify_integrity() method signature
    Previously they used many different ways of handling their parameters
    despite all boiling down to calling the same 'index::File::traverse()`
    method.

    This allows for more reuse of Options structs and generally makes
    clearer how these optinos are used.

  • Change accessors named hash_kind() to object_hash() for consistency

  • consistently use object_hash instead of hash_kind

  • remove Write::*(…, hash_kind)
    The hash_kind is now intrinsic to the implementation of the write
    trait and thus isn't passed along anymore in parameters.

    The sink() function now takes the kind of hash as parameter.

  • various changes to the loose::Store.

    Change path field to read-only path() method
    add hash_kind parameter to loose::Store::at(…, hash_kind)

  • move sink::Sink to the top-level exclusively

  • move loose::iter::Iter to loose::Iter

  • remove make_object_cache parameter from git_pack::data::output::count::objects()
    It now is an implementation detail of the Find trait.

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

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

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

New Features (BREAKING)

  • Cache::inner removed in favor of Deref/Mut and into_inner()
    Making the inner field available allows changing it, which would make
    it potentially incompatible with existing caches. The new
    implementation makes it essentially read-only while allowing more
    convenient access to methods on inner.

Commit Statistics

  • 163 commits contributed to the release over the course of 51 calendar days.
  • 55 days passed between releases.
  • 24 commits where understood as conventional.
  • 6 unique issues were worked on: #260, #266, #279, #287, #293, #298

Thanks Clippy

Clippy helped 4 times to make code idiomatic.

Commit Details

view details
  • #260
    • linked::Store now assures unique IDs across compound stores (b605c1f)
  • #266
    • More explicit information about how much garbaged is in the slotmap (cfd36ee)
    • assure stable handles can actually access the indices hey need (9474a43)
    • a failing test to show the handle-stability doesn't quite work yet (5562e88)
    • refactor (c499843)
    • docs for dynamic object store (2c2a2e9)
    • Default handle refresh mode is the least surprising, with option to configure (1b74c14)
    • remove unused dependencies (c800fdd)
    • refactor (b88f253)
    • refactor (52a4dcd)
    • refactor (3da91ce)
    • move sink::Sink to the top-level exclusively (ab4e726)
    • dynamic store module cleanu (494772c)
    • adapt to changes in git-odb (a44dd4b)
    • move loose::iter::Iter to loose::Iter (8bb5c9a)
    • minor improvements to module layout, docs (0364f48)
    • fix docs (360bf9d)
    • Make single-threaded programs possible to use with git-repository (dde5c6b)
    • A more suitable iterator implementation for general store (af0cc5f)
    • A quick and dirty version index iteration (0384007)
    • Use new store in git-repository (2f9e342)
    • Use new odb in place of the old one and it works (8ad25c5)
    • remaining methods of git-pack::Find (92b9764)
    • Make find::Entry self-contained (ad36fb9)
    • Remove iterator access in favor of fully owned data (62d3f10)
    • It shows that we can't return anything referenced from the interior-mutable handle (b9f308b)
    • refactor (6cb474e)
    • prepare implementation of location-dependent methods (5de29f4)
    • refactor (2c23f42)
    • Impl git_odb::Write for general::Handle (b7a6ab7)
    • cleanup (a4f3670)
    • A way to predict the amount of slots needed for smooth operation (a3a16d6)
    • finding objects and dynamically loading packs seems to work (8f58c30)
    • add docs for handle-related functions (cf1b1e6)
    • first sketch of looking up objects with pack cache (a0aae84)
    • add contains checks for libgit2 (c64a45a)
    • Add MRU to contains() even faster contains checks (6525847)
    • Load an index right after refreshing items from disk (0c40eb3)
    • some more assertions for contains() regarding refresh mode (3f8c540)
    • Try reusing mappings, but no LRU (bb602e8)
    • try LRU-like contains implementation (2d6960f)
    • Don't abort run into assertion unnecessarily… (4e87a56)
    • Adjust object-acess to test new contains method (8488b41)
    • Looks like 'contains()' is implemented well enough (c24015a)
    • First successful loading of indices… (8cbef57)
    • first stab at loading indices while dealing with inherent raciness (94be3a0)
    • assure loops can't happen anymore (f04ff80)
    • The first green test for loose object lookup (0c6b7b1)
    • impl Write for Arc, Rc and shared borrows (5cdc27d)
    • more clarity around generations; actually trash slots or unset them (7bce101)
    • Adapt to changes in git-repository (3ab9b03)
    • Create a new index snapshot and store it (41d91f9)
    • Sort out race condition around slots that change identity (6e678e7)
    • Uncover slightly disturbing races which make it hard to ever release/unload maps (cbf2d13)
    • remaining comments about multi-pack-index handling (569c40b)
    • handling of multi-pack index slot-map moves as they change (456f1e7)
    • Also use object cache if there is no pack-cache (3e1ae25)
    • prepare correct handling of multi-pack indices when the time comes (6388ba2)
    • More thoughts about how to continue a search… (eac8c45)
    • remove make_object_cache parameter from git_pack::data::output::count::objects() (3f05fea)
    • get closer to actually setting up slots (55645ae)
    • Cache-creators are indeed shared across threads, must be sync (c326cb3)
    • Add load-pack method frame to not forget (e1ec535)
    • Try to make Handle usable for pack creation (424c9b3)
    • Some steps towards recording the disk state in the slot-map (5074f4c)
    • make all handle caches and cache creators optional (3c30769)
    • better errors for disk consolidation; setup loose object dbs (4c13e14)
    • Make odb handle more general (2be6725)
    • Detail the load-indices flow more (11d3325)
    • Make slot-count configurable (c910af5)
    • :Find for Arc and Rc (b1c82a7)
    • Provide handle with a snapshot of the store's state (6e0cd6d)
    • MultiPackIndex compatible pack::Find trait definition (5fa1a9d)
    • refactor (d5565da)
    • git_pack::Find::try_find_cached(…, pack_cache) (58c2edb)
    • construct a handle from a linked store (9702ed4)
    • refactor (ab14f70)
    • A first tiny stab at Handle for linked store (ef08f7f)
    • Support for metrics in general store handle (11b98b8)
    • refactor (1361c31)
    • first test to trigger all major code-paths (25b56c5)
    • refactor (3310d8f)
    • more trustworthy state-id hashing (4eb43d0)
    • :Find implementation for linked::Store (9235106)
    • Use handle registration to avoid unloading packs; fix state-id hash (a1070de)
    • add linked::Store::rc_iter() (36fde72)
    • Handle registration (df4e4eb)
    • Use Deref instead of Borrow in linked ODB iterator (a96b1e5)
    • Bring in the slotmap (3a5cb5f)
    • put down more types for loading of indices and refresh logic (9909eaf)
    • remove pack-cache from Find::try_find(…) (ebc7f47)
    • Add all types the handle would have to store (e2f0cb0)
    • linked::Store sorts bundles by modification date, newest first (a81b333)
    • Rename Handle to Cache (580e96c)
    • First sketch of general store (fc1b640)
    • move git_pack::data::Object to git_object::Data, massively alter git_odb::Find trait (2290d00)
    • More affirmative notes about multi-pack indices (dceaea2)
    • A simplified version of the Find trait (e25f4ea)
    • Remove CRC32 check entirely as it doesn't seem to be important in the big picture (22d35bd)
    • Notes about multi-pack indices in the current data::entry::location (7eff6bf)
    • Adjust to new name/place of bundle::Location (1f8954d)
    • Add 'contains()' method to Find (dfdd6fb)
  • #279
    • add missing docs (4137327)
    • cargo fmt (8b9da35)
    • very first experimental support for multi-pack index verification (bb35c69)
    • multi-index verify checksum (853d468)
    • Another test to validate index stability (1fb08df)
    • Change accessors named hash_kind() to object_hash() for consistency (2ef9a84)
    • refactor (a4ad5bf)
    • handle 'move' of multi-pack indices (aec0895)
    • trigger last portion of multi-index logic (b46979b)
    • load slots early to avoid races with the 'generation' field (10bc3ab)
    • Only open multi-pack indices if the mtime changed (efe2579)
    • Add remaining Store docs (e440bcd)
    • first odb lookup with multi-index works (a8773df)
    • Generalize intra-pack offset lookup (dff05ef)
    • consistently use object_hash instead of hash_kind (49998cc)
    • replace bare u32 data::Id typedef (e0b8636)
    • A rough implementation of everything multi-index support would need… (56f174f)
    • Make opened multi-pack indices representable (28e648d)
    • first sketch towards reading in multi-indices (25eb157)
    • Cache::inner removed in favor of Deref/Mut and into_inner() (bf73a94)
    • refactor (7331e99)
    • adapt to changes in git-pack (28dba20)
    • adjust to changes in git-pack (b8f109e)
    • refactor (9b5451a)
    • loose object iteration respects hash kind (72eb9da)
    • remove Write::*(…, hash_kind) (67c42fb)
    • various changes to the loose::Store (ad1b9ea)
    • loose odb doesn't hard-code sha1 anymore for find() and contains() (68f1031)
    • First pieces of header parsing; allow to respect multi-index desired hash kind in git-odb (1a2a049)
    • Respect core.multiPackIndex option (1495efc)
    • only load multi-pack indices if allowed (b22e146)
  • #287
    • basic output for 'repo verify' json only (9f8d61f)
    • way nicer progress messages for repo verification (4b4f9f8)
    • upgrade to prodash 17 (47860b7)
    • better verify progress printing (4a464f2)
    • refactor (831397c)
    • refactor (38426a1)
    • Very rough version of repository verification (80a4a7a)
    • support for loose object statistics in odb store (53d835a)
    • bare-bones loose object integrity check (3dfec81)
    • frame for loose-db validation (a24307d)
    • First basic validation of all packs within an odb store (d63176f)
    • Don't reset generations, instead make them match the current one (1d995ef)
    • frame for interity check on object store (b5dd059)
    • cleanup and unify verify_integrity() method signature (91d0476)
  • #293
  • #298
  • Uncategorized
    • Release git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0 (1b76119)
    • Release git-actor v0.8.0, git-config v0.1.10, git-object v0.17.0, git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0 (8f57c29)
    • Release git-features v0.19.1, git-actor v0.8.0, git-config v0.1.10, git-object v0.17.0, git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0 (d78aab7)
    • Release git-hash v0.9.1, git-features v0.19.1, git-actor v0.8.0, git-config v0.1.10, git-object v0.17.0, git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0, safety bump 4 crates (373cbc8)
    • prepare changelogs for release (674ec73)
    • prepar changelogs for cargo-smart-release release (8900d69)
    • Release git-bitmap v0.0.1, git-hash v0.9.0, git-features v0.19.0, git-index v0.1.0, safety bump 9 crates (4624725)
    • Release git-chunk v0.2.0, safety bump 4 crates (b792fab)
    • refactor (c09a44d)
    • thanks clippy (bf4694c)
    • thanks clippy (17af184)
    • make fmt (066f3ff)
    • thanks clippy (123a95e)
    • thanks clippy (4ca9e07)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.