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 therefs
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)