Commit Briefs

c14bc75d64 Thomas Adam

Exclude cvg from release builds


d0240b28bb Thomas Adam

gotwebd: drop a few unneeded SRCS

fileindex.c, worktree.c, worktree_open.c and patch.c are not used in gotwebd. ok stsp


342fdad21f Thomas Adam

avoid a rename/stat race when gotd installs a new pack and then uses it

Reset the cached repository's pack directory mtime after installing a new pack and pack index file. I have observed the mtime of the pack directory as reported by stat(2) remaining unchanged, until some time has passed beyond the rename(2) calls used to install the pack file and its index. If gotd immediately tries to read objects installed in a new pack file then the mtime reported by stat(2) might appear as unchanged. gotd will then fail to update its cached list of pack index files and not find the newly installed objects. Clearing the cached timestamp forces a readdir(3) call which does expose the newly installed pack index file as expected. Not sure whether stat(2) is supposed to immediately expose mtime changes after a rename(2). If so then this might warrant digging into the kernel. Seen while running regression tests for upcoming gotd notification support.


e8c5d4f874 Thomas Adam

reuse existing repository struct in gotd session update_ref()

Avoids pointlessly opening and closing a separate repository instance.


a8938c4358 Thomas Adam

use a define for vi(1) path

This is intended to aid -portable, since other systems may have vi installed in a different place, or maybe prefer to ship with a different default editor. ok stsp@


fd77650a2d Thomas Adam

speed up got tag -l by caching timestamps in got_ref_cmp_tags()

performance problem reported by naddy@


ab0b42add3 Thomas Adam

portable: release 0.97 (tags/0.97)


c28071389a Thomas Adam

bump version number


4669dd78b5 Thomas Adam

CHANGES for 0.97


be9db6c2d0 Thomas Adam

add an xfail test for a case where rebase fails to forward a branch

Because 'got rebase' only does a first-parent traversal it will try to rebase commits which appear in the history of a branch, even when the branch to be rebased is already based on that history. This results in spurious merge conflicts as existing changes get re-applied. The desired behaviour would be that 'got rebase' forwards the branch, as it does when the 'got merge -M' command used by this test case is replaced by a simple 'got merge' which avoids creating a merge commit. Problem reported by naddy in the "Landry's firefox repository" thread: https://marc.gameoftrees.org/mail/1706721001.20565_0.html




202f996b29 Thomas Adam

adjust min_datalen in a few places

Fix the computation of min_datalen that was forgotten in 8f137979fc5e284a136cf8950e8b3895d7ea208b. got_privsep_recv_imsg() already takes care of converting GOT_IMSG_ERROR to errors, so just how we didn't need to call recv_imsg_error() at all, we don't need to include it in the requested min_datalen.


b150577011 Thomas Adam

swap the order of the checks to not hide an error

If a libexec process returns an GOT_IMSG_ERROR that happens to be smaller than the requested min_datalen, got_privsep_recv_imsg() returns GOT_IMSG_PRIVSEP_LEN hiding the original error. ok stsp@


2633cf30b7 Thomas Adam

attempt to speed up the deltification for big files

The current hash table perform poorly on big files due to a small resize step that pushes the table to its limits continuously. Instead, to have both a better performing hash table and keep the memory consumption low, save the blocks in an array and use the hash table as index. Then, use a more generous resizing scheme that guarantees the good properties of the hash table. To avoid having to rebuild the table when the array is resized, save the indexes in the table, and to further reduce the memory consumption use 32 bit indices. On amd64 this means that each slot is 4 bytes instead of 8 for a pointer or 24 for a struct got_deltify_block. ok stsp@


54e3887813 Thomas Adam

fix invalid imsg_free() in got_privsep_recv_printed_commits()

Depending on the error got_privsep_recv_imsg() may leave imsg un-initialized, so change it to always free the imsg on error if needed, so callers don't have to. got_privsep_recv_printed_commits() and got-read-patch were the only places where we could end up calling imsg_free() on uninitialized imsg, fix them. ok stsp@


eb0f0005dd Thomas Adam

improve execv error message

spotted using -portable on a system without openssh installed. Showing the program we've failed to exec can be handy. ok stsp@


9743baabb6 Thomas Adam

portable: set next version


9e81f59ef9 Thomas Adam

portable: release 0.96 (tags/0.96)


0617f4a52e Thomas Adam

bump version number


e25480b8d0 Thomas Adam

CHANGES for 0.96


4ad67b987e Thomas Adam

never write accum_buf on error in got_pack_dump_delta_chain_to_file()

and also avoid to override `err' if fwrite fails. ok millert, stsp


4f46fcf888 Thomas Adam

fix use of uninitialized variable in update_blob

spotted by smatch. ok millert@


9f6f4b2b2a Thomas Adam

plug memory leak in got_pack_dump_delta_chain_to_file()

found by smatch. ok stsp@


9c57c4c681 Thomas Adam

fmt