mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
Merge branch 'jk/date-local'
"git log --date=local" used to only show the normal (default) format in the local timezone. The command learned to take 'local' as an instruction to use the local timezone with other formats, e.g. "git show --date=rfc-local". * jk/date-local: t6300: add tests for "-local" date formats t6300: make UTC and local dates different date: make "local" orthogonal to date format date: check for "local" before anything else t6300: add test for "raw" date format t6300: introduce test_date() helper fast-import: switch crash-report date to iso8601 Documentation/rev-list: don't list date formats Documentation/git-for-each-ref: don't list date formats Documentation/config: don't list date formats Documentation/blame-options: don't list date formats
This commit is contained in:
commit
7b09c459d3
|
@ -63,11 +63,10 @@ include::line-range-format.txt[]
|
||||||
`-` to make the command read from the standard input).
|
`-` to make the command read from the standard input).
|
||||||
|
|
||||||
--date <format>::
|
--date <format>::
|
||||||
The value is one of the following alternatives:
|
Specifies the format used to output dates. If --date is not
|
||||||
{relative,local,default,iso,rfc,short}. If --date is not
|
|
||||||
provided, the value of the blame.date config variable is
|
provided, the value of the blame.date config variable is
|
||||||
used. If the blame.date config variable is also not set, the
|
used. If the blame.date config variable is also not set, the
|
||||||
iso format is used. For more information, See the discussion
|
iso format is used. For supported values, see the discussion
|
||||||
of the --date option at linkgit:git-log[1].
|
of the --date option at linkgit:git-log[1].
|
||||||
|
|
||||||
-M|<num>|::
|
-M|<num>|::
|
||||||
|
|
|
@ -1829,9 +1829,7 @@ log.abbrevCommit::
|
||||||
log.date::
|
log.date::
|
||||||
Set the default date-time mode for the 'log' command.
|
Set the default date-time mode for the 'log' command.
|
||||||
Setting a value for log.date is similar to using 'git log''s
|
Setting a value for log.date is similar to using 'git log''s
|
||||||
`--date` option. Possible values are `relative`, `local`,
|
`--date` option. See linkgit:git-log[1] for details.
|
||||||
`default`, `iso`, `rfc`, and `short`; see linkgit:git-log[1]
|
|
||||||
for details.
|
|
||||||
|
|
||||||
log.decorate::
|
log.decorate::
|
||||||
Print out the ref names of any commits that are shown by the log
|
Print out the ref names of any commits that are shown by the log
|
||||||
|
|
|
@ -150,9 +150,8 @@ the object referred by the ref does not cause an error. It
|
||||||
returns an empty string instead.
|
returns an empty string instead.
|
||||||
|
|
||||||
As a special case for the date-type fields, you may specify a format for
|
As a special case for the date-type fields, you may specify a format for
|
||||||
the date by adding one of `:default`, `:relative`, `:short`, `:local`,
|
the date by adding `:` followed by date format name (see the
|
||||||
`:iso8601`, `:rfc2822` or `:raw` to the end of the fieldname; e.g.
|
values the `--date` option to linkgit::git-rev-list[1] takes).
|
||||||
`%(taggerdate:relative)`.
|
|
||||||
|
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
|
|
|
@ -45,7 +45,7 @@ SYNOPSIS
|
||||||
[ --regexp-ignore-case | -i ]
|
[ --regexp-ignore-case | -i ]
|
||||||
[ --extended-regexp | -E ]
|
[ --extended-regexp | -E ]
|
||||||
[ --fixed-strings | -F ]
|
[ --fixed-strings | -F ]
|
||||||
[ --date=(local|relative|default|iso|iso-strict|rfc|short) ]
|
[ --date=<format>]
|
||||||
[ [ --objects | --objects-edge | --objects-edge-aggressive ]
|
[ [ --objects | --objects-edge | --objects-edge-aggressive ]
|
||||||
[ --unpacked ] ]
|
[ --unpacked ] ]
|
||||||
[ --pretty | --header ]
|
[ --pretty | --header ]
|
||||||
|
|
|
@ -701,15 +701,19 @@ include::pretty-options.txt[]
|
||||||
--relative-date::
|
--relative-date::
|
||||||
Synonym for `--date=relative`.
|
Synonym for `--date=relative`.
|
||||||
|
|
||||||
--date=(relative|local|default|iso|iso-strict|rfc|short|raw)::
|
--date=<format>::
|
||||||
Only takes effect for dates shown in human-readable format, such
|
Only takes effect for dates shown in human-readable format, such
|
||||||
as when using `--pretty`. `log.date` config variable sets a default
|
as when using `--pretty`. `log.date` config variable sets a default
|
||||||
value for the log command's `--date` option.
|
value for the log command's `--date` option. By default, dates
|
||||||
|
are shown in the original time zone (either committer's or
|
||||||
|
author's). If `-local` is appended to the format (e.g.,
|
||||||
|
`iso-local`), the user's local time zone is used instead.
|
||||||
+
|
+
|
||||||
`--date=relative` shows dates relative to the current time,
|
`--date=relative` shows dates relative to the current time,
|
||||||
e.g. ``2 hours ago''.
|
e.g. ``2 hours ago''. The `-local` option cannot be used with
|
||||||
|
`--raw` or `--relative`.
|
||||||
+
|
+
|
||||||
`--date=local` shows timestamps in user's local time zone.
|
`--date=local` is an alias for `--date=default-local`.
|
||||||
+
|
+
|
||||||
`--date=iso` (or `--date=iso8601`) shows timestamps in a ISO 8601-like format.
|
`--date=iso` (or `--date=iso8601`) shows timestamps in a ISO 8601-like format.
|
||||||
The differences to the strict ISO 8601 format are:
|
The differences to the strict ISO 8601 format are:
|
||||||
|
@ -732,10 +736,15 @@ format, often found in email messages.
|
||||||
`--date=format:...` feeds the format `...` to your system `strftime`.
|
`--date=format:...` feeds the format `...` to your system `strftime`.
|
||||||
Use `--date=format:%c` to show the date in your system locale's
|
Use `--date=format:%c` to show the date in your system locale's
|
||||||
preferred format. See the `strftime` manual for a complete list of
|
preferred format. See the `strftime` manual for a complete list of
|
||||||
format placeholders.
|
format placeholders. When using `-local`, the correct syntax is
|
||||||
|
`--date=format-local:...`.
|
||||||
+
|
+
|
||||||
`--date=default` shows timestamps in the original time zone
|
`--date=default` is the default format, and is similar to
|
||||||
(either committer's or author's).
|
`--date=rfc2822`, with a few exceptions:
|
||||||
|
|
||||||
|
- there is no comma after the day-of-week
|
||||||
|
|
||||||
|
- the time zone is omitted when the local time zone is used
|
||||||
|
|
||||||
ifdef::git-rev-list[]
|
ifdef::git-rev-list[]
|
||||||
--header::
|
--header::
|
||||||
|
|
|
@ -2600,7 +2600,6 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
|
||||||
fewer display columns. */
|
fewer display columns. */
|
||||||
blame_date_width = utf8_strwidth(_("4 years, 11 months ago")) + 1; /* add the null */
|
blame_date_width = utf8_strwidth(_("4 years, 11 months ago")) + 1; /* add the null */
|
||||||
break;
|
break;
|
||||||
case DATE_LOCAL:
|
|
||||||
case DATE_NORMAL:
|
case DATE_NORMAL:
|
||||||
blame_date_width = sizeof("Thu Oct 19 16:00:04 2006 -0700");
|
blame_date_width = sizeof("Thu Oct 19 16:00:04 2006 -0700");
|
||||||
break;
|
break;
|
||||||
|
|
2
cache.h
2
cache.h
|
@ -1091,7 +1091,6 @@ struct date_mode {
|
||||||
DATE_NORMAL = 0,
|
DATE_NORMAL = 0,
|
||||||
DATE_RELATIVE,
|
DATE_RELATIVE,
|
||||||
DATE_SHORT,
|
DATE_SHORT,
|
||||||
DATE_LOCAL,
|
|
||||||
DATE_ISO8601,
|
DATE_ISO8601,
|
||||||
DATE_ISO8601_STRICT,
|
DATE_ISO8601_STRICT,
|
||||||
DATE_RFC2822,
|
DATE_RFC2822,
|
||||||
|
@ -1099,6 +1098,7 @@ struct date_mode {
|
||||||
DATE_RAW
|
DATE_RAW
|
||||||
} type;
|
} type;
|
||||||
const char *strftime_fmt;
|
const char *strftime_fmt;
|
||||||
|
int local;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
74
date.c
74
date.c
|
@ -166,6 +166,7 @@ struct date_mode *date_mode_from_type(enum date_mode_type type)
|
||||||
if (type == DATE_STRFTIME)
|
if (type == DATE_STRFTIME)
|
||||||
die("BUG: cannot create anonymous strftime date_mode struct");
|
die("BUG: cannot create anonymous strftime date_mode struct");
|
||||||
mode.type = type;
|
mode.type = type;
|
||||||
|
mode.local = 0;
|
||||||
return &mode;
|
return &mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,6 +175,9 @@ const char *show_date(unsigned long time, int tz, const struct date_mode *mode)
|
||||||
struct tm *tm;
|
struct tm *tm;
|
||||||
static struct strbuf timebuf = STRBUF_INIT;
|
static struct strbuf timebuf = STRBUF_INIT;
|
||||||
|
|
||||||
|
if (mode->local)
|
||||||
|
tz = local_tzoffset(time);
|
||||||
|
|
||||||
if (mode->type == DATE_RAW) {
|
if (mode->type == DATE_RAW) {
|
||||||
strbuf_reset(&timebuf);
|
strbuf_reset(&timebuf);
|
||||||
strbuf_addf(&timebuf, "%lu %+05d", time, tz);
|
strbuf_addf(&timebuf, "%lu %+05d", time, tz);
|
||||||
|
@ -189,9 +193,6 @@ const char *show_date(unsigned long time, int tz, const struct date_mode *mode)
|
||||||
return timebuf.buf;
|
return timebuf.buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode->type == DATE_LOCAL)
|
|
||||||
tz = local_tzoffset(time);
|
|
||||||
|
|
||||||
tm = time_to_tm(time, tz);
|
tm = time_to_tm(time, tz);
|
||||||
if (!tm) {
|
if (!tm) {
|
||||||
tm = time_to_tm(0, 0);
|
tm = time_to_tm(0, 0);
|
||||||
|
@ -232,7 +233,7 @@ const char *show_date(unsigned long time, int tz, const struct date_mode *mode)
|
||||||
tm->tm_mday,
|
tm->tm_mday,
|
||||||
tm->tm_hour, tm->tm_min, tm->tm_sec,
|
tm->tm_hour, tm->tm_min, tm->tm_sec,
|
||||||
tm->tm_year + 1900,
|
tm->tm_year + 1900,
|
||||||
(mode->type == DATE_LOCAL) ? 0 : ' ',
|
mode->local ? 0 : ' ',
|
||||||
tz);
|
tz);
|
||||||
return timebuf.buf;
|
return timebuf.buf;
|
||||||
}
|
}
|
||||||
|
@ -770,31 +771,50 @@ int parse_date(const char *date, struct strbuf *result)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static enum date_mode_type parse_date_type(const char *format, const char **end)
|
||||||
|
{
|
||||||
|
if (skip_prefix(format, "relative", end))
|
||||||
|
return DATE_RELATIVE;
|
||||||
|
if (skip_prefix(format, "iso8601-strict", end) ||
|
||||||
|
skip_prefix(format, "iso-strict", end))
|
||||||
|
return DATE_ISO8601_STRICT;
|
||||||
|
if (skip_prefix(format, "iso8601", end) ||
|
||||||
|
skip_prefix(format, "iso", end))
|
||||||
|
return DATE_ISO8601;
|
||||||
|
if (skip_prefix(format, "rfc2822", end) ||
|
||||||
|
skip_prefix(format, "rfc", end))
|
||||||
|
return DATE_RFC2822;
|
||||||
|
if (skip_prefix(format, "short", end))
|
||||||
|
return DATE_SHORT;
|
||||||
|
if (skip_prefix(format, "default", end))
|
||||||
|
return DATE_NORMAL;
|
||||||
|
if (skip_prefix(format, "raw", end))
|
||||||
|
return DATE_RAW;
|
||||||
|
if (skip_prefix(format, "format", end))
|
||||||
|
return DATE_STRFTIME;
|
||||||
|
|
||||||
|
die("unknown date format %s", format);
|
||||||
|
}
|
||||||
|
|
||||||
void parse_date_format(const char *format, struct date_mode *mode)
|
void parse_date_format(const char *format, struct date_mode *mode)
|
||||||
{
|
{
|
||||||
if (!strcmp(format, "relative"))
|
const char *p;
|
||||||
mode->type = DATE_RELATIVE;
|
|
||||||
else if (!strcmp(format, "iso8601") ||
|
/* historical alias */
|
||||||
!strcmp(format, "iso"))
|
if (!strcmp(format, "local"))
|
||||||
mode->type = DATE_ISO8601;
|
format = "default-local";
|
||||||
else if (!strcmp(format, "iso8601-strict") ||
|
|
||||||
!strcmp(format, "iso-strict"))
|
mode->type = parse_date_type(format, &p);
|
||||||
mode->type = DATE_ISO8601_STRICT;
|
mode->local = 0;
|
||||||
else if (!strcmp(format, "rfc2822") ||
|
|
||||||
!strcmp(format, "rfc"))
|
if (skip_prefix(p, "-local", &p))
|
||||||
mode->type = DATE_RFC2822;
|
mode->local = 1;
|
||||||
else if (!strcmp(format, "short"))
|
|
||||||
mode->type = DATE_SHORT;
|
if (mode->type == DATE_STRFTIME) {
|
||||||
else if (!strcmp(format, "local"))
|
if (!skip_prefix(p, ":", &p))
|
||||||
mode->type = DATE_LOCAL;
|
die("date format missing colon separator: %s", format);
|
||||||
else if (!strcmp(format, "default"))
|
mode->strftime_fmt = xstrdup(p);
|
||||||
mode->type = DATE_NORMAL;
|
} else if (*p)
|
||||||
else if (!strcmp(format, "raw"))
|
|
||||||
mode->type = DATE_RAW;
|
|
||||||
else if (skip_prefix(format, "format:", &format)) {
|
|
||||||
mode->type = DATE_STRFTIME;
|
|
||||||
mode->strftime_fmt = xstrdup(format);
|
|
||||||
} else
|
|
||||||
die("unknown date format %s", format);
|
die("unknown date format %s", format);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -424,7 +424,7 @@ static void write_crash_report(const char *err)
|
||||||
fprintf(rpt, "fast-import crash report:\n");
|
fprintf(rpt, "fast-import crash report:\n");
|
||||||
fprintf(rpt, " fast-import process: %"PRIuMAX"\n", (uintmax_t) getpid());
|
fprintf(rpt, " fast-import process: %"PRIuMAX"\n", (uintmax_t) getpid());
|
||||||
fprintf(rpt, " parent process : %"PRIuMAX"\n", (uintmax_t) getppid());
|
fprintf(rpt, " parent process : %"PRIuMAX"\n", (uintmax_t) getppid());
|
||||||
fprintf(rpt, " at %s\n", show_date(time(NULL), 0, DATE_MODE(LOCAL)));
|
fprintf(rpt, " at %s\n", show_date(time(NULL), 0, DATE_MODE(ISO8601)));
|
||||||
fputc('\n', rpt);
|
fputc('\n', rpt);
|
||||||
|
|
||||||
fputs("fatal: ", rpt);
|
fputs("fatal: ", rpt);
|
||||||
|
|
|
@ -8,8 +8,8 @@ test_description='for-each-ref test'
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
. "$TEST_DIRECTORY"/lib-gpg.sh
|
. "$TEST_DIRECTORY"/lib-gpg.sh
|
||||||
|
|
||||||
# Mon Jul 3 15:18:43 2006 +0000
|
# Mon Jul 3 23:18:43 2006 +0000
|
||||||
datestamp=1151939923
|
datestamp=1151968723
|
||||||
setdate_and_increment () {
|
setdate_and_increment () {
|
||||||
GIT_COMMITTER_DATE="$datestamp +0200"
|
GIT_COMMITTER_DATE="$datestamp +0200"
|
||||||
datestamp=$(expr "$datestamp" + 1)
|
datestamp=$(expr "$datestamp" + 1)
|
||||||
|
@ -61,21 +61,21 @@ test_atom head object ''
|
||||||
test_atom head type ''
|
test_atom head type ''
|
||||||
test_atom head '*objectname' ''
|
test_atom head '*objectname' ''
|
||||||
test_atom head '*objecttype' ''
|
test_atom head '*objecttype' ''
|
||||||
test_atom head author 'A U Thor <author@example.com> 1151939924 +0200'
|
test_atom head author 'A U Thor <author@example.com> 1151968724 +0200'
|
||||||
test_atom head authorname 'A U Thor'
|
test_atom head authorname 'A U Thor'
|
||||||
test_atom head authoremail '<author@example.com>'
|
test_atom head authoremail '<author@example.com>'
|
||||||
test_atom head authordate 'Mon Jul 3 17:18:44 2006 +0200'
|
test_atom head authordate 'Tue Jul 4 01:18:44 2006 +0200'
|
||||||
test_atom head committer 'C O Mitter <committer@example.com> 1151939923 +0200'
|
test_atom head committer 'C O Mitter <committer@example.com> 1151968723 +0200'
|
||||||
test_atom head committername 'C O Mitter'
|
test_atom head committername 'C O Mitter'
|
||||||
test_atom head committeremail '<committer@example.com>'
|
test_atom head committeremail '<committer@example.com>'
|
||||||
test_atom head committerdate 'Mon Jul 3 17:18:43 2006 +0200'
|
test_atom head committerdate 'Tue Jul 4 01:18:43 2006 +0200'
|
||||||
test_atom head tag ''
|
test_atom head tag ''
|
||||||
test_atom head tagger ''
|
test_atom head tagger ''
|
||||||
test_atom head taggername ''
|
test_atom head taggername ''
|
||||||
test_atom head taggeremail ''
|
test_atom head taggeremail ''
|
||||||
test_atom head taggerdate ''
|
test_atom head taggerdate ''
|
||||||
test_atom head creator 'C O Mitter <committer@example.com> 1151939923 +0200'
|
test_atom head creator 'C O Mitter <committer@example.com> 1151968723 +0200'
|
||||||
test_atom head creatordate 'Mon Jul 3 17:18:43 2006 +0200'
|
test_atom head creatordate 'Tue Jul 4 01:18:43 2006 +0200'
|
||||||
test_atom head subject 'Initial'
|
test_atom head subject 'Initial'
|
||||||
test_atom head contents:subject 'Initial'
|
test_atom head contents:subject 'Initial'
|
||||||
test_atom head body ''
|
test_atom head body ''
|
||||||
|
@ -96,7 +96,7 @@ test_atom tag parent ''
|
||||||
test_atom tag numparent ''
|
test_atom tag numparent ''
|
||||||
test_atom tag object $(git rev-parse refs/tags/testtag^0)
|
test_atom tag object $(git rev-parse refs/tags/testtag^0)
|
||||||
test_atom tag type 'commit'
|
test_atom tag type 'commit'
|
||||||
test_atom tag '*objectname' '67a36f10722846e891fbada1ba48ed035de75581'
|
test_atom tag '*objectname' 'ea122842f48be4afb2d1fc6a4b96c05885ab7463'
|
||||||
test_atom tag '*objecttype' 'commit'
|
test_atom tag '*objecttype' 'commit'
|
||||||
test_atom tag author ''
|
test_atom tag author ''
|
||||||
test_atom tag authorname ''
|
test_atom tag authorname ''
|
||||||
|
@ -107,18 +107,18 @@ test_atom tag committername ''
|
||||||
test_atom tag committeremail ''
|
test_atom tag committeremail ''
|
||||||
test_atom tag committerdate ''
|
test_atom tag committerdate ''
|
||||||
test_atom tag tag 'testtag'
|
test_atom tag tag 'testtag'
|
||||||
test_atom tag tagger 'C O Mitter <committer@example.com> 1151939925 +0200'
|
test_atom tag tagger 'C O Mitter <committer@example.com> 1151968725 +0200'
|
||||||
test_atom tag taggername 'C O Mitter'
|
test_atom tag taggername 'C O Mitter'
|
||||||
test_atom tag taggeremail '<committer@example.com>'
|
test_atom tag taggeremail '<committer@example.com>'
|
||||||
test_atom tag taggerdate 'Mon Jul 3 17:18:45 2006 +0200'
|
test_atom tag taggerdate 'Tue Jul 4 01:18:45 2006 +0200'
|
||||||
test_atom tag creator 'C O Mitter <committer@example.com> 1151939925 +0200'
|
test_atom tag creator 'C O Mitter <committer@example.com> 1151968725 +0200'
|
||||||
test_atom tag creatordate 'Mon Jul 3 17:18:45 2006 +0200'
|
test_atom tag creatordate 'Tue Jul 4 01:18:45 2006 +0200'
|
||||||
test_atom tag subject 'Tagging at 1151939927'
|
test_atom tag subject 'Tagging at 1151968727'
|
||||||
test_atom tag contents:subject 'Tagging at 1151939927'
|
test_atom tag contents:subject 'Tagging at 1151968727'
|
||||||
test_atom tag body ''
|
test_atom tag body ''
|
||||||
test_atom tag contents:body ''
|
test_atom tag contents:body ''
|
||||||
test_atom tag contents:signature ''
|
test_atom tag contents:signature ''
|
||||||
test_atom tag contents 'Tagging at 1151939927
|
test_atom tag contents 'Tagging at 1151968727
|
||||||
'
|
'
|
||||||
test_atom tag HEAD ' '
|
test_atom tag HEAD ' '
|
||||||
|
|
||||||
|
@ -146,95 +146,123 @@ test_expect_success 'Check invalid format specifiers are errors' '
|
||||||
test_must_fail git for-each-ref --format="%(authordate:INVALID)" refs/heads
|
test_must_fail git for-each-ref --format="%(authordate:INVALID)" refs/heads
|
||||||
'
|
'
|
||||||
|
|
||||||
cat >expected <<\EOF
|
test_date () {
|
||||||
'refs/heads/master' 'Mon Jul 3 17:18:43 2006 +0200' 'Mon Jul 3 17:18:44 2006 +0200'
|
f=$1 &&
|
||||||
'refs/tags/testtag' 'Mon Jul 3 17:18:45 2006 +0200'
|
committer_date=$2 &&
|
||||||
EOF
|
author_date=$3 &&
|
||||||
|
tagger_date=$4 &&
|
||||||
|
cat >expected <<-EOF &&
|
||||||
|
'refs/heads/master' '$committer_date' '$author_date'
|
||||||
|
'refs/tags/testtag' '$tagger_date'
|
||||||
|
EOF
|
||||||
|
(
|
||||||
|
git for-each-ref --shell \
|
||||||
|
--format="%(refname) %(committerdate${f:+:$f}) %(authordate${f:+:$f})" \
|
||||||
|
refs/heads &&
|
||||||
|
git for-each-ref --shell \
|
||||||
|
--format="%(refname) %(taggerdate${f:+:$f})" \
|
||||||
|
refs/tags
|
||||||
|
) >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
}
|
||||||
|
|
||||||
test_expect_success 'Check unformatted date fields output' '
|
test_expect_success 'Check unformatted date fields output' '
|
||||||
(git for-each-ref --shell --format="%(refname) %(committerdate) %(authordate)" refs/heads &&
|
test_date "" \
|
||||||
git for-each-ref --shell --format="%(refname) %(taggerdate)" refs/tags) >actual &&
|
"Tue Jul 4 01:18:43 2006 +0200" \
|
||||||
test_cmp expected actual
|
"Tue Jul 4 01:18:44 2006 +0200" \
|
||||||
|
"Tue Jul 4 01:18:45 2006 +0200"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Check format "default" formatted date fields output' '
|
test_expect_success 'Check format "default" formatted date fields output' '
|
||||||
f=default &&
|
test_date default \
|
||||||
(git for-each-ref --shell --format="%(refname) %(committerdate:$f) %(authordate:$f)" refs/heads &&
|
"Tue Jul 4 01:18:43 2006 +0200" \
|
||||||
git for-each-ref --shell --format="%(refname) %(taggerdate:$f)" refs/tags) >actual &&
|
"Tue Jul 4 01:18:44 2006 +0200" \
|
||||||
test_cmp expected actual
|
"Tue Jul 4 01:18:45 2006 +0200"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Check format "default-local" date fields output' '
|
||||||
|
test_date default-local "Mon Jul 3 23:18:43 2006" "Mon Jul 3 23:18:44 2006" "Mon Jul 3 23:18:45 2006"
|
||||||
'
|
'
|
||||||
|
|
||||||
# Don't know how to do relative check because I can't know when this script
|
# Don't know how to do relative check because I can't know when this script
|
||||||
# is going to be run and can't fake the current time to git, and hence can't
|
# is going to be run and can't fake the current time to git, and hence can't
|
||||||
# provide expected output. Instead, I'll just make sure that "relative"
|
# provide expected output. Instead, I'll just make sure that "relative"
|
||||||
# doesn't exit in error
|
# doesn't exit in error
|
||||||
#
|
|
||||||
#cat >expected <<\EOF
|
|
||||||
#
|
|
||||||
#EOF
|
|
||||||
#
|
|
||||||
test_expect_success 'Check format "relative" date fields output' '
|
test_expect_success 'Check format "relative" date fields output' '
|
||||||
f=relative &&
|
f=relative &&
|
||||||
(git for-each-ref --shell --format="%(refname) %(committerdate:$f) %(authordate:$f)" refs/heads &&
|
(git for-each-ref --shell --format="%(refname) %(committerdate:$f) %(authordate:$f)" refs/heads &&
|
||||||
git for-each-ref --shell --format="%(refname) %(taggerdate:$f)" refs/tags) >actual
|
git for-each-ref --shell --format="%(refname) %(taggerdate:$f)" refs/tags) >actual
|
||||||
'
|
'
|
||||||
|
|
||||||
cat >expected <<\EOF
|
# We just check that this is the same as "relative" for now.
|
||||||
'refs/heads/master' '2006-07-03' '2006-07-03'
|
test_expect_success 'Check format "relative-local" date fields output' '
|
||||||
'refs/tags/testtag' '2006-07-03'
|
test_date relative-local \
|
||||||
EOF
|
"$(git for-each-ref --format="%(committerdate:relative)" refs/heads)" \
|
||||||
|
"$(git for-each-ref --format="%(authordate:relative)" refs/heads)" \
|
||||||
|
"$(git for-each-ref --format="%(taggerdate:relative)" refs/tags)"
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'Check format "short" date fields output' '
|
test_expect_success 'Check format "short" date fields output' '
|
||||||
f=short &&
|
test_date short 2006-07-04 2006-07-04 2006-07-04
|
||||||
(git for-each-ref --shell --format="%(refname) %(committerdate:$f) %(authordate:$f)" refs/heads &&
|
|
||||||
git for-each-ref --shell --format="%(refname) %(taggerdate:$f)" refs/tags) >actual &&
|
|
||||||
test_cmp expected actual
|
|
||||||
'
|
'
|
||||||
|
|
||||||
cat >expected <<\EOF
|
test_expect_success 'Check format "short-local" date fields output' '
|
||||||
'refs/heads/master' 'Mon Jul 3 15:18:43 2006' 'Mon Jul 3 15:18:44 2006'
|
test_date short-local 2006-07-03 2006-07-03 2006-07-03
|
||||||
'refs/tags/testtag' 'Mon Jul 3 15:18:45 2006'
|
'
|
||||||
EOF
|
|
||||||
|
|
||||||
test_expect_success 'Check format "local" date fields output' '
|
test_expect_success 'Check format "local" date fields output' '
|
||||||
f=local &&
|
test_date local \
|
||||||
(git for-each-ref --shell --format="%(refname) %(committerdate:$f) %(authordate:$f)" refs/heads &&
|
"Mon Jul 3 23:18:43 2006" \
|
||||||
git for-each-ref --shell --format="%(refname) %(taggerdate:$f)" refs/tags) >actual &&
|
"Mon Jul 3 23:18:44 2006" \
|
||||||
test_cmp expected actual
|
"Mon Jul 3 23:18:45 2006"
|
||||||
'
|
'
|
||||||
|
|
||||||
cat >expected <<\EOF
|
|
||||||
'refs/heads/master' '2006-07-03 17:18:43 +0200' '2006-07-03 17:18:44 +0200'
|
|
||||||
'refs/tags/testtag' '2006-07-03 17:18:45 +0200'
|
|
||||||
EOF
|
|
||||||
|
|
||||||
test_expect_success 'Check format "iso8601" date fields output' '
|
test_expect_success 'Check format "iso8601" date fields output' '
|
||||||
f=iso8601 &&
|
test_date iso8601 \
|
||||||
(git for-each-ref --shell --format="%(refname) %(committerdate:$f) %(authordate:$f)" refs/heads &&
|
"2006-07-04 01:18:43 +0200" \
|
||||||
git for-each-ref --shell --format="%(refname) %(taggerdate:$f)" refs/tags) >actual &&
|
"2006-07-04 01:18:44 +0200" \
|
||||||
test_cmp expected actual
|
"2006-07-04 01:18:45 +0200"
|
||||||
'
|
'
|
||||||
|
|
||||||
cat >expected <<\EOF
|
test_expect_success 'Check format "iso8601-local" date fields output' '
|
||||||
'refs/heads/master' 'Mon, 3 Jul 2006 17:18:43 +0200' 'Mon, 3 Jul 2006 17:18:44 +0200'
|
test_date iso8601-local "2006-07-03 23:18:43 +0000" "2006-07-03 23:18:44 +0000" "2006-07-03 23:18:45 +0000"
|
||||||
'refs/tags/testtag' 'Mon, 3 Jul 2006 17:18:45 +0200'
|
'
|
||||||
EOF
|
|
||||||
|
|
||||||
test_expect_success 'Check format "rfc2822" date fields output' '
|
test_expect_success 'Check format "rfc2822" date fields output' '
|
||||||
f=rfc2822 &&
|
test_date rfc2822 \
|
||||||
(git for-each-ref --shell --format="%(refname) %(committerdate:$f) %(authordate:$f)" refs/heads &&
|
"Tue, 4 Jul 2006 01:18:43 +0200" \
|
||||||
git for-each-ref --shell --format="%(refname) %(taggerdate:$f)" refs/tags) >actual &&
|
"Tue, 4 Jul 2006 01:18:44 +0200" \
|
||||||
test_cmp expected actual
|
"Tue, 4 Jul 2006 01:18:45 +0200"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Check format "rfc2822-local" date fields output' '
|
||||||
|
test_date rfc2822-local "Mon, 3 Jul 2006 23:18:43 +0000" "Mon, 3 Jul 2006 23:18:44 +0000" "Mon, 3 Jul 2006 23:18:45 +0000"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Check format "raw" date fields output' '
|
||||||
|
test_date raw "1151968723 +0200" "1151968724 +0200" "1151968725 +0200"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Check format "raw-local" date fields output' '
|
||||||
|
test_date raw-local "1151968723 +0000" "1151968724 +0000" "1151968725 +0000"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Check format of strftime date fields' '
|
test_expect_success 'Check format of strftime date fields' '
|
||||||
echo "my date is 2006-07-03" >expected &&
|
echo "my date is 2006-07-04" >expected &&
|
||||||
git for-each-ref \
|
git for-each-ref \
|
||||||
--format="%(authordate:format:my date is %Y-%m-%d)" \
|
--format="%(authordate:format:my date is %Y-%m-%d)" \
|
||||||
refs/heads >actual &&
|
refs/heads >actual &&
|
||||||
test_cmp expected actual
|
test_cmp expected actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Check format of strftime-local date fields' '
|
||||||
|
echo "my date is 2006-07-03" >expected &&
|
||||||
|
git for-each-ref \
|
||||||
|
--format="%(authordate:format-local:my date is %Y-%m-%d)" \
|
||||||
|
refs/heads >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'exercise strftime with odd fields' '
|
test_expect_success 'exercise strftime with odd fields' '
|
||||||
echo >expected &&
|
echo >expected &&
|
||||||
git for-each-ref --format="%(authordate:format:)" refs/heads >actual &&
|
git for-each-ref --format="%(authordate:format:)" refs/heads >actual &&
|
||||||
|
@ -546,8 +574,8 @@ body contents
|
||||||
$sig"
|
$sig"
|
||||||
|
|
||||||
cat >expected <<EOF
|
cat >expected <<EOF
|
||||||
$(git rev-parse refs/tags/master) <committer@example.com> refs/tags/master
|
|
||||||
$(git rev-parse refs/tags/bogo) <committer@example.com> refs/tags/bogo
|
$(git rev-parse refs/tags/bogo) <committer@example.com> refs/tags/bogo
|
||||||
|
$(git rev-parse refs/tags/master) <committer@example.com> refs/tags/master
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success 'Verify sort with multiple keys' '
|
test_expect_success 'Verify sort with multiple keys' '
|
||||||
|
|
Loading…
Reference in a new issue