Commits


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@


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@


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@


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@


bump version number


CHANGES for 0.96


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


fix use of uninitialized variable in update_blob spotted by smatch. ok millert@


plug memory leak in got_pack_dump_delta_chain_to_file() found by smatch. ok stsp@


fmt


pass the argument to calloc in the right order; no-op in practice reported by smatch.


fix logging during gotwebd shutdown During `rcctl stop gotwebd' the sockets process gets a SIGTERM and dies, and this makes the parent process assume it exited abnormally. Instead, catch SIGINT and SIGTERM and exit gracefully. Issue reported by xs on IRC. ok jamsek


gotwebd: fix colour of target lines in dark mode reported by xs on IRC, thanks!


Test log -b <path> traversing a merge commit. This tests for the bug fixed by c8255edc. ok stsp@


handle merge commits that are unrelated to requested changed path history Problem found and fix tested by James Cook.


plug some fd leaks in the fdopen{,dir} error paths There's also a memory leak fixed. ok stsp@


style: no-op change in practice change so it matches the style used in the rest of the tree. ok stsp


remove stray abort() call; ok stsp


remove unneded wbuf->fd = -1 There's no need to set the fd to -1 on ibufs created with imsg_create(3), and it was probably never needed.


convert to use imsg_get_fd() While here also fix a fd leak in got-read-pack. We were dup'ing imsg.fd without closing imsg.fd later; instead just use imsg_get_fd() to extract the file descriptor. Tested by falsifian and Kyle Ackerman, thanks! 'go ahead' stsp@


gotwebd: try to improve copy-paste from BLOB pages This moves the space inside the line anchor and makes it non-selectable, so that when copy-pasting, only the content of line lines is actually copied. At the moment, this seems to behave slightly incorrectly in firefox which inserts a double line break due to the presence of unselectable elements inside the selection. Hopefully it will be fixed, chromium behaves fine. It also still works decently on text-browsers. ok stsp@


gotwebd: guard against missig folder and file parameter in BLOB and BLAME ok stsp


allow remotes without urls in git config in gotd This is b624328edd but for the code used by gotd. ok stsp@


allow remotes without urls in git config Also, add tests. This change lets got and related tools work when the git config file has "remote" sections without urls, like this one in one of my git-annex git repositories: [remote "h0-rsync"] annex-rsyncurl = (some url) annex-uuid = (some uuid) skipFetchAll = true Running tog and many got commands there would previously result in: $ tog got-read-gitconfig: gitconfig syntax error tog: gitconfig syntax error The change to got-read-gitconfig.c is by stsp@, with ok from op@ (and now me). Tests ok stsp@.


fix one error being ignored in got_privsep_recv_gitconfig_remotes