Commit Briefs

bfd61697d2 Stefan Sperling

make tog avoid got_repo_map_path() if a work tree is available

ok naddy


276b94a1f9 Christian Weisgerber

Call pthread_cond_destroy(cond) exactly once when closing a view.

This moves the pthread_cond_destroy(need_commits) from stop_log_thread(), which can be called twice, to close_log_view(), which is called once. It also destroys the commit_loaded condition variable, which is created in open_log_view() but was never destroyed. ok stsp


41605754d0 Stefan Sperling

highlight matched search terms in tog diff and tog blame views

ok naddy@


135a2da0c5 Stefan Sperling

show current/total line numbers in tog's diff view header


e54cc94af2 Stefan Sperling

plug two memory leaks in tog's draw_file()


fe621944e8 Stefan Sperling

merge new diff implementation from the git.gameoftrees.org diff.git repository

This new diff implementation was started by Neels Hofmeyr during the u2k20 hackathon and now replaces diffreg.c code lifted from the OpenBSD base system. The integration of this code into Got was done by me. Got now uses the patience diff algorithm by default. The diff.git repository will remain the primary repository for the diff code, which already compiles and runs on other operating systems such as Linux. Any fixes and improvements for files inherited from the diff.git repository should be written against that repository and synced to got.git afterwards.


62d463cac1 Christian Weisgerber

indentation fixes


74cfe85e39 Stefan Sperling

use got_path_dirname() in tog's input_log_view(); avoids const dirname(3)

ok naddy


6879ba4225 Christian Weisgerber

do not treat the -h and -V flags as errors

When run with the -h or -V option, output the help or version text to stdout and exit with success (0). Only write usage and help information to stderr and exit with error (1) if there is a mistake in the command syntax. tweak and ok stsp


9814e6a376 Christian Weisgerber

prefer the BSD extension to reset getopt over the GNU one

Sadly there is no portable way to reset getopt(3). BSD: optind = 1; optreset = 1; GNU: optind = 0; ok stsp


48cae60d0a Stefan Sperling

make dangling symbolic references show up in 'got ref -l'

Storing a resolved ID for each reference list item was a bad idea. This ID cannot be resolved if a symbolic references points to a reference which does not exist. Such symrefs were skipped by got ref -l as a result. Just let users of reference lists resolve the IDs as needed.


b46c1e045a Christian Weisgerber

Print newline to clear the bottom line when tog exits.

When a curses(3)-based application exits, the cursor is positioned at the start of the bottom line, and the shell will issue the new prompt there. However, the bottom line may still contain remnants of the curses screen. This is only noticeable on terminals that do not switch to/from an alternate screen buffer. ok stsp


ae6a69782e Stefan Sperling

speed up 'tog diff' get_filestream_info() a bit

With this, 'tog diff' is able to display clang 10 commits. However, such huge diffs still take a rather long time to open. get_filestream_info() is a hack. Ideally, diff line-offset information needed by tog should be part of the result of the diff operation, rather than forcing tog to calculate line offsets during a post-processing step.



0dc7faa9e4 Stefan Sperling

fix double-free when quitting tog's diff view; found by ofree

at /home/stsp/src/got/tog/tog.c:3415 3415 free(s->line_offsets); (gdb) bt msg=0x80e2a4cd87e "chunk is already free %p") at /usr/src/lib/libc/stdlib/malloc.c:300 check=1) at /usr/src/lib/libc/stdlib/malloc.c:1070 clear=0, check=<optimized out>, argsz=0) at /usr/src/lib/libc/stdlib/malloc.c:1431 at /usr/src/lib/libc/stdlib/malloc.c:1488 at /home/stsp/src/got/tog/tog.c:3415 at /home/stsp/src/got/tog/tog.c:518 at /home/stsp/src/got/tog/tog.c:954 at /home/stsp/src/got/tog/tog.c:2728 at /home/stsp/src/got/tog/tog.c:5683 (gdb)


369eef86a8 Tracey Emery

fix some memory leaks in tog



0587e10c4c Stefan Sperling

add symlink support to 'got blame' and 'tog blame'



0208f20830 Stefan Sperling

show a list of paths changed in a commit with 'got log -P', and in tog

requested by matthieu@


79cc719fb2 Stefan Sperling

filter out "remote/*/HEAD" references in tog log view