Currently ref lookups require loading the entire packed-refs file into a hashmap in memory. For repos with large numbers of refs this can be painfully slow. This patch replaces the existing lookup code and instead mmap()'s the packed-refs file and performs a binary search to locate the ref entry. Git uses a similiar approach. The old hash table codepath is still used for unsorted packed-refs files. This patch also fixes a minor bug where the "peeled" trait is never parsed correctly from the packed-refs header.
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
branches | Loading commit data... | |
reflog | Loading commit data... | |
tags | Loading commit data... | |
basic.c | Loading commit data... | |
crashes.c | Loading commit data... | |
create.c | Loading commit data... | |
delete.c | Loading commit data... | |
dup.c | Loading commit data... | |
foreachglob.c | Loading commit data... | |
isvalidname.c | Loading commit data... | |
iterator.c | Loading commit data... | |
list.c | Loading commit data... | |
listall.c | Loading commit data... | |
lookup.c | Loading commit data... | |
namespaces.c | Loading commit data... | |
normalize.c | Loading commit data... | |
overwrite.c | Loading commit data... | |
pack.c | Loading commit data... | |
peel.c | Loading commit data... | |
races.c | Loading commit data... | |
read.c | Loading commit data... | |
ref_helpers.c | Loading commit data... | |
ref_helpers.h | Loading commit data... | |
rename.c | Loading commit data... | |
revparse.c | Loading commit data... | |
setter.c | Loading commit data... | |
shorthand.c | Loading commit data... | |
transactions.c | Loading commit data... | |
unicode.c | Loading commit data... | |
update.c | Loading commit data... |