Landlock support: WIP This is a WIP commit to support Landlock; sandboxing similar to unveil()

Cirrus-CI: add build YAML file Cirrus-CI allows for FreeBSD builds as well as Linux.

portable: add FreeBSD support This adds the capability to compile got-portable on FreeBSD.

fix 'got update' of an added + obstructed file When 'got update' tried to add a new file to the work tree and this file was obstructed by, say, a directory on disk, the update failed: $ got update ? new got: new: Is a directory $ And the work tree was not updated. With this commit this situation is properly detected as an obstruction and the update succeeds: $ got update ~ new Updated to refs/heads/master: c1f85b4938dc4c668a88f13df2b98a520fc077cc File paths obstructed by a non-regular file: 1 $ Extend a corresponding test case to cover this issue. ok tracey

stop using the term 'obstructed' ambiguously in the got.1 man page Specifically, obstructed files are versioned files which should be on disk but have been replaced on disk by a non-regular file (e.g. by a directory). The man page used the phrase "deletion was obstructed" which is unrelated to the above concept and can be expressed as "deletion was prevented" instead.

stop caring about obstructed versioned files in 'got merge' Tyring to write a test to cover this case I found that obstructed files are (correctly) detected as local modifications in the work tree. Thus they trigger the pre-condition check for local modications and 'got merge' will not even start to do any work in the presence of obstructed files.

plug memory leak in got_worktree_merge_in_progress(); spotted by tracey

add a test for 'got merge' which covers a no-op merge situation

add a 'got merge' command for creating merge commits Additional testing by Thomas Adam. ok tracey

show parent commit IDs of merge commits in the tog diff view ok tracey

update TODO note about HTTP; libtls will more likely be used from dial.c

fix 'got send' with tree objects which contain symlinks; reported by Omar

manpages: install .5 to correct location When installing man pages, split out .1 and .5 as they install to different paths.

compat: Makefile: add missing trailing backslash The uuid.c source file was missing a trailing backslash.

portable: add CHANGELOG Although there is already a CHANGES file, the CHANGELOG is used to indicate any -portable specific changes which have happened for that release. All version numbers in -portable correspond to their OpenBSD counterpart.

tog: make blame view work Fix the thread comparison with tog's blame view.

dist: rework files for distcheck Rather than having a toplevel EXTRA_DIST target in the toplevel file, move the relevant files to their own locations.

regress: port cmdline tests This commit introduces the 'make tests' target which will run the cmdline/* tests.

configure: bump version Follow the same version as got itself.

xmalloc: remove wrapper as no longer needed There is only one user which calls xrecallocarray: ibuf_realloc(). We already provide recallocarray() in the compat layer so ibuf_realloc() can simply call recallocarray() directly, as it does on OpenBSD. OK thomas.adam

sterror: use XPG version on GLIBC It looks like autoconf 2.69 will not provide XPG strerror_r even if the appropriate macros are set which request the XPG version. Until this is fixed in autoconf and that version is more widely-adopted, this approach will provide what's required. Originally from Stefan Sperling, tweaked by me.

autoconf: add wrapper script This adds a '' wrapper script for generating configure. README.portable is also updated accordingly.

regress: fix test failures using ln(1) GNU ln uses -T instead of -h for no-target-directory. OK thomas.adam

regress: fix test failures using date(1) This patch fixes test failures related the date(1) utility. In the long term we could add a wrapper function to detect valid options for date(1) and use the variant which works on the current OS. For now, this makes some tests pass and shows us where the problems are. OK thomas.adam

enable gotadmin Add gotadmin to, etc., so it can be built and installed. OK thomas.adam