github Byron/gitoxide git-ref-v0.19.0
git-ref v0.19.0

18 months ago

New Features

  • file::Transaction::rollback() allows to explicitly roll back a pending change.
    As opposed to dropping the Transaction, this method allows to obtain all
    edits that would have been applied.
  • higher performance for edits which would write the same value.
    Instead of moving them into place, we just drop them, without ever
    writing into them.

Bug Fixes

  • assure symrefs don't get deleted when moving refs to packed-refs.
    Previously it was possible for symbolic refs to be deleted right after
    they have been created or updated as they were included in the set of
    refs that was assumed to be part of packed-refs, which isn't the case
    for symbolic refs.

  • case-insentively conflicting references can be created even on case-insensitie filesystems*.
    The asterisk indicates that this only works if packed-refs are present
    and these references are written straight to packed references without
    ever trying to handle the otherwise conflicting loose reference files.

    This is done by leveraging the fact that in presence of packed-refs
    or a pending creation of packed-refs, there is no need to create
    per-file locks as concurrent transactions also have to obtain the
    packed-refs lock and fail (or wait) until it's done.

  • instead of erroring if loose iteration is performed on missing base, correctly yield zero references.
    Previously it reported an error, now it does not and instead performs no
    iteration, which is more helpful to the user of the API I believe as
    they won't randomly fail just because somebody deleted the refs
    folder.

  • loose ref iteration on a repo with missing 'ref/' fails when creating the iterator.
    Previously, it would fail on first iteration, making it seem like there
    is one reference even though it's just an error stating that the base
    cannot be read.

    This is clearly worse than making a metadata check on the filesystem,
    no matter how unlikely the case.

Commit Statistics

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

Thanks Clippy

Clippy helped 2 times to make code idiomatic.

Commit Details

view details
  • #595
    • assure symrefs don't get deleted when moving refs to packed-refs. (584b705)
    • Avoid lock-acquisition for refs which are to be deleted if a global lock is helt. (66b053d)
    • case-insentively conflicting references can be created even on case-insensitie filesystems*. (9f84850)
    • instead of erroring if loose iteration is performed on missing base, correctly yield zero references. (e9853dd)
    • loose ref iteration on a repo with missing 'ref/' fails when creating the iterator. (27386a9)
    • First test to validate how collisions are expressed. (3f54ade)
    • Attempt to add the first case-sensitive test… (063ab73)
    • file::Transaction::rollback() allows to explicitly roll back a pending change. (e86e159)
    • higher performance for edits which would write the same value. (bbdb480)
  • Uncategorized
    • prepare changelogs prior to release (fe5721f)
    • Merge branch 'http-config' (665b53e)
    • Don't assert on state that is based on a transaction that isn't committed (00f6f7a)
    • thanks clippy (fe7d6f9)
    • Assure reflogs aren't skipped just because there is no per-loose lock file. (130d13b)
    • refactor (f17c6b6)
    • refactor (c1d2aea)
    • refactor (b0a231a)
    • thanks clippy (5f7fe69)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.