Thread (18 messages) 18 messages, 4 authors, 2021-06-25

Re: [PATCH] branch: make -v useful

flat view

From: Jeff King <hidden>
Date: 2021-06-05 22:35:38

On Sat, Jun 05, 2021 at 10:18:14PM +0200, Ævar Arnfjörð Bjarmason wrote:
As for the proposal, I don't use "branch -v" all that much much, so I
don't have strong knee-jerk feelings on it, but just considering it now
I'd think that the current default is a fundamentally better
approximation of what most users would like as a default.

I.e. I think it's fair to say that to the extent that most users have
topic branches they're part of some pull-request workflow where they're
always tracking the one upstream they always care about, usually
origin/master.
I'm in the same boat. I don't use "branch -v" either, but showing the
upstream name wouldn't be at all helpful to me, since it they would all
just be "origin/master". (This will vary based on workflow, but the
other common workflow would probably just show "topic" being based on
"origin/topic").
The -v output showing the ahead/behind relationship to that branch
without naming it is thus the best use of the limited space we have, and
with a bit more verbosity under -vv we'd show the (usually the same for
all of those) upstream name.
The notion of what to show for a verbose format may depend on workflow,
or even what the user's currently interested in. These days we have
--format to give much more flexible output.

The "-v" and "-vv" options predate --format, but these days are
implemented on top of it (they literally build a format string that's
passed into ref-filter.c's interpreter).

So we could document them as: behave as if "--format=..." was given on
the command line (unfortunately "..." here is a complex set of %(if)
mechanisms, but it would mostly be for reference; nobody would need to
type it).

And then it is not a far leap to change that to: behave as if --format
was set to the value of branch.verboseFormat, and the default of that
config option is "...". And then anybody can make "branch -v" behave
however they like.

It would break scripts that parse "branch -v", of course, but we've been
pretty explicit that this is porcelain (and the plumbing option is
for-each-ref).
For what it's worth I remember some past discussion where it was
discussed to have some human-readable cut-off so instead of saying:

    ahead 2, behind 38741

We'd just fall back on saying "behind lots" once your number of behind
reached some limit (which could dynamically compute as a heuristic based
on repo size, just like the abbrev length)..
There's some discussion in the sub-thread starting here:

  https://lore.kernel.org/git/7b759564-5544-8845-0594-e8342a0b4ba5@gmail.com/ (local)

I do like that direction, but it sounds like there's some complexity
(maybe less these days if we can rely on having commit-graphs with
generation numbers). There is an AHEAD_BEHIND_QUICK flag, but I think it
can only be triggered via "git status --no-ahead-behind" (and it's kind
of unsatisfying, as it only tells you whether the two tips are identical
or not).

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help