Commits


rename got_commit_graph_iter_start() to got_commit_graph_bfsort() This function begins a breadth-first traversal. The new name makes it easier to distinguish from got_commit_graph_toposort().


ensure tmp file is closed and fix UB in diff error path As reported by op, we fail to close a tmp file in some diff failure case. Also spotted by op and stsp, set FILE pointer to NULL after fclose(3) failure so we no longer attempt to access the stream or close it again in close_diff_view(). fix plus ok op@ and stsp@


plug leak of commit object in 'tog diff' error path tweaked by + ok op@


tog: plug object id leak in diff view; ok op@


tog: plug commit object leak in 'tog tree'; ok op@


tog: plug colors memleak in log view; ok op@


make 'tog diff' release the work tree lock earlier Avoids 'work tree is already locked' errors from got commands while the 'tog diff' command remains running.


tog: make patience the default diff algorithm As discussed on IRC. It makes nicer diffs and the performance hit should only be noticeable with the odd large diff. It might also be a motivator in trying to speed up the patience implementation. ok stsp@


tog: add basic regress for log limit and log search This required minor changes to tog.c to teach tog the new test instructions and feed it search terms when driven by the harness. More is needed for these features but this provides some basic coverage for the & and / log keymaps. ok stsp


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.


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


fix occasional test failure in test_log_show_base_commit Patch by jamsek with a request to commit. Thanks!


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.


add cancellation support to the mixed-commits checker in worktree.c


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


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@


tog: plug leak in cmd_log() error path ok op@


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@


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@


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.


tog: fix double-free in blame view error path open_diff_view() has already called view_close() on error. Patch by Josiah Frentsos.


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


avoid strlen in for(;;) ok jamsek, stsp


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@