Commit Briefs

c282f7879b Thomas Adam

document the S key in tog's online help screen


51b7e1c33f Thomas Adam

tog: plug tog_view structure leak on open_*_view() error

ok stsp@


1d98034bec Thomas Adam

release tog_io regress mock term resources in main()

ok stsp@


557d336579 Thomas Adam

make tog regress run with pledge active

ok jamsek


b85a34968b Thomas Adam

tog: implement automated test harness

Add framework for scripting tog tests by capturing screen dumps to compare with expected output. Includes some preliminary log view tests but lots more tests are needed to cover diff, blame, tree, ref, and help views. ok stsp@


7303e8c811 Thomas Adam

tog: resume blame and diff search from the first line

In diff and blame views, if the user scrolls up during a search, resume search from the first displayed line--not the current match. This makes sense in these views as the "cursor" or current line is the first line. Patch by Mikhail. ok op@


4fccd2fe0f Thomas Adam

portable: configure: split out dependencies

Rather than assume all dependencies are required for all programs, split them out. This will make packaging easier, as well as splitting the code to use subprojects. Note that due to the use of config.h semantics, in most cases the got_compat.h header file is now at the top of the .c file it is included in, so that it can handle the system header inclusion properly.


98670ba726 Thomas Adam

portable: rework SHA detection

Simply the SHA detection by not predicating on libcrypto, but instead checking individual header files.


4680f70435 Thomas Adam

portable: remove sha1.h; found portably

Remove sha1.h as this is found portably across systems.


588a8092bc Thomas Adam

include sha2.h too where sha1.h is included

In preparation for wide sha256 support; stsp@ agrees. Change done mechanically with find . -iname \*.[cy] -exec sam {} + X ,x/<sha1\.h>/i/\n#include <sha2.h>


9382c10a8a Thomas Adam

fix tog diff between arbitrary commits

Don't assume commit info is always written. This is only true when diffing a commit against (one of) its direct parent(s). Otherwise we perform an invalid read on a tmp got_diff_line array and end up passing bogus offsets to fseeko(). Bug found and fixed by stsp with a minor tweak by me. ok jamsek for stsp's initial diff ok stsp@


a0abeae541 Thomas Adam

got/tog/gotadmin: pledge earlier

In the case of tog move setlocale(3) before pledge(2), as suggested by stsp. ok stsp@


f54d892e4b Thomas Adam

tog: reset 1 second refresh rate after starting search

This fixes an issue reported by Mikhail where CPU usage continuously increases if search is started after the refresh rate has dropped from 100ms to 1s by resetting the 1s refresh rate if search is started after fast initialisation has finished. This is not needed in limit_log_view() because the 1s refresh rate is reset in draw_commits() once the screen is redrawn (i.e., commits_needed == 0). Tested by and based on initial patch from Mikhail. ok stsp@


c72de8ab0d Thomas Adam

tog: add horizontal scroll support to the tree view

Suggested by op. tog now supports hscroll in all views so move corresponding keymap docs in tog(1) to global space (this was already the case in tog runtime help). While here, remove some copypasta with a new subroutine to handle hscroll input. ok op@ and stsp@


66a70b97af Thomas Adam

tog: add horizontal scroll support to the ref view

ok op@ and stsp@


5c3a0a1a77 Thomas Adam

fix OB1 in tog ref and tree views causing wrapped lines

While here, draw to the last column in tog help. ok op@ and stsp@


6ec3d39ca0 Thomas Adam

don't print empty line when exiting tog

Reported and tested by dv: rather than print a new line to avoid clobbering the shell prompt when exiting tog with the alternate screen buffer disabled^, adopt naddy's vi(1) solution by looping through visible views to delete the topmost line, which inserts an empty line at the bottom so we don't need to print an empty line to ensure a clean prompt. ^: xterm -xrm 'XTerm*titeInhibit: 1' or run tog in the console ok naddy@


f2d06bef0f Thomas Adam

tog: display action report on user toggleable event

If the diff algorithm, ignore whitespace-only changes, force ASCII text diff, show committer/author, or reference sort order keymaps are toggled, report action to the bottom left of screen. Based on initial patch by Mikhail. ok + tweaks op@


b185e03310 Thomas Adam

tog: fix typo that makes condition always false

In view_loop(), we initialise at a refresh rate of one tenth per second before dropping to one second updates; the reduction was never hit due to the typo. Reviewed as part of the following diff adding action reports to user events. ok op@


be97ab03ef Thomas Adam

refactor got log -d and tog diffstat to compute diff once

This eliminates the previous performance cost by making 'got log -d' and tog diff view compute the diffstat while building the diff in a temp file like we do with 'got diff -d'. Also, keep the current 'got log -d' UI as per stsp's suggestion. ok stsp@


5c24b9c1a4 Thomas Adam

don't use plural noun after 1 in diffstat total

Use singular form when appropriate; for example, turn the top into the bottom: 1 file changed, 1 insertions(+), 1 deletions(-) 1 file changed, 1 insertion(+), 1 deletion(-) ok op@


0e762e67ce Thomas Adam

tog: fix {first,last}_displayed_line dead store

Both are already assigned just above in open_diff_view() ok op@


1a0805676b Thomas Adam

typo: zap double semi-colon


21c2d8be42 Thomas Adam

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@


53d03f970a Thomas Adam

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@