Commits


portable: release 0.107


portable: cvg add got_compat.h Needed to compile most things on -portable.


check for errors from telldir(3); suggested by jamsek


make 'got import' output independent of readdir(3) entry order ok jamsek


add a TODO item for 'gotadmin cleanup'


make seq(1) invocations in test_log_commit_keywords() portable The OpenBSD version of seq defaults to an increment value of -1 here. On Debian we have to set the increment value to -1 explicitly. Otherwise, seq produces no output at all and the test fails.


add more info about the test suite to README.portable Prompted by questions from Johannes Kastl.


portable: remove portably-defined headers These has to be looked for portably. <sys/tree.h> recently reappeared due to TAILQ -> RB_* changes upstream.


portable: define HAVE_TREE_H if libbsd found When using libbsd, ensure that we define HAVE_TREE_H; this means libbsd's <sys/tree.h> is used over the compat version which stops redefinition warnings from libbsd.


style(9): sort got-build-regress.sh getopts cases; ok stsp


style(9) whitespace: don't indent got-build-regress.sh cases ok stsp@


util/got-build-regress.sh: add missing 'W' to optstring ok stsp@


tog: don't clobber error with got_repo_close() error While here, style(9) the adjacent block: remove function call from initializer. ok stsp@


tog: clamp selected idx to avoid showing negative indexes In the rare case views are smaller in height than the first line number after the view's header lines (i.e., [2,5] depending on the view), we can decrement the selected entry index into negative values; clamp it to 0. Add a log view test case covering this path by opening a child tree view and toggling fullscreen. ok stsp@


fix NULL deref when scrolling small tog tree views down In the rare case a tree view is smaller than four lines in height, the last_displayed_entry is NULL. Check this condition on a scroll down event with j/down arrow or ^f/pgdn to guard a NULL got_tree_entry from being passed to got_tree_entry_get_next() where it is dereferenced. And add a test case covering this path. ok stsp@


tog: don't mark incorrect base commit in nested log views If a nested log view is opened, don't reuse the work tree's base commit index from the initial `tog log` invocation because it is based on the initial commit queue. If it has become invalid, an incorrect log view commit entry is painted with the base commit marker. Reset the index whenever opening nested log views so that it is recomputed, and write a regression test to cover this case. ok stsp@


regress/tog: ref view coverage of tag references Test for the error case when selecting tags that point to non-commit objects. And test the valid case of selecting nested tags that resolve to commit objects. ok stsp@


regress/tog: add basic ref view tests; ok stsp@


tog: make ref view selection of non-commit tags non-fatal Tags can point to all git objects: commits, trees, blobs, and tags. Selecting a tag that points to any object other than a commit causes a fatal error. Instead, report a message to the status line. Similarly, nested tags may resolve to a commit, which currently errors. Instead, keep peeling till we reach the bottom and if it's a commit, use it for the requested view. ok stsp@


tog: plug object id leak in resolve_reflist_entry error path ok stsp@


skip memleak_send_basic in sha256 mode, it's expected to fail in that case


tog: fix log view race condition evinced by regress When the commit graph has been traversed, we set the log_complete flag to signal the main thread that we've completed iterating commit history, which request_log_commits() checks and, if set, returns early instead of calling trigger_log_thread(). If called, trigger_log_thread() wakes the log thread, then waits on the log thread to unblock when another commit has been loaded. There's a race between the log thread setting the log_complete flag and request_log_commits() checking it, which causes trigger_load_thread() to wait on a signal that never unblocks because there are no more commits to be loaded. ok stsp@


regress/tog: log view test for T keymap on worktree entry Coverage for the case fixed in 74bea526c5. ok stsp@


fix NULL deref with T keymap on log view worktree entry When the log view T keymap is used, the selected_entry is passed to browse_commit_tree() to open a tree view of the repository as at the selected commit, which passes the selected_entry->id member to open_tree_view() to open the commit. The id member, which is a NULL pointer in work tree entries, is dereferenced so we segfault. If the T keymap is used on a work tree entry, use the base commit id instead, which we must have if a work tree entry is selected. ok stsp@


bump version number