Commit Briefs
add tests for the bug fixed in commit 1fee9f40e2ed335d4ec8899954b59b43990b97c3
one of these tests is still failing; there is another edge case left to fix
fix 3-way merge of files which lack a final \n
problem found by jrick ok millert
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.
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.
fix use of an uninitialized stat buffer during work tree status crawl
found by naddy ok naddy jrick