Commit Briefs

Stefan Sperling

Add a refs argument to got_repo_match_object_id(), replacing 'resolve_tags'

Make use of this where possible to avoid re-reading references from disk. ok naddy


Stefan Sperling

switch tog ref view to the global reference list as well

ok naddy



Stefan Sperling

make use of reflist object id maps in tog log and diff views

This is a partial fix for performance issues when browsing the FreeBSD Git repo, which can easily contain more than 4000 references. ok naddy


Stefan Sperling

do not mix up repositories if tog's -r option is used inside a work tree

with input from and ok naddy


Stefan Sperling

use size_t for loop indices to avoid signedness warnings; by emaste@freebsd

Same change as 16aeacf7088d, for subdirectories other than lib/


Christian Weisgerber

replace unprintable characters with '.' before passing them to curses

Otherwise, ncurses will replace them with some printable representation whose width we can't predict, and wunctrl() fails to return the replacement for 0x80..0x9f. ok stsp


Christian Weisgerber

reset tog blame view's scroll position if line count shrinks too much

ok stsp


Christian Weisgerber

accommodate newer ncurses where panel_userptr() returns a const pointer

ok stsp


Stefan Sperling

use getline(3) instead of fparseln(3) in tog, for better portability

ok millert


Stefan Sperling

fix display of lines that end in "\r\n" in tog(1)

Problem found and reported by jrick ok naddy



Christian Weisgerber

miscellaneous minor style issues



Christian Weisgerber

pass the thread_args struct to queue_commits() and trim the parameter list

ok stsp



Stefan Sperling

move the ref view's selection cursor up if the terminal shrinks too much

bug found by naddy ok naddy


Stefan Sperling

send resize events to tog child views as well as parent views

problem found by naddy ok naddy


Stefan Sperling

fix crashes when the 'tog log' view reloads displayed data

This reimplements log view reloading (Ctrl-L), logging of a parent path (Backspace), and the toggle to show commits on branches (B). The idea is to reuse the existing log view and change its state, instead of allocating a new view with a new state and replacing the existing view. Fixes a segfault that occurs when a parent path is logged with Backspace: tog tree -r got.git -c 0.44 pick tog/tog.c 'l' Backspace -> tog will segfault The first change in this patch is a partial fix. The log thread should always check the 'quit' flag as soon as it wakes from sleep. Otherwise it could try to load more commits after waking up and before checking the 'quit' flag. It will then attempt to load commits with a NULL commit graph pointer. This partial fix by itself is not sufficient to fix the crash, since we'll now see a bus error in the main thread, instead of a NULL deref in the log thread. The remainder of the patch fixes this bus error. ok naddy



Stefan Sperling

make tog tree view keep track of branches/tags specified via -c

ok naddy


Stefan Sperling

make ^L in the tog log view stick to branches/tags selected via the -c option

Previously, the log view would remember the branch of the work tree in which tog was started, and jump back to that branch upon ^L even if a different branch was requested via -c. ok naddy


Stefan Sperling

do not recompute the displayed diff if '<' or '>' command cannot advance

Recomputing a diff can take time. Only do it if a different commit is going to be displayed.


Stefan Sperling

garbage-collect pointless main_view variable in view_loop()

This short-cut is not necessary and was buggy: The pointer was not updated even if the main view had changed. Removing this code fixes a problem on FreeBSD where pressing 'q' in a child view caused tog to exit. ok naddy


Christian Weisgerber

fix move to next/prev commit in diff view when the log view is not displayed

Original analysis and final tweak by yours truly, all the hard work of fixing the program logic by stsp. ok stsp