Re: [PATCH 2/2] --date=relative falls back to "short" format for commits older than a year
- From
- Eugene Letuchy <eletuchy@gmail.com>
- Date
- Feb 20, 2009, 22:47 UTC
- Message-ID
- <fbb390660902201447q560b94f8p969889da5e2686f4@mail.gmail.com>
- In-Reply-To
- <alpine.LFD.2.00.0902201409230.21686@localhost.localdomain>
Cool. I think git blame would need to be tweaked a bit after my patch (at least documentation wise), since it already has a "raw timestamp" option (-t).
On Fri, Feb 20, 2009 at 2:15 PM, Linus Torvalds <torvalds@linux-foundation.org> wrote:
Show 88 quoted lines
>
> Subject: Support 'raw' date format
>
> Talking about --date, one thing I wanted for the 1234567890 date was to
> get things in the raw format. Sure, you get them with --pretty=raw, but it
> felt a bit sad that you couldn't just ask for the date in raw format.
>
> So here's a throw-away patch (meaning: I won't be re-sending it, because I
> really don't think it's a big deal) to add "--date=raw". It just prints
> out the internal raw git format - seconds since epoch plus timezone (put
> another way: 'date +"%s %z"' format)
>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> ---
>
> Not a whole lot of testing. But
>
> git show --date=raw v2.6.29-rc5
>
> works correctly.
>
> Documentation/rev-list-options.txt | 4 +++-
> cache.h | 3 ++-
> date.c | 7 +++++++
> 3 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git i/Documentation/rev-list-options.txt w/Documentation/rev-list-options.txt
> index b9f6e4d..5076322 100644
> --- i/Documentation/rev-list-options.txt
> +++ w/Documentation/rev-list-options.txt
> @@ -13,7 +13,7 @@ include::pretty-options.txt[]
>
> Synonym for `--date=relative`.
>
> ---date={relative,local,default,iso,rfc,short}::
> +--date={relative,local,default,iso,rfc,short,raw}::
>
> Only takes effect for dates shown in human-readable format, such
> as when using "--pretty". `log.date` config variable sets a default
> @@ -31,6 +31,8 @@ format, often found in E-mail messages.
> +
> `--date=short` shows only date but not time, in `YYYY-MM-DD` format.
> +
> +`--date=raw` shows the date in the internal raw git format `%s %z` format.
> ++
> `--date=default` shows timestamps in the original timezone
> (either committer's or author's).
>
> diff --git i/cache.h w/cache.h
> index 21a6310..189151d 100644
> --- i/cache.h
> +++ w/cache.h
> @@ -696,7 +696,8 @@ enum date_mode {
> DATE_SHORT,
> DATE_LOCAL,
> DATE_ISO8601,
> - DATE_RFC2822
> + DATE_RFC2822,
> + DATE_RAW
> };
>
> const char *show_date(unsigned long time, int timezone, enum date_mode mode);
> diff --git i/date.c w/date.c
> index 950b88f..d75dff4 100644
> --- i/date.c
> +++ w/date.c
> @@ -89,6 +89,11 @@ const char *show_date(unsigned long time, int tz, enum date_mode mode)
> struct tm *tm;
> static char timebuf[200];
>
> + if (mode == DATE_RAW) {
> + snprintf(timebuf, sizeof(timebuf), "%lu %+05d", time, tz);
> + return timebuf;
> + }
> +
> if (mode == DATE_RELATIVE) {
> unsigned long diff;
> struct timeval now;
> @@ -615,6 +620,8 @@ enum date_mode parse_date_format(const char *format)
> return DATE_LOCAL;
> else if (!strcmp(format, "default"))
> return DATE_NORMAL;
> + else if (!strcmp(format, "raw"))
> + return DATE_RAW;
> else
> die("unknown date format %s", format);
> }
>-- Eugene