Commits


portable: configure gitwrapper/gotd paths Rather than hard-code assumptions into gitwrapper and gotd binaries, allow for some values to be overriden at compile time. This should help portability.


portable: mismerge in serve_write()


portable: gotd: re-enable chroot Reads (git clone) are working but writes (git push) run into an error


portable: linux: use default git libexec Define a standard path to where git stores its libexec helpers. This is always going to be hit-and-miss hard-coded like this, but will suffice for now. Tested on ubuntu 22.04


portable: getprocname: program_invocation_short_name This is needed for gitwrapper which will fail if its program name cannot be detected properly.


portable: gotd/gitwrapper: update for libs Bring gotd and gitwrapper closer to how libraries are detected.


portable: gotd: EXTRA_DIST


portable: got{ctl,sh}: add missing files


portable: gotd: listen Include listen.c; make it portable.


portable: handle gotd/auth


portable: enable gotctl (via --enable-gotd) This builds gotctl, for the moment via --enable-gotd


portable: build gotsh when --enable-gotd passed When building gotd, also build gotsh.


portable: enable compiling gotd This enables gotd -- for now, this is opt-in at compile-time, via: ./configure --enable-gotd


make gotd flush pending messages before disconnecting the client upon success This prevents gotd from closing the client connection before ref-update status reports have been sent. Seen while testing gotd on Linux, though I see no obvious reason why this race would not trigger on OpenBSD.


plug line_offsets leak in tog blame view; ok op@


tog: don't show the base commit marker in limit view The limit commit queue is invariably filled with different commits to the queue containing all commits, so the index of the work tree's base commit in the real queue corresponds to a different commit in the limit queue. As such, the marker is drawn on an incorrect commit. Rather than fix this to draw the marker on the correct commit if it happens to be in the limit queue, don't draw the marker at all in limit view. As pointed out by Mikhail on the list, this information is not wanted in the limit view. Patch and report by Mikhail.


gotsh: do not set POLLOUT flag when there is no data to send Prevent an endless polling loop on Linux where POLLOUT and POLLHUP can both be reported via pollfd revents.


don't include sys/cdefs.h "thou shalt not include sys/cdefs.h because it is not standardized", and in this case is not really needed either.


document that the log -d option implies log -P We did consider making -d and -P options conflict but doing so would not be very helpful. Instead, document -d as a superset of -P. ok op, jamsek


undo unrelated man page change from 1050403b806ca85666ad4b6a9e83953fdbb5298a


gotwebd: fix branches modification time with show_repo_age off If show_repo_age is set to off, got_get_repo_age() returns without setting the timestamp. got_get_repo_age() is also used by the branch listing to show how old they are however, and we end up rendering the stack garbage. Instead, respect `show_repo_age off' one layer above, and always return a timestamp in got_get_repo_age(). While here, initialize the timestamp to zero so it's set also in case of failures. Issue reported on IRC by xs, thanks!


tog: fix log view search infinite loop When the current matched and selected entry is the last loaded commit, we keep looping the same code path because search_entry is always NULL. Before poking the log thread for more commits, set search_entry to the currently selected commit, which is where the search resumes. Patch by Mikhail


gotd: stop logging "unexpected end of file" when a client decides to disconnect


got: regress for log -x keyword and log -dPp combinations Plus multiple copypasta fixes where I was cmp(1)ing stdout instead of stderr! Fortunately, we were doing the right thing despite not checking it properly. The log -dPp test is from op@. ok + tweaks op@


fix 'got log -dPp' diffstat duplication bug Only collect changed paths once if both -d and -P are specified; we already checked for -d and -p. Reported by Lucas on IRC. Regress for this and the previous (got log -x keyword) commit still due. ok stsp@ and op@