Commits


refresh our pack-index path list if the mtime of objects/pack has changed ok op@


implement support for commit coloring in got-read-pack for speed ok op, tracey


reduce GOT_PACK_CACHE_SIZE to 32, otherwise it uses too many open files found by tracey


cache a list of known pack index files when the repository is opened Avoids overhead due to readdir calls while searching a pack index. ok op@


reuse existing deltas when creating pack files tested by thomas, naddy, and myself


cache raw objects in order to speed up gotadmin pack


use RB_TREE instead of STAILQ to manage packindex bloom filters; much faster


use a bloom filter to avoid pointless pack index searches


indentation fixes


handle pack index files which lack a corresponding pack file ok millert


cap pack file cache size at 1/8 of the current open file desciptor limit


increase pack index cache size from 16 to 64 to improve performance This can make a huge difference on repositories which contain more than 16 pack files, at the expense of additional open file handles. My test case was a ports.git repository with > 60 pack files (these accumulate due to 'got fetch', and 'git repack -a' would condense them). With cache size 16 'got update' in /usr/ports took more than 60 seconds. With cache size 64 the same command took less than 5 seconds. The root cause is probably that mapping and unmapping large files over and over again is expensive on OpenBSD.


add fd field to got_repository, modify got_packidx_open to use fds These changes are intended to make got more compatible with FreeBSD's Capsicum. ok stsp


detect unknown repository format extensions (such as sha256 format) ok millert


add per-worktree got.conf(5) file in the .got directory; ok millert