tog/tog.c


Log

Author Commit Date CI Message
Stefan Sperling 5a8b5076 2020-12-05T16:58:37 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 fb59748f 2020-12-05T16:58:37 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 2b779855 2020-12-05T16:19:55 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
Stefan Sperling ee756517 2020-12-05T13:12:32 pass reference name along when a log view is opened from a ref view ok naddy
Stefan Sperling e78dc838 2020-12-04T23:27:22 replace 'focus_view' output param of view_input with 'view->focussed'
Stefan Sperling 4010e238 2020-12-04T23:27:05 make tog call pledge(2) directly in main() instead of per-command All of tog's pledges are currently the same, and they must be the same because tog allows switching between available command views at run-time. ok tracey
Stefan Sperling 9970f7fc 2020-12-03T23:23:30 replace dead_view pointer in view_loop() with 'dying' flag in struct tog_view ok naddy
Stefan Sperling 72a9cb46 2020-12-03T22:13:20 tog's view_set_child() never returned an error; simplify accordingly ok naddy
Stefan Sperling acdafe9c 2020-12-03T19:25:08 remove redundant "child_focussed" variable from struct tog_view ok naddy
Christian Weisgerber 0bf7f153 2020-12-02T14:30:34 tog's log view needs to request more commits when the window expands ok stsp
Christian Weisgerber 3e135950 2020-12-01T23:50:40 pass only the view state to scroll functions that don't need the full view ok stsp
Christian Weisgerber 42a2230c 2020-12-01T22:54:25 reverse tree_view_visit_subtree() parameters for consistency ok stsp
Christian Weisgerber d91faf3b 2020-12-01T22:53:48 trim repo parameter from tree_view_walk_path(), already set by open_tree_view() ok stsp
Christian Weisgerber d86d3b18 2020-12-01T22:52:56 trim redundant and used parameters from draw_tree_entries() ok stsp
Christian Weisgerber 4f7c3e5e 2020-12-01T22:52:18 trim redundant parameters from draw_blame() ok stsp
Christian Weisgerber 89f1a395 2020-12-01T22:51:37 trim redundant parameters from draw_file() ok stsp
Christian Weisgerber 8fdc79fe 2020-12-01T22:50:35 trim redundant and unused parameters from draw_commits() and draw_commit() ok stsp
Christian Weisgerber a5388363 2020-12-01T22:06:20 trim redundant and unused parameters from run_blame() ok stsp
Christian Weisgerber ffe38506 2020-12-01T22:05:10 trim redundant parameters from log_scroll_* and trigger_log_thread functions Also rename scroll_{up,down} to log_scroll_{up,down}; requested by stsp. ok stsp
Christian Weisgerber 694d3271 2020-12-01T14:53:55 trim redundant parameters from {ref,tree}_scroll_{up,down} functions Pass only the view and scroll amount to these functions; remove unused parameters and those that are contained in the view state. ok stsp
Stefan Sperling 34ba6917 2020-11-30T00:13:22 fix page-up/down in 'tog ref' view; ok naddy
Stefan Sperling fa86c4bf 2020-11-29T21:53:49 fix page-down/page-up scrolling in the tog tree view problem reported by, fixed with lots of help from, and ok naddy
Stefan Sperling 152c1c93 2020-11-29T14:21:55 tog: make it possible to open a ref view from the tree view
Christian Weisgerber 9a1d5146 2020-11-27T15:46:36 fix entry selection when moving to the parent in tog's tree view The tree view attempts to keep the scroll position of an already visited parent directory intact. If we start out by viewing a subtree and then move up, the scroll position of the parent isn't actually available since the parent tree was never nagivated by the user. In this case tree_view_walk_path() has to fill in some values. The only parent entry we know about in this case is the one which was traversed to reach the child. The best we can do is to lock the parent's scroll position such that the traversed child entry appears at the top of the list if moving up to the parent's view. If we then navigate down again and return, the parent's scroll position will start to be retained and restored properly. Analysis and draft patch by stsp, initial report and simpler fix by yours truly. ok stsp
Christian Weisgerber e99e2d15 2020-11-24T22:38:29 let tog's tree and ref commands call their own usage() and not each other's
Stefan Sperling c42c9805 2020-11-24T22:17:55 support opening a tree view from the ref view; requested by naddy
Stefan Sperling f2f6d207 2020-11-24T22:17:54 trigger log thread if a log view is opened as a child view; found by naddy
Stefan Sperling a1b77402 2020-11-24T22:17:54 fix calls to ref_usage(); found by naddy
Stefan Sperling 6458efa5 2020-11-24T22:17:54 initial 'tog ref' implementation ok naddy tracey
Stefan Sperling 78756c87 2020-11-24T21:25:40 store reflists in view state where required and get rid of reflist pointers ok tracey naddy
Stefan Sperling 3dbaef42 2020-11-24T15:52:41 make 'tog diff' accept reference and tag arguments; add -w and -C options ok naddy tracey
Stefan Sperling 27829c9e 2020-11-21T13:41:51 reset tog diff view's scroll position if diff context shrinks too much
Stefan Sperling 64453f7e 2020-11-21T13:35:00 handle binary files in got/tog diff commands; add -a options to force text
Stefan Sperling be659d10 2020-11-18T17:18:23 fix type of filesize output parameter of got_object_blob_dump_to_file()
Stefan Sperling 8fa913ec 2020-11-14T13:19:18 remove now pointless 'check_disk' parameter of got_repo_map_path() suggested by naddy
Stefan Sperling bfd61697 2020-11-14T13:11:34 make tog avoid got_repo_map_path() if a work tree is available ok naddy
Christian Weisgerber 276b94a1 2020-11-13T21:09:10 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
Stefan Sperling 41605754 2020-11-12T18:54:38 highlight matched search terms in tog diff and tog blame views ok naddy@
Stefan Sperling 135a2da0 2020-11-11T00:35:23 show current/total line numbers in tog's diff view header
Stefan Sperling e54cc94a 2020-11-11T00:34:59 plug two memory leaks in tog's draw_file()
Stefan Sperling fe621944 2020-11-10T22:54:37 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.
Christian Weisgerber 62d463ca 2020-10-20T22:43:59 indentation fixes
Stefan Sperling 74cfe85e 2020-10-20T21:09:01 use got_path_dirname() in tog's input_log_view(); avoids const dirname(3) ok naddy
Christian Weisgerber 6879ba42 2020-10-01T15:15:22 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
Christian Weisgerber 9814e6a3 2020-09-27T14:55:18 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
Stefan Sperling 48cae60d 2020-09-22T00:03:02 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.
Christian Weisgerber b46c1e04 2020-09-20T22:22:04 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
Stefan Sperling ae6a6978 2020-08-09T21:56:11 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.
Stefan Sperling 7510f233 2020-08-09T20:37:53 simplify resource cleanup upon errors in get_filestream_info()
Stefan Sperling 0dc7faa9 2020-08-09T20:33:12 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)
Tracey Emery 369eef86 2020-08-09T17:41:46 fix some memory leaks in tog
Stefan Sperling 528c17dd 2020-07-31T13:01:24 use a more precise regex for color-highlighting 'commit' lines in 'tog log'
Stefan Sperling 0587e10c 2020-07-23T14:21:28 add symlink support to 'got blame' and 'tog blame'
Stefan Sperling 0d6c6ee3 2020-05-20T17:37:29 make 'got/tog tree' show symlink targets like 'ls -lF' does: link@ -> target
Stefan Sperling 0208f208 2020-05-05T09:53:57 show a list of paths changed in a commit with 'got log -P', and in tog requested by matthieu@
Stefan Sperling 79cc719f 2020-04-24T16:31:55 filter out "remote/*/HEAD" references in tog log view
Stefan Sperling d2ad595c 2020-04-09T10:48:58 fix "searching..." displayed in tog log view while merely scrolling down
Stefan Sperling f9686aa5 2020-03-27T09:35:53 show 'searching...' during 'tog log' search even if no new commits are loaded
Stefan Sperling f9967bca 2020-03-27T09:21:24 display "no matches found" if no commit matches a 'tog log' search
Stefan Sperling 8f4ed634 2020-03-26T20:40:55 display "no more matches" indicator if 'tog log' search cannot find any
Stefan Sperling 7c1452c1 2020-03-26T17:14:23 make 'tog log' consistently scroll one page upon page-down key (found by naddy)
Christian Weisgerber 1831ac02 2020-03-23T16:39:24 Subtract the status line from the number of lines to page up/down in the log view. ok stsp@
Stefan Sperling ee85c5e8 2020-02-29T11:13:12 map 'tog path' to 'tog log path' if possible; requested by mpi@
Stefan Sperling a2f4a359 2020-02-28T19:37:37 properly free cmd_argv in tog's main() function
Stefan Sperling dfd6c250 2020-02-28T19:36:57 fix typo in comment; found by mpi@
Christian Weisgerber 09b5bff8 2020-02-23T16:28:39 switch "tog diff" repository path argument to a new -r option
Christian Weisgerber a273ac94 2020-02-23T16:28:39 fix "tog diff object1 object2" by actually extracting the repository path from the work tree
Christian Weisgerber ea025d1d 2020-02-22T20:29:17 add ^B/^F key bindings for page up/down in the "blame" and "tree" views
Stefan Sperling 6962eb72 2020-02-20T15:11:59 unify formatting of common code in tog log, blame, and tree
Stefan Sperling e4a0e26d 2020-02-20T15:08:56 prevent possible double-free introduced in previous commit
Stefan Sperling 55cccc34 2020-02-20T14:58:02 add an optional path argument to 'tog tree'
Stefan Sperling f135c941 2020-02-20T14:58:02 use a common helper function to get the path from argv in tog log and blame
Stefan Sperling cb1159f8 2020-02-19T13:41:31 fix misplaced tog search prompt in split-screen views
Stefan Sperling bb63914a 2020-02-17T21:57:56 make tmp dir location a compile-time setting and change gotweb's tmp dir We are not sure whether a gotweb package can own /var/www/tmp on OpenBSD. Moving gotweb's tmp dir to /var/www/got/tmp sidesteps that issue.
Stefan Sperling 74283ab8 2020-02-07T18:02:57 switch 'tog tree' repository path argument to a new -r option
Stefan Sperling a0975128 2020-02-07T11:02:00 fix 'got blame' and 'tog blame' on files added on worktree's current branch
Stefan Sperling 82954512 2020-02-03T18:10:18 revert 6b8a2b8fcd99c4365b1aa9513c0f0149beac2491; it broke 'n' (search next) In the log view, 'n' sometimes failed to search for the next matching commit and tog dead-locked. So a yield or mutex unlock/lock is required for search to work. Perhaps we need a different fix?
Tracey Emery f5404e4e 2020-02-02T17:35:10 replace improperly removed break
Tracey Emery 3ffacbe1 2020-02-02T17:10:40 goto done and remove erroneous break
Tracey Emery f44b1f58 2020-02-02T16:56:40 enable searching in tog diff view ok stsp
Tracey Emery 5465d566 2020-02-01T17:32:31 prepare local variable in open_diff_view and close_diff_view for diff view searching ok stsp
Stefan Sperling f43793a4 2020-01-27T22:14:23 fix a bug where 'got log PATH' failed to map PATH into the repository The problem occured inside /usr/src/sys due to the /sys symlink, where /usr/src was a got work tree. If a work tree is present we already have the right path so checking the disk is pointless.
Stefan Sperling b672a97a 2020-01-27T18:36:37 make 'tog log' show first-parent history by default; add -b option and B key
Stefan Sperling 91b8c405 2020-01-25T11:41:24 tweak default colors for directories and symlinks in 'tog tree'
Martin Pieuchot b55e96cf 2020-01-19T14:35:58 Remove redundant error check after got_object_id_by_path(). An error code is always returned when the oid is NULL.
Martin Pieuchot a93813fa 2020-01-19T14:18:07 Remove double lock in error path.
Martin Pieuchot 6b8a2b8f 2020-01-19T13:46:59 Remove unnecessary pthread_yield(3). In the two cases a context switch isn't necessary as the thread isn't blocked and doesn't need to wait for its sibling.
Stefan Sperling 71a27632 2020-01-15T19:26:49 move match_object_id() into the library; supersedes got_repo_resolve_commit_arg
Stefan Sperling 7a1d6b72 2020-01-15T19:10:46 fix 'tog log -c' with tags
Stefan Sperling 61266923 2020-01-14T18:44:19 fix suspending and resuming tog with Ctrl-Z and fg; issue reported by naddy@
Stefan Sperling f13374f4 2020-01-14T14:28:08 fix 'tog tree' usage displayed in error case (patch by naddy@)
Stefan Sperling 6586ea88 2020-01-13T16:12:32 unbreak got and tog commands by disabling GNU extensions in getopt_long(3)
Stefan Sperling e801a566 2020-01-13T16:01:04 update usage
Stefan Sperling 83cd27f8 2020-01-13T15:59:47 make got and tog accept a --version argument; -V option is a bit obscure prompted by a question from tedu@
Stefan Sperling c5b78334 2020-01-12T20:40:31 make 'tog log PATH' fail again when a non-existent path is specified
Stefan Sperling 33cbf02b 2020-01-12T17:10:45 fix switching to tog's tree view when logging a path; reported by naddy@
Stefan Sperling 5aa81393 2020-01-06T19:38:23 add copyright year for files already touched in 2020
Stefan Sperling 3d509237 2020-01-04T18:25:28 simplify got_commit_graph_open()
Stefan Sperling ee780d5c 2020-01-04T15:44:13 remove GOT_ERR_ITER_NEED_MORE; the commit graph now fetches internally instead
Stefan Sperling 6db9f7f6 2019-12-10T11:42:22 always show numeric dates in ISO-8601/xkcd-1179 format ok millert tracey sthen