Commit Briefs
do not update symlinks which are already up-to-date
This fixes spurious 'U' notifications for symlinks during 'got update' that occurred even when the work tree was fully up-to-date. Observed on a work tree of the FreeBSD src repo and reproduced in our test suite by adding a no-op update at the end of a test which deals with updating symlinks.
CHANGES for 0.52 (tags/0.52)
diff: reduce duplicate code
Condense error checking to reduce a future diff moving those lines around; this pattern is already used in other parts of the tree. fine stsp ok tracey
when reading a pack index byte-swap fields at compile-time where possible
suggested by mpi@ ages ago
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.
CHANGES for 0.51 (tags/0.51)
fix use of an uninitialized stat buffer during work tree status crawl
found by naddy ok naddy jrick
CHANGES for 0.50 (tags/0.50)