threads / discuss / 21280

Which dates 'git log --since= --after=' compare?

Subject: Which dates 'git log --since= --after=' compare?

## tl;dr

3 messages between Oct 19, 2009 and Oct 20, 2009.

replies: 2people: 2as markdown or json

Daniel· Oct 19, 2009, 10:01 UTC · lore
Hi,

I can see that 'git log --since= --after=' compares commit's dates, not author's dates.How can I limit commits by Author's date?

$ git log --format="%aD %cD"

Mon, 5 Oct 2009 14:54:57 +0200 Thu, 8 Oct 2009 10:31:40 +0200 Mon, 21 Sep 2009 11:11:35 +0200 Thu, 8 Oct 2009 10:31:40 +0200 Mon, 21 Sep 2009 10:14:41 +0200 Thu, 8 Oct 2009 10:31:40 +0200 Wed, 16 Sep 2009 14:23:30 +0200 Thu, 8 Oct 2009 10:31:40 +0200 Wed, 16 Sep 2009 10:27:39 +0200 Thu, 8 Oct 2009 10:31:38 +0200 Wed, 16 Sep 2009 09:15:32 +0200 Thu, 8 Oct 2009 10:30:31 +0200 Wed, 16 Sep 2009 08:02:23 +0200 Wed, 16 Sep 2009 09:02:29 +0200

$ git log --format="%aD %cD" --since=2009-09-01 --until=2009-10-01 Wed, 16 Sep 2009 08:02:23 +0200 Wed, 16 Sep 2009 09:02:29 +0200

-- 
Daniel
Jeff King· Oct 20, 2009, 08:37 UTC · re: Daniel · lore

Re: Which dates 'git log --since= --after=' compare?

On Mon, Oct 19, 2009 at 12:01:49PM +0200, Daniel wrote:
> I can see that 'git log --since= --after=' compares commit's dates,
> not author's dates.How can I limit commits by Author's date?

AFAIK, there is currently no way to do it with a simple option. In fact, we don't even parse the author date when doing revision limiting.

So it would need a patch, but the "obvious" solution of just parsing and storing the author date in a "struct commit" might not be acceptable; as I recall, some performance tuning went into keeping the per-commit memory footprint as small as possible, which had a noticeable speed benefit (I'm not saying it couldn't be done, but care needs to be taken in that regard).

If it's not something you need to do often, I'd consider something like:
  git log --format='%H %at' |
    perl -ane '
      BEGIN {
        use DateTime::Format::Natural;
        $max_age = DateTime::Format::Natural->new->parse_datetime(
                      "last friday"
                   )->epoch;
      }
      print $F[0], "\n" if $F[1] < $max_age;
  '

Of course that's awful to type, and it will be much slower than git doing the revision limiting itself.

-Peff
Daniel· Oct 20, 2009, 09:35 UTC · re: Jeff King · lore

Re: Which dates 'git log --since= --after=' compare?

Jeff King <peff@peff.net> wrote:
Show 32 quoted lines
> On Mon, Oct 19, 2009 at 12:01:49PM +0200, Daniel wrote:
> 
> > I can see that 'git log --since= --after=' compares commit's dates,
> > not author's dates.How can I limit commits by Author's date?
> 
> AFAIK, there is currently no way to do it with a simple option. In fact,
> we don't even parse the author date when doing revision limiting.
> 
> So it would need a patch, but the "obvious" solution of just parsing and
> storing the author date in a "struct commit" might not be acceptable; as
> I recall, some performance tuning went into keeping the per-commit
> memory footprint as small as possible, which had a noticeable speed
> benefit (I'm not saying it couldn't be done, but care needs to be taken
> in that regard).
> 
> If it's not something you need to do often, I'd consider something like:
> 
>   git log --format='%H %at' |
>     perl -ane '
>       BEGIN {
>         use DateTime::Format::Natural;
>         $max_age = DateTime::Format::Natural->new->parse_datetime(
>                       "last friday"
>                    )->epoch;
>       }
>       print $F[0], "\n" if $F[1] < $max_age;
>   '
> 
> Of course that's awful to type, and it will be much slower than git
> doing the revision limiting itself.
> 
> -Peff
Thanks.

← back to recent threads