Re: [RFC PATCH v2] Add 'human' date format
On Wed, Jul 11, 2018 at 2:24 PM Ævar Arnfjörð Bjarmason
> I think that's true for the likes of linux.git & git.git, but a lot of
> users of git say work in some corporate setting entirely or mostly in
> the same timezone.
> In that case, knowing if some commit whose sole message was "fix" was
> made at 3am or in the afternoon, even if it's really old, is really
> useful information, even years later.
Maybe. But if you care about that kind of information, would you
actually want to use the "human" date? Wouldn't you want to use the
strftime thing instead, which gets you whatever field you care about,
and gets it consistently regardless of how old the data is?
That said, I do acknowledge that the "human" format may be a bit
inflexible and ad-hoc. Of course some more generic way that allowed
arbitrary rules might be better for some uses.
I'll just explain the cases that made me zero in on what that last patch did:
(a) I do like the "relative" date for recent stuff.
Quite often, I look at how recent the commits are, for example, and
then I really like seeing "2 hours ago" rather than a time with a
timezone (which is a lot harder for me to mentally parse)
This was the primary impetus for my original "auto" patch many years
ago, that was (rightly) not merged. It really boiled down to just
"default or relative, depending on how recent it was".
(b) I noticed that I was distracted by dates that were *too* terse.
My first patch had _just_ the time when it was today and the same
timezone (but older than two hours, so the original relative logic
That initially sounded great to me, which is why it was that first time.
But after _using_ it for a while, I actually found that it didn't have
enough context for me (visually) to really trigger my date parsing at
So "five hours ago" actually parsed better than just "9:48" to me. I
didn't think it would do that, but it did. Which was why I changed the
"relative" time to trigger every time if it was the exact same date
(and in the past) - just to avoid the really terse model.
(c) when I played around with other commands than just "git log", I
also noticed that a consistent length mattered.,
Again, my first version was more along the lines of "if it's long ago,
just use the full format, exactly like the default date". It wasn't
*quite* that, because it would always skip the seconds, but it was
And with "git log", that worked fine, because dates were fairly
uniformly increasing, so the date format would slowly get longer, and
that was fine.
But then when I played with "git blame -C --date=human", I noticed
that not only did the human date actually make sense there too, it
actually made it easier for me to read - and that in particular, the
"extra" info was just annoying.
So now I find that shortened "only show the date" format to be really
good _particularly_ for "git blame". You can see very clearly whether
it's something recent or something old.
Maybe my use of "git blame" is unusual, but I don't think so. I tend
to do "git blame -C" when I'm looking for a bug, and then seeing
something like this:
Apr 16 2005 437)
Apr 16 2005 438)
Jan 14 2016 439)
Apr 16 2005 440)
Apr 16 2005 441)
Apr 16 2005 442)
Thu Jun 14 15:26 443)
Thu Jun 14 15:26 444)
Thu Jun 14 15:26 445)
Thu Jun 14 15:26 446)
Thu Jun 14 15:26 447)
Thu Jun 14 15:26 448)
Thu Jun 14 15:26 449)
Thu Jun 14 15:26 450)
Apr 16 2005 451)
Jul 30 2012 452)
Jul 30 2012 453)
Feb 13 2012 454)
Apr 16 2005 455)
Apr 16 2005 456)
in that date field (yeah. that happens to be "kernel/fork.c" in the
current kernel - I just edited out all the other stuff than time and
line number) is actually very visually easy to see what parts are old,
and which ones are recent, because it changes the format pretty
clearly and unambiguously, without changing the size of that field
(Sure, the size changes, but it's not a radical difference, it's a
fairly small variation, and the variation only highlights the
different time range, without making it compltely unbalanced).
Anyway, enough excuses. I'l just trying to explain some of the things
that I noticed simply _while_ making some of the decisions I made.
Are they the "right" decisions? I don't know. But I've been running with that
git config --add log.date auto
in my kernel repo since I posted the patches, and so far I'm still liking it.