An idiomatic, lean, fast & safe pure Rust implementation of Git
A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
cargo check
(4faf10e)more robustness in the face of a trampling-herd of threads loading a single index. The motivating example is here: https://github.com/praetorian-inc/noseyparker/issues/179
Previously, it was possible for a trampling herd of threads to consolidate the disk state. Most of them would be 'needs-init' threads which could notice that the initialization already happened, and just use that.
But a thread might be late for the party and somehow manages to not get any newly loaded index, and thus tries to consolidate with what's on disk again. Then it would again determine no change, and return nothing, causing the caller to abort and not find objects it should find because it wouldn't see the index that it should have seen.
The reason the thread got into this mess is that the 'is-load-ongoing' flagging was racy itself, so it would not wait for ongoing loads and just conclude nothing happened. An extra delay (by yielding) now assures it either seees the loading state and waits for it, sees the newly loaded indices.
Note that this issue can be reproduced with:
'./target/release/gix -r repo-with-one-pack -t10 --trace odb stats --extra-header-lookup'
use tempfile
permissions support to set the correct mode on unix.
Previousoly it would make an additional syscall to change permissions, which
is slower than necessary.
gix-pack
(bad5b48)tempfile
permissions support to set the correct mode on unix. (7b3dc92)don't panic when unknown entry types are encountered. Related to https://github.com/helix-editor/helix/issues/10660 which runs into object types that are unknown.
I have looked into this and couldn't find evidence of a new pack-entry type in the Git codebase.
It also looks like that Git will never write packs that aren't V2
gix-pack
(bad5b48)A maintenance release without user-facing changes.
gix-ref
(d2ae9d5)A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
gix-pack
(bad5b48)A maintenance release without user-facing changes.
gix-worktree
(1ca6a3c)gix-pathspec
(44a2e00)Search
This improvement was triggered by this question.Search
(5b47567)