"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Christian Weisgerber <naddy@mips.inka.de>
Subject:
Re: tog ref -> log -> diff: < > fails to follow branch
To:
gameoftrees@openbsd.org
Date:
Fri, 4 Dec 2020 13:19:33 +0100

Download raw body.

Thread
Christian Weisgerber:

> By picking a branch in tog ref, and then opening a log view, you
> can view the commits on that branch.  But if you open a diff view
> from there, '<' and '>' for moving to a younger/older commit will
> not stay on the branch.

Not sure what I saw there, but that's not quite what happens now.

Anyway, '<' and '>' in the diff view are broken and it has nothing
to do with branches.  You can move by one entry in a direction, and
you can move back and forth between the new and old entry, but any
further movement blocks.

tog log -> diff                     ok
tog ref -> log -> diff              broken
tog ref -> tree -> log -> diff      ok

If you use a wide terminal, it's more obvious: '<' and '>' work
when a log and diff view share a split screen.

input_diff_view() does

                ls = &s->log_view->state.log;
                entry = TAILQ_PREV(ls->selected_entry,
                    commit_queue_head, entry);
		err = input_log_view(NULL, NULL, s->log_view, KEY_UP);

and something analogous for the other direction.  The problem is
that input_log_view() only sets ls->selected.  ls->selected_entry
is not advanced.  That only happens in draw_commits().  If the log
view isn't shown, the commit queue can't be traversed.

-- 
Christian "naddy" Weisgerber                          naddy@mips.inka.de