several date related issues

2015-06-25 Thread H.Merijn Brand
Running 2.4.4

*** Dates do not respect LC_TIME

$ date
Thu 25 Jun 2015 13:02:48 CEST
$ git log --pretty=fuller --date=local | head -6 | grep -i date
AuthorDate: Mon Feb 16 16:47:08 2015
CommitDate: Mon Feb 16 16:47:08 2015
$ locale -ck LC_TIME | grep fmt
d_t_fmt=%a %d %b %Y %r %Z
d_fmt=%d-%m-%Y
t_fmt=%r
t_fmt_ampm=%H:%M:%S
era_d_fmt=
era_d_t_fmt=
era_t_fmt=
date_fmt=%a %e %b %Y %H:%M:%S %Z

*** git log --date-order and --author-date-order do not order by date

$ mkdir git-test
$ cd git-test
$ git init
Initialized empty Git repository in /home/merijn/git-test/.git/
$ touch foo
$ git add foo
$ git commit -m boo
[master (root-commit) 09483e5] boo
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 foo
$ git log | cat
commit 09483e527d6a4d4a9e49f82a11871ab55133cf72
Author: H.Merijn Brand h.m.br...@xs4all.nl
Date:   Thu Jun 25 13:14:37 2015 +0200

boo
$ touch bar
$ env GIT_AUTHOR_DATE=2015-01-15 12:13:14 GIT_COMMITTER_DATE=2015-01-15 
12:13:14 git add bar
$ env GIT_AUTHOR_DATE=2015-01-15 12:13:14 GIT_COMMITTER_DATE=2015-01-15 
12:13:14 git commit -m Commit in past
[master 6acc7f3] Commit in past
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bar
$ git log | cat
commit 6acc7f3d2cbaca7176b63ffac51005ce07b90b91
Author: H.Merijn Brand h.m.br...@xs4all.nl
Date:   Thu Jan 15 12:13:14 2015 +0100

Commit in past

commit 09483e527d6a4d4a9e49f82a11871ab55133cf72
Author: H.Merijn Brand h.m.br...@xs4all.nl
Date:   Thu Jun 25 13:14:37 2015 +0200

boo
$ git log --date-order | cat
commit 6acc7f3d2cbaca7176b63ffac51005ce07b90b91
Author: H.Merijn Brand h.m.br...@xs4all.nl
Date:   Thu Jan 15 12:13:14 2015 +0100

Commit in past

commit 09483e527d6a4d4a9e49f82a11871ab55133cf72
Author: H.Merijn Brand h.m.br...@xs4all.nl
Date:   Thu Jun 25 13:14:37 2015 +0200

boo
$ git log --author-date-order | cat
commit 6acc7f3d2cbaca7176b63ffac51005ce07b90b91
Author: H.Merijn Brand h.m.br...@xs4all.nl
Date:   Thu Jan 15 12:13:14 2015 +0100

Commit in past

commit 09483e527d6a4d4a9e49f82a11871ab55133cf72
Author: H.Merijn Brand h.m.br...@xs4all.nl
Date:   Thu Jun 25 13:14:37 2015 +0200

boo
$


-- 
H.Merijn Brand  http://tux.nl   Perl Monger  http://amsterdam.pm.org/
using perl5.00307 .. 5.21   porting perl5 on HP-UX, AIX, and openSUSE
http://mirrors.develooper.com/hpux/http://www.test-smoke.org/
http://qa.perl.org   http://www.goldmark.org/jeff/stupid-disclaimers/


pgp3fItiz4OQ5.pgp
Description: OpenPGP digital signature


Re: several date related issues

2015-06-25 Thread Jeff King
On Thu, Jun 25, 2015 at 01:19:01PM +0200, H.Merijn Brand wrote:

 *** Dates do not respect LC_TIME

Right, we use our own routines for formatting the dates, and not
strftime. And it probably should stay that way in general, as git's
output is often meant to be parsed.

That being said, I do not think it would be wrong to have a date-mode
that just showed strftime(%c), or some other arbitrary strftime
string.  You could then set log.date as appropriate for human
consumption.

 *** git log --date-order and --author-date-order do not order by date

Correct. The documentation says:

   --date-order
 Show no parents before all of its children are shown, but otherwise
 show commits in the commit timestamp order.

In your example, one commit is the parent of the other, so it hits the
first part of the sentence, and the dates are never even compared.

There is not a simple way to show commits in arbitrary order without
respect to parentage. I think you'd have to do something like:

  git log --format='%at %H' |
  sort -rn |
  cut -d' ' -f2 |
  git log --stdin --no-walk

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: several date related issues

2015-06-25 Thread H.Merijn Brand
On Thu, 25 Jun 2015 08:44:45 -0400, Jeff King p...@peff.net wrote:

 On Thu, Jun 25, 2015 at 01:19:01PM +0200, H.Merijn Brand wrote:
 
  *** Dates do not respect LC_TIME
 
 Right, we use our own routines for formatting the dates, and not
 strftime. And it probably should stay that way in general, as git's
 output is often meant to be parsed.
 
 That being said, I do not think it would be wrong to have a date-mode
 that just showed strftime(%c), or some other arbitrary strftime
 string.  You could then set log.date as appropriate for human
 consumption.

Yes please :)

 --date=lc
 --date=lc_time
 --date=locale

all spring to mind as valid options

  *** git log --date-order and --author-date-order do not order by date
 
 Correct. The documentation says:
 
--date-order
  Show no parents before all of its children are shown, but otherwise
  show commits in the commit timestamp order.
 
 In your example, one commit is the parent of the other, so it hits the
 first part of the sentence, and the dates are never even compared.

That is what I gathered, and concluded that the option name is
misleading

 There is not a simple way to show commits in arbitrary order without
 respect to parentage. I think you'd have to do something like:
 
   git log --format='%at %H' |
   sort -rn |
   cut -d' ' -f2 |
   git log --stdin --no-walk

I'd like that as gitk option!

-- 
H.Merijn Brand  http://tux.nl   Perl Monger  http://amsterdam.pm.org/
using perl5.00307 .. 5.21   porting perl5 on HP-UX, AIX, and openSUSE
http://mirrors.develooper.com/hpux/http://www.test-smoke.org/
http://qa.perl.org   http://www.goldmark.org/jeff/stupid-disclaimers/


pgpecr4JREYxS.pgp
Description: OpenPGP digital signature