diff options
author | Robin Rosenberg <robin.rosenberg@dewire.com> | 2007-07-14 01:00:42 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-07-13 22:47:49 -0700 |
commit | ee8f838e0346751b21250f8d107049829b855a98 (patch) | |
tree | 1c64640d85fff10072e4e57eff1cedd3c4dc13aa | |
parent | d60a6a662fac58f833efde93c962314fd5d83541 (diff) | |
download | git-ee8f838e0346751b21250f8d107049829b855a98.tar.gz |
Support output ISO 8601 format dates
Support output of full ISO 8601 style dates in e.g. git log
and other places that use interpolation for formatting.
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | Documentation/pretty-formats.txt | 2 | ||||
-rw-r--r-- | cache.h | 2 | ||||
-rw-r--r-- | commit.c | 6 | ||||
-rw-r--r-- | date.c | 7 |
4 files changed, 15 insertions, 2 deletions
diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt index c551ea61d2..0193c3ce58 100644 --- a/Documentation/pretty-formats.txt +++ b/Documentation/pretty-formats.txt @@ -106,12 +106,14 @@ The placeholders are: - '%aD': author date, RFC2822 style - '%ar': author date, relative - '%at': author date, UNIX timestamp +- '%ai': author date, ISO 8601 format - '%cn': committer name - '%ce': committer email - '%cd': committer date - '%cD': committer date, RFC2822 style - '%cr': committer date, relative - '%ct': committer date, UNIX timestamp +- '%ci': committer date, ISO 8601 format - '%e': encoding - '%s': subject - '%b': body @@ -409,7 +409,7 @@ extern void *read_object_with_reference(const unsigned char *sha1, unsigned long *size, unsigned char *sha1_ret); -enum date_mode { DATE_NORMAL = 0, DATE_RELATIVE, DATE_SHORT, DATE_LOCAL }; +enum date_mode { DATE_NORMAL = 0, DATE_RELATIVE, DATE_SHORT, DATE_LOCAL, DATE_ISO8601 }; const char *show_date(unsigned long time, int timezone, enum date_mode mode); const char *show_rfc2822_date(unsigned long time, int timezone); int parse_date(const char *date, char *buf, int bufsize); @@ -781,6 +781,7 @@ static void fill_person(struct interp *table, const char *msg, int len) interp_set_entry(table, 2, show_date(date, tz, 0)); interp_set_entry(table, 3, show_rfc2822_date(date, tz)); interp_set_entry(table, 4, show_date(date, tz, 1)); + interp_set_entry(table, 6, show_date(date, tz, DATE_ISO8601)); } static long format_commit_message(const struct commit *commit, @@ -799,12 +800,14 @@ static long format_commit_message(const struct commit *commit, { "%aD" }, /* author date, RFC2822 style */ { "%ar" }, /* author date, relative */ { "%at" }, /* author date, UNIX timestamp */ + { "%ai" }, /* author date, ISO 8601 */ { "%cn" }, /* committer name */ { "%ce" }, /* committer email */ { "%cd" }, /* committer date */ { "%cD" }, /* committer date, RFC2822 style */ { "%cr" }, /* committer date, relative */ { "%ct" }, /* committer date, UNIX timestamp */ + { "%ci" }, /* committer date, ISO 8601 */ { "%e" }, /* encoding */ { "%s" }, /* subject */ { "%b" }, /* body */ @@ -821,10 +824,11 @@ static long format_commit_message(const struct commit *commit, IPARENTS, IPARENTS_ABBREV, IAUTHOR_NAME, IAUTHOR_EMAIL, IAUTHOR_DATE, IAUTHOR_DATE_RFC2822, IAUTHOR_DATE_RELATIVE, - IAUTHOR_TIMESTAMP, + IAUTHOR_TIMESTAMP, IAUTHOR_ISO8601, ICOMMITTER_NAME, ICOMMITTER_EMAIL, ICOMMITTER_DATE, ICOMMITTER_DATE_RFC2822, ICOMMITTER_DATE_RELATIVE, ICOMMITTER_TIMESTAMP, + ICOMMITTER_ISO8601, IENCODING, ISUBJECT, IBODY, @@ -137,6 +137,13 @@ const char *show_date(unsigned long time, int tz, enum date_mode mode) if (mode == DATE_SHORT) sprintf(timebuf, "%04d-%02d-%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday); + else if (mode == DATE_ISO8601) + sprintf(timebuf, "%04d-%02d-%02d %02d:%02d:%02d %+05d", + tm->tm_year + 1900, + tm->tm_mon + 1, + tm->tm_mday, + tm->tm_hour, tm->tm_min, tm->tm_sec, + tz); else sprintf(timebuf, "%.3s %.3s %d %02d:%02d:%02d %d%c%+05d", weekday_names[tm->tm_wday], |