Commit Briefs

ae7c1b7854 Stefan Sperling

add a gotd session process, split off from the parent process

The new session process is able to manipulate files in the repository and keeps track of the read/write client session state. The parent process now restricts its view of the filesystem to the absolute path stored in argv[0], and combines this with unveil "x" on this path. As a result the parent process can only re-exec itself. small tweaks + ok op@


75b17c2a7d Omar Polo

regress: strip trailing / from GOT_TEST_ROOT

otherwise most test fails because of double "/" ending in paths and tricking some check into thinking that's failed. ok jamsek stsp


34d80a0ff3 Omar Polo

regress: use `local' for some variables


6b37f13aa4 Mark Jamsek

add regress for 'got diff -d' and minor output fix

Ensure an actual file path is displayed in the 'got diff -d -c commit path ...' case when one of the specified paths is a deleted file. Prior to this, the unhelpful "/dev/null" label was shown instead. Includes some copypasta fixes noted by op. ok stsp@ op@


d8bacb9337 Mark Jamsek

got: minor refactor of got_pathlist_free() API

Accept flag parameter to optionally specify which pointers to free. This saves callers looping through the list to free pointers. ok + fix stsp@


9114dd4302 Mark Jamsek

fix uninitialised fildes variables in libexec helpers

Reviewed and uncovered as part of the diff in the forthcoming commit (pathlist API refactor). ok stsp@


a76e88e58f Mark Jamsek

got: expand diffstat -d option to 'got diff'

Like got log -d, add the switch to 'got diff' to display a diffstat of changes; as per stsp's suggestion, we always include diff output with the diffstat. Disabled in gotwebd (for now :) Includes tweaks from op@ ok stsp@


5dd8d22b08 Stefan Sperling

tweak a gotd regress test to cover incremental 'got fetch'

Previously the gotd tests were only running fresh clones.


3a975a9fcb Stefan Sperling

fix tempfile handling in gotd's got_object_raw_open()

There was a bug where we reused a file stored in *outfd from a previous call, resulting in a raw object backed by a file but with tempfile_idx -1. This then caused bad confusion during deltification. Fix this by passing tempfd to read_raw() functions and only setting *outfd in case it is actually required, and returning tempfd to the repository tempfile pool otherwise. ok tracey


dc07f76c4f Omar Polo

gotwebd: templateify gotweb_render_tag

ok tracey@


067396e611 Omar Polo

gotwebd: templateify gotweb_render_tags

ok tracey@


60c140aebb Stefan Sperling

use a caller-specified size limit for mapped files in got_object_raw_alloc()

Without this we end up being confused about whether a raw object has been mapped into memory, leading to crashes. ok op@


e98a81e685 Stefan Sperling

adjust a misleading error message in got_object_raw_alloc()

ok op@


95bdb85df1 Stefan Sperling

fix *size not being passed out of read_packed_object_raw()

ok op@


0b3f028dff Mark Jamsek

tog: add mutt-like =/* keymaps as home/end aliases

Also, separate g/G from home/end in the manual and runtime help text as only the former accept a prefixed count modifier. Based on initial diff from Mikhail. ok stsp@


243a8f150f Omar Polo

util/got-build-regress.sh: simplify lockfile cleanup

trap on EXIT too so the lockfile is deleted on quit (both successful and not.) While here simplify a cd too. ok stsp@


de9bfe5285 Omar Polo

util/got-build-regress.sh: switch from getopt(1) to getopts

ok stsp@



9b7f22a614 Stefan Sperling

call realpath() during early startup in gotd's parse.y

This ensures that all repositories exist when the process is first started. It will also help to avoid an "rpath" pledge promise in a future gotd which uses a separate session process, by avoiding realpath() calls while starting new processes.



49a1ae4b7f Stefan Sperling

fix 'got rebase' not detecting an out-of-date work tree in some cases

ok jamsek, op



1a99e0b409 Stefan Sperling

show from: and via: headers on consecutive lines in 'got log' and 'tog log'

ok jamsek


d651dcfa6f Mark Jamsek

add -d switch to log usage and sort lexicographically

patch by Josiah Frentsos


5763426aa3 Omar Polo

regress: replace echo \n with printf and heredoc

echo \n is not really portable. Not that it matters since the regress suite is already using non-POSIX features (like `local'). However, it's the only place using it and easy to fix. ok jamsek