Commit Briefs


74735c56c8 Stefan Sperling

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.


f9d1117339 Stefan Sperling

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


02a9e99535 Stefan Sperling

got rebase: preserve author timestamps

Adds test_rebase_preserves_author_data to regress/cmdline/rebase.sh. Patch by Sven M. Hallberg


8c25a0e66c Stefan Sperling

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.


d77bec5ef2 Stefan Sperling

fix gotsys-read-conf crash when ssh key comments are missing in gotsys.conf

Add test coverage for this issue.


8c3d2a37a5 Stefan Sperling

bump version number


4688fbd6c7 Stefan Sperling

CHANGES for 0.113


9925e94074 Stefan Sperling

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@


d907758cbe Stefan Sperling

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!



15cc6a0a0d Stefan Sperling

gotwebd: do not forget to initialize *ngroups argument for getgrouplist()

spotted by Denis Bodor, thanks!


e2bc7eacc7 Stefan Sperling

whitespace fix; spotted by op@


22941965a7 Stefan Sperling

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@


1b11aa0ac1 Stefan Sperling

use got_path_cmp() instead of strcmp() in pack_info_cmp()

ok op@


8e6ecdb1ba Stefan Sperling

when packing, do not forget to mark commits reached via tags as traversed

ok op@



6ae2855c45 Stefan Sperling

tweak 'got status' and 'got add' ignores handling for better git compatibility

Skip past leading slashes in ignore patterns. In gitignore(7), these trigger the behavior got has by default. Add regress test. Lift documentation of ignore patterns to a subsection, referenced by the `add` and `status` docs. Refine documentation of ignore patterns to discuss the extensions to glob(7) as a whole, and then list caveats relative to git(1) and cvs(1). Add a file to the test worktree in the main gitignore regress test in order to register a known delta to gitignore(7) that was ambiguously documented previously: for the pattern a/**/foo, git will ignore a/foo, but got will not. Patch by: Evan Silberman


26e67dac35 Omar Polo

gotwebd: delete trailing whitespaces


90c119aeb4 Omar Polo

gotwebd: simplify handling of action not found


0e9726b99c Stefan Sperling

bump version number


1fbd2b3b8a Stefan Sperling

CHANGES for 0.112


afbdf128aa Stefan Sperling

stop opening the repository when opening a work tree

Opening a bunch of files in /tmp for pack temp files and opening the repository just to validate the work tree's base-commit ID is overkill. Simply parse the ID directly. If the commit object no longer exists we will run into another error sooner or later. The commit is already protected by the work tree reference. If it is missing then something has badly gone wrong. Doing less work when opening work trees speeds up 'got status' a bit. As pointed out by Kyle this also avoids running got-read-gitconfig twice when opening both a repository and a work tree. ok by op@ and Kyle Ackerman


86abf691af Stefan Sperling

add comments explaining that .got/base-commit needs hash algo information

Hopefully, if we ever bump the work tree format in the future we will see these comments and sneak in a change to the .got/base-commit file in order to record the hash algorithm of the base commit ID.


866e94146b Kyle Ackerman

Plug memory leaks in some libexecs

This occurred when these particular libexecs get an imsg of type GOT_IMSG_STOP. They attempt to exit the main loop and leak the last imsg they received. ok stsp@ op@