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

2 years ago

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 git_odb::Find* traits in prelude, instead of git_pack::Find*
    These are higher-level and generally more desirable.
    The Find traits in git-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
    Rpeository 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
    capabie 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 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.

Commit Statistics

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

Commit Details

view details
  • #215
    • easy::Oid::ancestors() now supports sorting() and iteration by first commit only (0ae2a8d)
    • refactor (9af2a94)
    • Use GITOXIDE_OBJECT_CACHE_MEMORY to control how much object cache is used (bc77534)
    • Don't read environment variables each time an pack cache is created (91d7ef2)
  • #266
    • Default handle refresh mode is the least surprising, with option to configure (1b74c14)
    • refactor (b88f253)
    • refactor (52a4dcd)
    • A quick and dirty version index iteration (0384007)
    • Use new store in git-repository (2f9e342)
    • add docs for handle-related functions (cf1b1e6)
    • use git_odb::Find* traits in prelude, instead of git_pack::Find* (f9c0493)
    • fix git-repository docs (3496a97)
    • remove borrowing Repo as possible failure cause (7a91212)
    • Adjust object-acess to test new contains method (8488b41)
    • remove Easy… abstraction in favor of Handle (b2cc0c6)
    • rename easy::State to easy::Handle (83d7b31)
    • Remove unnecessary error variants now that repo() is called less (afcd579)
    • assure loops can't happen anymore (f04ff80)
    • Use db handle for writing (053e7b6)
    • Adapt to changes in git-repository (3ab9b03)
    • fully rely on OdbHandle in repository State (5e7aa16)
    • Rename Repository::odb to Repository::objects (57de915)
    • Add odb handle to state (4e38da3)
    • remove Repository::refresh_object_database() (93db4a5)
    • remove pack-cache from Find::try_find(…) (ebc7f47)
    • 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)
  • #274
    • Rename OwnedObject to DetachedObject (b673097)
    • Fix docs (acb0ccc)
    • Remove easy::borrow::Error entirely; support for multiple objects per handle (c4184f3)
    • rename easy::Object to OwnedObject; remove Ref suffix from ObjectRef and TreeRef (880b564)
  • #279
    • fix docs (b61a920)
    • rename easy::Object methods returning Ref objects to have ref in their name (6e3a745)
    • cargo fmt (8b9da35)
    • Deal with changes to git-odb Write trait (4d67122)
    • adapt to changes to git-odb (5b0e2b9)
    • First pieces of header parsing; allow to respect multi-index desired hash kind in git-odb (1a2a049)
    • refactor (4e89d8d)
    • Respect core.multiPackIndex option (1495efc)
  • #287
    • basic output for 'repo verify' json only (9f8d61f)
  • #293
    • make clear what 'steal' actually steals from (1b0ab44)
    • Make obvious that we steal data from the free list (3523aa4)
    • handle won't try to reuse empty buffers to allow it to be claimed (0fb4c91)
  • Uncategorized
    • Release 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 (42ebb53)
    • 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)
    • 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)
    • remove debug-helper (c243215)
    • Don't use bleeding edge features (3de0ab1)
    • reference statistics for stats example (83b99ce)
    • Experiment with novel API idea around Tree breadthfirst traversal (2ee1890)
    • Add easy::Tree::traverse() platform (667485e)
    • (change!: consistently use object_hash instead of hash_kind #279) (81bd453)
    • Release git-chunk v0.2.0, safety bump 4 crates (b792fab)
    • Merge branch 'sync-db-draft' (7d2e20c)
    • Tests for Commit object (1130928)
    • Add easy::Commit object (8f650c0)
    • Episode 5 (8ba7fc8)
    • episode 4 (e7e54a2)
    • episode 3 (e107d9a)
    • make fmt (066f3ff)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.