Commit Briefs

6a88129775 Stefan Sperling

properly swap cached struct pack array elements in got_repo_cache_pack()

Avoids clobbering open files for delta base/accumulation, leaking file descriptors, and triggering errors from close(2) during got_repo_close() as we try to close the same file descriptor more than once.


13242195c2 Stefan Sperling

ensure that all open basefd/accumfd get closed in got_repo_close()

found by tracey


571608344a Stefan Sperling

open temporary files needed for delta application in got_repo_open()

This prepares for callers of got_repo_open() that cannot afford to open files in /tmp, such as gotwebd. In a follow-up change, we could ask such callers to pass in the required amount of open temporary files. One consequence is that got_repo_open() now requires the "cpath" pledge promise. Add the "cpath" promise to affected callers and remove it once the repository has been opened. ok tracey


d7b5a0e827 Stefan Sperling

inline struct got_object_id in struct got_object_qid

Saves us from doing a malloc/free call for every item on the list. ok op@


f134ecfdc3 Christian Weisgerber

const-ify string table


c560c1f52d Omar Polo

don't `goto done' if calloc fails

otherwise we call got_repo_close with repo being NULL and segfault there. ok stsp


9b576444ae Stefan Sperling

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@


0e6ab4b2dd Stefan Sperling

make got_repo_match_object_id_prefix() reject overlong input strings

suggested by + ok naddy


0ed2285b01 Stefan Sperling

handle reference arguments which look like short object IDs

Match command line arguments against references before matching object IDs. This makes it possible to use reference names that happen to match a short object ID. For example, a branch called "11ac" could not be diffed in OpenBSD src.git which happens to contain commit IDs that begin with hex digits 0x11ac. A bogus error would be reported in this situation: $ got diff master 11ac got: ambiguous object ID ok naddy


8934ea8b1b Omar Polo

factorize imsg_clear calls after imsg_flush failures

imsg_clear frees and closes resources allocated as part of enqueueing imsgs so it's a no-op after reads. discussed with and ok stsp@


67fd684965 Stefan Sperling

reuse existing deltas when creating pack files

tested by thomas, naddy, and myself


c0df59665d Stefan Sperling

wrap overlong lines


e7ae0bafef Stefan Sperling

add O_CLOEXEC (close-on-exec) to openat(2) calls

suggested by millert ok thomas_adam


8bd0cdad05 Stefan Sperling

add O_CLOEXEC (close-on-exec) flag to open(2) calls

suggested by millert ok thomas_adam


d3c116bf72 Stefan Sperling

cache raw objects in order to speed up gotadmin pack



b343c297c6 Stefan Sperling

use a bloom filter to avoid pointless pack index searches



138e4f4798 Stefan Sperling

display the requested object type when an object could not be found

ok millert@


237cfda12c Stefan Sperling

make got_repo_match_object_id() filter tags by the requested object type

Potentially this function could return objects of a type that was not requested. Problem found by code inspection. This change does not affect any of our existing tests.


abc59930d5 Christian Weisgerber

indentation fixes


6480c871c8 Stefan Sperling

provide separate send {} and fetch {} configuration blocks in got.conf

Feature requested by naddy. ok naddy, who also suggested some tweaks that will arrive shortly


1124fe406f Stefan Sperling

handle pack index files which lack a corresponding pack file

ok millert