Commit Briefs


Thomas Adam

read_gitconfig: fix GOT_IGNORE_GITCONFIG case

set gitconfig_remotes to NULL to avoid a double-free, and reset the global author name/email fields too. ok stsp@



Thomas Adam

comment tweak


Thomas Adam

got_repo_pack_fds_close: don't close(0)

got_repo_pack_fds_close will try to close all of the GOT_PACK_NUM_TEMPFILES fds, even the ones that didn't manage to get a value from got_opentempfd(), which would result in a close(0) if we do not initialize to -1 here.


Thomas Adam

Make sure got_repo_pack_fds_close() frees a malloc'ed pointer.

Found by llvm's scan-build (bad free). OK stsp


Thomas Adam

Don't chug along if repo format version is unsupported.

Found by llvm's scan-build (dead store). OK stsp


Thomas Adam

portable: lib/repository.c: fixup merge

It seems as though a merge from some time ago had left some stale changes in place. This brings the two files between upstream and portable back in-line. Noticed by stsp@


Thomas Adam

portable: add back sys/queue.h

Now that the handling of including sys/queue.h is better, there's no need to remove those lines from the source. Copy the location of those original sys/queue.h lines from upstream at the same line number, so as to avoid any conflicts in the future.


Thomas Adam

implement support for commit coloring in got-read-pack for speed

ok op, tracey




Thomas Adam

move got_opentempfd out of got_repo_open. ok stsp@

thanks for all the help massaging this diff


Thomas Adam

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.


Thomas Adam

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

found by tracey


Thomas Adam

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


Thomas Adam

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@


Thomas Adam

const-ify string table


Thomas Adam

don't `goto done' if calloc fails

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


Thomas Adam

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@


Thomas Adam

make got_repo_match_object_id_prefix() reject overlong input strings

suggested by + ok naddy


Thomas Adam

portable: make UUID includes generic

Move the detection of UUID header files to be included portably. This will have no functional effect until MacOS detection is put in place.


Thomas Adam

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@


Thomas Adam

portable: fix use of d->namlen

As done elsewhere, d->namlen is not a portable field from readdir, therefore simualte this via the strlen of the directory name instead.


Thomas Adam

reuse existing deltas when creating pack files

tested by thomas, naddy, and myself