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>
This commit is contained in:
parent
d60a6a662f
commit
ee8f838e03
@ -106,12 +106,14 @@ The placeholders are:
|
|||||||
- '%aD': author date, RFC2822 style
|
- '%aD': author date, RFC2822 style
|
||||||
- '%ar': author date, relative
|
- '%ar': author date, relative
|
||||||
- '%at': author date, UNIX timestamp
|
- '%at': author date, UNIX timestamp
|
||||||
|
- '%ai': author date, ISO 8601 format
|
||||||
- '%cn': committer name
|
- '%cn': committer name
|
||||||
- '%ce': committer email
|
- '%ce': committer email
|
||||||
- '%cd': committer date
|
- '%cd': committer date
|
||||||
- '%cD': committer date, RFC2822 style
|
- '%cD': committer date, RFC2822 style
|
||||||
- '%cr': committer date, relative
|
- '%cr': committer date, relative
|
||||||
- '%ct': committer date, UNIX timestamp
|
- '%ct': committer date, UNIX timestamp
|
||||||
|
- '%ci': committer date, ISO 8601 format
|
||||||
- '%e': encoding
|
- '%e': encoding
|
||||||
- '%s': subject
|
- '%s': subject
|
||||||
- '%b': body
|
- '%b': body
|
||||||
|
2
cache.h
2
cache.h
@ -409,7 +409,7 @@ extern void *read_object_with_reference(const unsigned char *sha1,
|
|||||||
unsigned long *size,
|
unsigned long *size,
|
||||||
unsigned char *sha1_ret);
|
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_date(unsigned long time, int timezone, enum date_mode mode);
|
||||||
const char *show_rfc2822_date(unsigned long time, int timezone);
|
const char *show_rfc2822_date(unsigned long time, int timezone);
|
||||||
int parse_date(const char *date, char *buf, int bufsize);
|
int parse_date(const char *date, char *buf, int bufsize);
|
||||||
|
6
commit.c
6
commit.c
@ -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, 2, show_date(date, tz, 0));
|
||||||
interp_set_entry(table, 3, show_rfc2822_date(date, tz));
|
interp_set_entry(table, 3, show_rfc2822_date(date, tz));
|
||||||
interp_set_entry(table, 4, show_date(date, tz, 1));
|
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,
|
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 */
|
{ "%aD" }, /* author date, RFC2822 style */
|
||||||
{ "%ar" }, /* author date, relative */
|
{ "%ar" }, /* author date, relative */
|
||||||
{ "%at" }, /* author date, UNIX timestamp */
|
{ "%at" }, /* author date, UNIX timestamp */
|
||||||
|
{ "%ai" }, /* author date, ISO 8601 */
|
||||||
{ "%cn" }, /* committer name */
|
{ "%cn" }, /* committer name */
|
||||||
{ "%ce" }, /* committer email */
|
{ "%ce" }, /* committer email */
|
||||||
{ "%cd" }, /* committer date */
|
{ "%cd" }, /* committer date */
|
||||||
{ "%cD" }, /* committer date, RFC2822 style */
|
{ "%cD" }, /* committer date, RFC2822 style */
|
||||||
{ "%cr" }, /* committer date, relative */
|
{ "%cr" }, /* committer date, relative */
|
||||||
{ "%ct" }, /* committer date, UNIX timestamp */
|
{ "%ct" }, /* committer date, UNIX timestamp */
|
||||||
|
{ "%ci" }, /* committer date, ISO 8601 */
|
||||||
{ "%e" }, /* encoding */
|
{ "%e" }, /* encoding */
|
||||||
{ "%s" }, /* subject */
|
{ "%s" }, /* subject */
|
||||||
{ "%b" }, /* body */
|
{ "%b" }, /* body */
|
||||||
@ -821,10 +824,11 @@ static long format_commit_message(const struct commit *commit,
|
|||||||
IPARENTS, IPARENTS_ABBREV,
|
IPARENTS, IPARENTS_ABBREV,
|
||||||
IAUTHOR_NAME, IAUTHOR_EMAIL,
|
IAUTHOR_NAME, IAUTHOR_EMAIL,
|
||||||
IAUTHOR_DATE, IAUTHOR_DATE_RFC2822, IAUTHOR_DATE_RELATIVE,
|
IAUTHOR_DATE, IAUTHOR_DATE_RFC2822, IAUTHOR_DATE_RELATIVE,
|
||||||
IAUTHOR_TIMESTAMP,
|
IAUTHOR_TIMESTAMP, IAUTHOR_ISO8601,
|
||||||
ICOMMITTER_NAME, ICOMMITTER_EMAIL,
|
ICOMMITTER_NAME, ICOMMITTER_EMAIL,
|
||||||
ICOMMITTER_DATE, ICOMMITTER_DATE_RFC2822,
|
ICOMMITTER_DATE, ICOMMITTER_DATE_RFC2822,
|
||||||
ICOMMITTER_DATE_RELATIVE, ICOMMITTER_TIMESTAMP,
|
ICOMMITTER_DATE_RELATIVE, ICOMMITTER_TIMESTAMP,
|
||||||
|
ICOMMITTER_ISO8601,
|
||||||
IENCODING,
|
IENCODING,
|
||||||
ISUBJECT,
|
ISUBJECT,
|
||||||
IBODY,
|
IBODY,
|
||||||
|
7
date.c
7
date.c
@ -137,6 +137,13 @@ const char *show_date(unsigned long time, int tz, enum date_mode mode)
|
|||||||
if (mode == DATE_SHORT)
|
if (mode == DATE_SHORT)
|
||||||
sprintf(timebuf, "%04d-%02d-%02d", tm->tm_year + 1900,
|
sprintf(timebuf, "%04d-%02d-%02d", tm->tm_year + 1900,
|
||||||
tm->tm_mon + 1, tm->tm_mday);
|
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
|
else
|
||||||
sprintf(timebuf, "%.3s %.3s %d %02d:%02d:%02d %d%c%+05d",
|
sprintf(timebuf, "%.3s %.3s %d %02d:%02d:%02d %d%c%+05d",
|
||||||
weekday_names[tm->tm_wday],
|
weekday_names[tm->tm_wday],
|
||||||
|
Loading…
Reference in New Issue
Block a user