Thread (4 messages) flat view 4 messages, 3 authors, 2016-06-15

Re: [PATCH 2/2] --date=relative falls back to "short" format for commits older than a year

From: Eugene Letuchy <hidden>
Date: 2016-06-15 22:46:15

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
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help