Commit Briefs

Mark Jamsek

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


Stefan Sperling

fix occasional test failure in test_log_show_base_commit

Patch by jamsek with a request to commit. Thanks!


Stefan Sperling

prevent ncurses signal handlers from being installed while using mock-io

Aborting tog regress with Ctrl-C would trigger a "tty" pledge violation via the built-in ncurses handler for SIGINT, installed by newterm(). Install tog's own signal handlers earlier to fix this.



Stefan Sperling

load tog's worktree base commit marker in the log thread for startup speed

Walking the whole file index can take some time. Avoid delaying the perceived start-up time of tog by reading the file index in the background log thread. Problem pointed out by op@ with fixes from + ok jamsek


Mark Jamsek

tog: change base commit marker to the commit colour

The marker annotates the commit, so it makes more sense to visually tie it to the log message than the author. Patch by stsp, I just removed a block. ok stsp@


Mark Jamsek

tog: plug leak in cmd_log() error path

ok op@


Mark Jamsek

tog: show work tree base commit marker in log view

If tog is invoked in a work tree, prefix the base commit log message summary line with a '*' if the work tree is up-to-date, and with a '~' if the base commit is not up-to-date with respect to the branch tip or it contains mixed commits. While here, plug a couple worktree leaks in cmd_ref() and cmd_tree(). ok stsp@


Mark Jamsek

tog: add support for commit keywords

Allow keywords as arguments to options and operands for the blame, diff, log, and tree commands. Also, return 1 when exiting tog with error rather than 0 so regress can discern success from failure. ok stsp@


Stefan Sperling

use a separate .cvg meta data directory for cvg(1) work trees

This prevents mixing the use of got and cvg clients in the same work tree. Avoids confusion going forward while cvg differentiates itself further. tog(1) and gotadmin(1) remain compatible with both work tree formats. These tools only read work trees to locate the corresponding repository.


Mark Jamsek

tog: fix double-free in blame view error path

open_diff_view() has already called view_close() on error. Patch by Josiah Frentsos.


Tracey Emery

Fix for cc1: warnings being treated as errors

/home/got/src/got/tog/tog.c: In function 'draw_tree_entries': /home/got/src/got/tog/tog.c:7307: warning: comparisons like X<=3DY<=3DZ do = not have their mathematical meaning


Omar Polo

avoid strlen in for(;;)

ok jamsek, stsp


Omar Polo

got, tog: correctly skip HEAD in build_refs_str()

s[strlen(s)] == '\0' is banally always true, the intent was to not skip refs that starts with "HEAD". style nit / ok stsp@


Stefan Sperling

fix refs_str memory leaks

Pointed out by op@


Stefan Sperling

rework how reference labels are rendered in the tog log view

Draw reference labels and log message as separate strings. The previous code contained calculations mixing variables which represent an amount of wide characters in a string vs the display width of the string. We can avoid such nonsense by keeping the strings separate, though we have to be a bit careful about keeping horizontal scrolling intact. Also fix a bug where we failed to account for reference labels while setting view->maxx which made the $ key not scroll far enough. ok op@


Omar Polo

typo: character -> characters


Stefan Sperling

stop showing backup references in the tog log and diff views

Backup references clutter the log view too much now that we display labels next to commit messages. They were accidentally added to the log and diffs view by me, via build_refs_str(), when support for listing backup references was added to the ref view.


Stefan Sperling

fix 'tog log' display regression with long reference lists

When the terminal becomes smaller horizontally we did not properly account for remaining columns and the log message of a commit could overflow into the next line, garbling the display.



Omar Polo

tog: fix segfault in draw_commit

build_refs_str() can succeed returning a NULL string if a commit has some refs pointing to it but that were all filtered out, resulting in a NULL-deref. ok stsp@


Omar Polo

simplify previous; avoid temporary string

blind ok stsp@


Stefan Sperling

show reference labels next to commit messages in tog log view

requested by mpi@ ok op@


Mark Jamsek

tog regress: TAB instruction + test for diff J keymap

Add the TAB instruction to the test harness, and a test case for the previous commit: scroll down the log from the diff view with the J keymap when on the last loaded commit. ok stsp@


Mark Jamsek

tog: resize log view if toggling fullscreen from child view

We call resize_log_view() when toggling 'F'ullscreen from the log view, but forgot to do this when toggling fullscreen from a child view if its parent is the log view. This fixes a bug that prevents scrolling down the log view from the diff view with the J keymap if already on the last loaded commit. Regress test in the following commit. ok stsp@