Commits


CHANGES for 0.114


plug a file descriptor leak in the gotsysd libexec process


avoid event_loopexit() in gotsysd libexec event handlers when flushing It seems flushing our final message can fail if we forcefully exit the event loop here. This would leave gotsysd's sysconf process stuck in a state where it was waiting for a message which never arrived.


use imsgbuf_flush() instead of gotsysd_imsg_flush() in libexec event handlers The gotsysd_imsg_flush() wrapper enforces a sync write by polling the file descriptor and writing data in a loop. Since libevent already does polling for us we can simply use imsgbuf_flush() here instead.


avoid flushing messages in got_imsg_ helper functions, just buffer them


make sure gotsysd libexec helpers flush all pending messages before exiting


always consume authorized keys messages in gotsys-userkeys THe main process will always send these messages so don't skip parsing them even if we are going to ignore the current user.


add gotsys apply -w option which waits until sysconf has been run


stop running ssh with -q by default The -q option suppresses too many important errors, including the warning printed when a host key has changed. Requiring users to pass -v in order to see this message is too cumbersome.


build and install gotwebd in gotsysd regress VMs


remove an obvious comment; expected output already shows "+0000" i.e. UTC


untangle committer and author_time parameters of got_worktree_commit() Make the semantics of the author_time parameter self-contained by treating author_time == 0 as the fallback case, instead of treating committer == NULL as the fallback case. Having the semantics of one parameter depend on the semantics of another might lead to subtle bugs introduced during potential future refactoring of this code.


cvg: add author_time argument to got_worktree_cvg_commit() No functional change, but keeps the code in sync with got. Patch by Sven M. Hallberg


got rebase: preserve author timestamps Adds test_rebase_preserves_author_data to regress/cmdline/rebase.sh. Patch by Sven M. Hallberg


relax repository path permission checks in gotsys-repo-create Since gotwebd can now be given read access to gotd repositories by making the directory readable for the _gotwebd group, these checks are too strict. Stop requiring a specific GID, and allow group rx bits to be set for group read access. As before, keep rejecting world/other rwx bits for safety. Read access to repositories is supposed to be managed by gotd.


fix gotsys-read-conf crash when ssh key comments are missing in gotsys.conf Add test coverage for this issue.


bump version number


CHANGES for 0.113


fix a race in gotd notification processing Dequeue notifications from the list only once the notify process has confirmed that the notification has been sent. This should be more robust for the following reason: In some spots were are checking the list head against NULL to see if any notifications are still pending. By removing notifications from this list too early, this check did not cover notifications which were still in flight. We could thus end up deciding to shut down the session process too early, and the last notification of several would fail. Issue observed when sending a new commit on a branch and a new tag which tags this commit to gotd in a single 'got send' operation. Only the tag notification would make it, while the other notification never arrived after an 'unexpected EOF' error in the notify process while trying to send a confirmation to the session process. ok op@


fix bogus "unexpected privsep message" from gotsh during "got send" Ensure that gotsh receives its end of the pack file data pipe before repo_write starts sending pack file status messages. Messages of type GOTD_IMSG_PACKFILE_StATUS would end up being received in gotsh's serve_write() function too early. This race is similar to the one fixed for repo_read back in commit c2274a511a7415078e2628f969b8459f69432411 Reported by martijn@, who pin-pointed the problematic case in the code, thanks!


fix default access for root and _gotd when gotsysd runs without config file


gotwebd: do not forget to initialize *ngroups argument for getgrouplist() spotted by Denis Bodor, thanks!


whitespace fix; spotted by op@


improve redundant pack detection during cleanup Instead of storing all referenced object IDs in a set, use the pack index of the large pack file we have created to check whether an object exists. Apply the modification time check only to packs which contain unreferenced objects. Otherwise we can leave many duplicate pack files behind. I observed this when all refs were packed and the packed-refs file was days old. ok op@


use got_path_cmp() instead of strcmp() in pack_info_cmp() ok op@