Commit Briefs

24b7de1c04 Stefan Sperling

avoid copying reused deltas to delta cache file; copy from pack file instead

ok op@


e62fc5205c Stefan Sperling

add missing free() of delta buffers in several error paths


e5792992e5 Omar Polo

change add_delta to take an off_t instead of size_t.

add_delta already calls got_delta_open casting the size_t to off_t, and all the add_delta callers pass an off_t anyway; fixes an implicit off_t truncation. ok stsp@


ad4cc36168 Omar Polo

convert got_pack' filesize to off_t; ok stsp@


1c28a36116 Omar Polo

check size before calling mmap(2)

It's only a preparatory step, as checking whether a size_t is less than SIZE_MAX is moot. In a follow-up commit, however, the `filesize' field of the struct got_pack will become off_t and these checks will kick in. This also makes consistent how we guard mmap(2) against empty files. ok and improvements stsp@


82031ac84c Omar Polo

add missing `goto done;' on error path; ok stsp@


e082ed6708 Christian Weisgerber

fix off_t type mismatch

off_t is a signed type and depending on the platform, it can be "long" or "long long", so cast to long long for printf().


24d916d21f Omar Polo

change got_pack_parse_offset_delta tslen argument to size_t

The tslen argument is always in the (1..9) range so `int' is technically fine (even int8_t would be!) but all the callers are passing a size_t, so change the type accordingly. ok stsp@


74ef8aae7e Stefan Sperling

close parent's end of imsg pipe before waiting for a child process to exit

Prevents a dead-lock in 'tog log' where tog wants to exit (e.g. because the user pressed Ctrl-C) while a got-read-pack child process wants to send more commits. Closing the parent's pipe descriptor makes writes to the pipe fail in the child process. The child then unwinds via an ERR_EOF error and exits, instead of forever polling its end of the pipe in order to write more data. ok jamsek




04aed1557b Christian Weisgerber

fix off_t type mismatches

off_t is a signed type and depending on the platform, it can be "long" or "long long", so cast to long long for printf(). ok stsp



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




2d9e6abf24 Stefan Sperling

store deltas in compressed form while packing, both in memory and cache file

This reduces memory and disk space consumption during packing. with tweaks + memleak on error fix from op@ ok op@


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@



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



3bfc233445 Stefan Sperling

fix file corruption regression in 'got checkout' caused by commit db696021

got-read-pack must rewind its files temporary files before reusing them. Problem reported by naddy ok tracey naddy



404bde06df Stefan Sperling

fix bogus "object not found" errors when object ID begins with 00

ok thomas_adam