portable: configure: echo gotd/gitwrapper paths When --enable-gotd is present, and gotd empty path or gitwrapper's git libexec path is set, print those out with the other information at the end of the configure script. "N/A" is set where no value is present. Helpful for debugging.

portable: make gitwrapper --enable-gotd aware There's no point installing gitwrapper outside of enabling gotd, as this is only used by gotd.

portable: gitignore: add gitwrapper

portable: README: installation of gitwrapper Document the installation and packaging of gitwrapper for -portable

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!