On Fri, Oct 21, 2016 at 09:50:49AM -0700, Junio C Hamano wrote: > Duy Nguyen <pclouds@xxxxxxxxx> writes: > > > On Fri, Oct 21, 2016 at 7:11 PM, Duy Nguyen <pclouds@xxxxxxxxx> wrote: > >> Yeah.. replacing the 4 DEFAULT_ABBREV in fetch.c with something > >> sensible should do it. > > > > Correction (if somebody will pick this up), it's > > TRANSPORT_SUMMARY_WIDTH that needs to be adjusted, not those four. > > Yes, it used to be and it still is (2 * DEFAULT_ABBREV + 3) but in > the new world order where default-abbrev is often -1 the expression > does not make much sense. > > Perhaps something along this line? > > transport.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/transport.h b/transport.h > index 18d2cf8275..5339fabbad 100644 > --- a/transport.h > +++ b/transport.h > @@ -127,7 +127,7 @@ struct transport { > #define TRANSPORT_PUSH_CERT 2048 > #define TRANSPORT_PUSH_ATOMIC 4096 > > -#define TRANSPORT_SUMMARY_WIDTH (2 * DEFAULT_ABBREV + 3) > +#define TRANSPORT_SUMMARY_WIDTH (2 * (DEFAULT_ABBREV < 0 ? 7 : DEFAULT_ABBREV) + 3) > #define TRANSPORT_SUMMARY(x) (int)(TRANSPORT_SUMMARY_WIDTH + strlen(x) - gettext_width(x)), (x) That doesn't apply on 'next', because we have already done the equivalent there. :) The right way to spell "7" is FALLBACK_DEFAULT_ABBREV, which is handled by your 65acfeacaa. The remaining issue is that the static abbreviation is not nearly long enough for git.git anymore; the auto-abbrev feature bumps my repo to a minimum of 10 characters (it may only be 9 on a fresh clone; I have a couple remotes and active work in progress). So this isn't exactly a regression; it has always been the case that we may mis-align when the abbreviations ended up longer than the minimum. It's just that it didn't happen all that often in most repos (but it probably did constantly in linux.git). The simplest band-aid fix would be to compute TRANSPORT_SUMMARY_WIDTH on the fly, taking into account the minimum found by actually counting the objects. That at least gets us back to where we were, with it mostly working and occasionally ugly when there's an oddball collision (for git.git anyway; it probably makes the kernel output much nicer). The "right" fix is to queue up the list of ref updates to print, find the abbreviations for each, and then print them all in one shot, knowing ahead of time the size necessary to align them. This could also let us improve the name-alignment. -Peff