* [PATCH] builtin-commit: add --date option
@ 2009-12-01 0:27 Miklos Vajna
2009-12-02 17:11 ` Miklos Vajna
2009-12-02 19:26 ` Jeff King
0 siblings, 2 replies; 18+ messages in thread
From: Miklos Vajna @ 2009-12-01 0:27 UTC (permalink / raw)
To: git
This is useful in case git commit --amend is used but the user wants to
set the date of the new commit to a specified one, since GIT_AUTHOR_DATE
is ignored in such a situation.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
---
Documentation/git-commit.txt | 6 +++++-
builtin-commit.c | 6 +++++-
t/t7501-commit.sh | 15 +++++++++++++++
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index 3ea80c8..3b9a7c3 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -11,7 +11,7 @@ SYNOPSIS
'git commit' [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] [--dry-run]
[(-c | -C) <commit>] [-F <file> | -m <msg>]
[--allow-empty] [--no-verify] [-e] [--author=<author>]
- [--cleanup=<mode>] [--] [[-i | -o ]<file>...]
+ [--date=<date>] [--cleanup=<mode>] [--] [[-i | -o ]<file>...]
DESCRIPTION
-----------
@@ -80,6 +80,10 @@ OPTIONS
an existing commit that matches the given string and its author
name is used.
+--date=<date>::
+ Override the date used in the commit. The format is the Git
+ native one and is `<time> SP <offutc>`.
+
-m <msg>::
--message=<msg>::
Use the given <msg> as the commit message.
diff --git a/builtin-commit.c b/builtin-commit.c
index 09d2840..594328e 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -52,7 +52,7 @@ static char *edit_message, *use_message;
static char *author_name, *author_email, *author_date;
static int all, edit_flag, also, interactive, only, amend, signoff;
static int quiet, verbose, no_verify, allow_empty, dry_run;
-static char *untracked_files_arg;
+static char *untracked_files_arg, *force_date;
/*
* The default commit message cleanup mode will remove the lines
* beginning with # (shell comments) and leading and trailing
@@ -90,6 +90,7 @@ static struct option builtin_commit_options[] = {
OPT_FILENAME('F', "file", &logfile, "read log from file"),
OPT_STRING(0, "author", &force_author, "AUTHOR", "override author for commit"),
+ OPT_STRING(0, "date", &force_date, "DATE", "override date for commit"),
OPT_CALLBACK('m', "message", &message, "MESSAGE", "specify commit message", opt_parse_m),
OPT_STRING('c', "reedit-message", &edit_message, "COMMIT", "reuse and edit message from specified commit "),
OPT_STRING('C', "reuse-message", &use_message, "COMMIT", "reuse message from specified commit"),
@@ -409,6 +410,9 @@ static void determine_author_info(void)
email = xstrndup(lb + 2, rb - (lb + 2));
}
+ if (force_date)
+ date = force_date;
+
author_name = name;
author_email = email;
author_date = date;
diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh
index a603f6d..a529701 100755
--- a/t/t7501-commit.sh
+++ b/t/t7501-commit.sh
@@ -211,6 +211,21 @@ test_expect_success 'amend commit to fix author' '
'
+test_expect_success 'amend commit to fix date' '
+
+ test_tick &&
+ newtick=$GIT_AUTHOR_DATE &&
+ git reset --hard &&
+ git cat-file -p HEAD |
+ sed -e "s/author.*/author $author $newtick/" \
+ -e "s/^\(committer.*> \).*$/\1$GIT_COMMITTER_DATE/" > \
+ expected &&
+ git commit --amend --date="$newtick" &&
+ git cat-file -p HEAD > current &&
+ test_cmp expected current
+
+'
+
test_expect_success 'sign off (1)' '
echo 1 >positive &&
--
1.6.5.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH] builtin-commit: add --date option
2009-12-01 0:27 [PATCH] builtin-commit: add --date option Miklos Vajna
@ 2009-12-02 17:11 ` Miklos Vajna
2009-12-02 17:35 ` Junio C Hamano
2009-12-02 19:26 ` Jeff King
1 sibling, 1 reply; 18+ messages in thread
From: Miklos Vajna @ 2009-12-02 17:11 UTC (permalink / raw)
To: git
[-- Attachment #1: Type: text/plain, Size: 587 bytes --]
On Tue, Dec 01, 2009 at 01:27:32AM +0100, Miklos Vajna <vmiklos@frugalware.org> wrote:
> +--date=<date>::
> + Override the date used in the commit. The format is the Git
> + native one and is `<time> SP <offutc>`.
I just noticed that fmt_ident() calls parse_date(), so other formats are
supported as well.
Is there any documentation describing what does parse_date() accept?
Based on t0006-date.sh and the comments in the source, I see 3 supported
formats:
1) <unix timestamp> <timezone>
2) A format like 2008-12-02 18:04:00
3) RFC 2822 (Thu, 21 Dec 2000 16:01:07 +0200)
Thanks.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] builtin-commit: add --date option
2009-12-02 17:11 ` Miklos Vajna
@ 2009-12-02 17:35 ` Junio C Hamano
2009-12-02 17:55 ` Junio C Hamano
2009-12-02 19:24 ` Jeff King
0 siblings, 2 replies; 18+ messages in thread
From: Junio C Hamano @ 2009-12-02 17:35 UTC (permalink / raw)
To: Miklos Vajna; +Cc: git
Miklos Vajna <vmiklos@frugalware.org> writes:
> On Tue, Dec 01, 2009 at 01:27:32AM +0100, Miklos Vajna <vmiklos@frugalware.org> wrote:
>> +--date=<date>::
>> + Override the date used in the commit. The format is the Git
>> + native one and is `<time> SP <offutc>`.
>
> I just noticed that fmt_ident() calls parse_date(), so other formats are
> supported as well.
>
> Is there any documentation describing what does parse_date() accept?
>
> Based on t0006-date.sh and the comments in the source, I see 3 supported
> formats:
>
> 1) <unix timestamp> <timezone>
>
> 2) A format like 2008-12-02 18:04:00
>
> 3) RFC 2822 (Thu, 21 Dec 2000 16:01:07 +0200)
The above are all supported (you can label 2 as ISO even though the
official ISO8601 wants "T" instead of " " between date and time).
For more amusing ones, see
http://article.gmane.org/gmane.comp.version-control.git/12241
and follow the discussion there ;-)
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH] builtin-commit: add --date option
2009-12-02 17:35 ` Junio C Hamano
@ 2009-12-02 17:55 ` Junio C Hamano
2009-12-02 21:40 ` Miklos Vajna
2009-12-02 19:24 ` Jeff King
1 sibling, 1 reply; 18+ messages in thread
From: Junio C Hamano @ 2009-12-02 17:55 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Miklos Vajna, git
Junio C Hamano <gitster@pobox.com> writes:
> Miklos Vajna <vmiklos@frugalware.org> writes:
> ...
>> Is there any documentation describing what does parse_date() accept?
>>
>> Based on t0006-date.sh and the comments in the source, I see 3 supported
>> formats:
>>
>> 1) <unix timestamp> <timezone>
>>
>> 2) A format like 2008-12-02 18:04:00
>>
>> 3) RFC 2822 (Thu, 21 Dec 2000 16:01:07 +0200)
>
> The above are all supported (you can label 2 as ISO even though the
> official ISO8601 wants "T" instead of " " between date and time).
>
> For more amusing ones, see
>
> http://article.gmane.org/gmane.comp.version-control.git/12241
>
> and follow the discussion there ;-)
I should have mentioned ones with more importance in real-life before
referring you to the amusing ones: US and European dates.
date.c::match_multi_number() groks these:
mm/dd/yy[yy] (US)
dd.mm.yy[yy] (European)
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH] builtin-commit: add --date option
2009-12-02 17:35 ` Junio C Hamano
2009-12-02 17:55 ` Junio C Hamano
@ 2009-12-02 19:24 ` Jeff King
2009-12-02 20:33 ` Miklos Vajna
1 sibling, 1 reply; 18+ messages in thread
From: Jeff King @ 2009-12-02 19:24 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Miklos Vajna, git
On Wed, Dec 02, 2009 at 09:35:48AM -0800, Junio C Hamano wrote:
> > Is there any documentation describing what does parse_date() accept?
> [...]
> The above are all supported (you can label 2 as ISO even though the
> official ISO8601 wants "T" instead of " " between date and time).
>
> For more amusing ones, see
>
> http://article.gmane.org/gmane.comp.version-control.git/12241
>
> and follow the discussion there ;-)
Aren't the amusing ones the result of approxidate, and not parse_date?
At least that is my recollection from working on the date code when I
ate 30 hot dogs last August.
-Peff
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] builtin-commit: add --date option
2009-12-02 19:24 ` Jeff King
@ 2009-12-02 20:33 ` Miklos Vajna
0 siblings, 0 replies; 18+ messages in thread
From: Miklos Vajna @ 2009-12-02 20:33 UTC (permalink / raw)
To: Jeff King; +Cc: Junio C Hamano, git
[-- Attachment #1: Type: text/plain, Size: 826 bytes --]
On Wed, Dec 02, 2009 at 02:24:25PM -0500, Jeff King <peff@peff.net> wrote:
> On Wed, Dec 02, 2009 at 09:35:48AM -0800, Junio C Hamano wrote:
>
> > > Is there any documentation describing what does parse_date() accept?
> > [...]
> > The above are all supported (you can label 2 as ISO even though the
> > official ISO8601 wants "T" instead of " " between date and time).
> >
> > For more amusing ones, see
> >
> > http://article.gmane.org/gmane.comp.version-control.git/12241
> >
> > and follow the discussion there ;-)
>
> Aren't the amusing ones the result of approxidate, and not parse_date?
> At least that is my recollection from working on the date code when I
> ate 30 hot dogs last August.
I think you are right, at least --date="2008-12-02 18:04:00" works here,
but not --date="teatime".
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] builtin-commit: add --date option
2009-12-01 0:27 [PATCH] builtin-commit: add --date option Miklos Vajna
2009-12-02 17:11 ` Miklos Vajna
@ 2009-12-02 19:26 ` Jeff King
2009-12-02 19:38 ` Junio C Hamano
2009-12-02 22:12 ` [PATCH] builtin-commit: add --date option Miklos Vajna
1 sibling, 2 replies; 18+ messages in thread
From: Jeff King @ 2009-12-02 19:26 UTC (permalink / raw)
To: Miklos Vajna; +Cc: git
On Tue, Dec 01, 2009 at 01:27:32AM +0100, Miklos Vajna wrote:
> This is useful in case git commit --amend is used but the user wants to
> set the date of the new commit to a specified one, since GIT_AUTHOR_DATE
> is ignored in such a situation.
Do you really want to set the date to something arbitrary, or do you
just want to set it to "now"? If the latter case, do you really just
want the recently discussed --reset-author?
Also, is there a good reason why GIT_AUTHOR_DATE is not respected in
this case? If not, should we simply be fixing that bug instead?
-Peff
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] builtin-commit: add --date option
2009-12-02 19:26 ` Jeff King
@ 2009-12-02 19:38 ` Junio C Hamano
2009-12-02 21:07 ` Miklos Vajna
2009-12-02 22:16 ` [PATCH 1/2] " Miklos Vajna
2009-12-02 22:12 ` [PATCH] builtin-commit: add --date option Miklos Vajna
1 sibling, 2 replies; 18+ messages in thread
From: Junio C Hamano @ 2009-12-02 19:38 UTC (permalink / raw)
To: Jeff King; +Cc: Miklos Vajna, git
Jeff King <peff@peff.net> writes:
> Do you really want to set the date to something arbitrary, or do you
> just want to set it to "now"? If the latter case, do you really just
> want the recently discussed --reset-author?
>
> Also, is there a good reason why GIT_AUTHOR_DATE is not respected in
> this case? If not, should we simply be fixing that bug instead?
I expect I won't be on the list for the rest of the day (I've started the
preparation to tag -rc1), but I have two-and-half points before this
discussion goes too far:
- The "--reset-author" patch will be in 1.6.6 (it is already in 'master'
yesterday, I think);
- We should honor GIT_AUTHOR_DATE if --reset-author is given.
- I _think_ we should ignore GIT_AUTHOR_DATE if --reset-author is not
given, as --amend/-c/-C is stronger for being command line options than
an environment variable.
So I do not think --date is something we urgently need, even though it
might be nice to have it to be consistent with --author.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] builtin-commit: add --date option
2009-12-02 19:38 ` Junio C Hamano
@ 2009-12-02 21:07 ` Miklos Vajna
2009-12-02 22:16 ` [PATCH 1/2] " Miklos Vajna
1 sibling, 0 replies; 18+ messages in thread
From: Miklos Vajna @ 2009-12-02 21:07 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Jeff King, git
[-- Attachment #1: Type: text/plain, Size: 1013 bytes --]
On Wed, Dec 02, 2009 at 11:38:05AM -0800, Junio C Hamano <gitster@pobox.com> wrote:
> - We should honor GIT_AUTHOR_DATE if --reset-author is given.
This is already a situation, as far as I see.
> - I _think_ we should ignore GIT_AUTHOR_DATE if --reset-author is not
> given, as --amend/-c/-C is stronger for being command line options than
> an environment variable.
We already ignore GIT_AUTHOR_DATE if --reset-author is not given, also
when I change it like this:
diff --git a/builtin-commit.c b/builtin-commit.c
index e93a647..7234c7d 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -397,7 +397,8 @@ static void determine_author_info(void)
name = xstrndup(a + 8, lb - (a + 8));
email = xstrndup(lb + 2, rb - (lb + 2));
- date = xstrndup(rb + 2, eol - (rb + 2));
+ if (!date)
+ date = xstrndup(rb + 2, eol - (rb + 2));
}
if (force_author) {
tests 27, 33, 38 and 39 fail in t7501-commit.sh.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 1/2] builtin-commit: add --date option
2009-12-02 19:38 ` Junio C Hamano
2009-12-02 21:07 ` Miklos Vajna
@ 2009-12-02 22:16 ` Miklos Vajna
2009-12-02 22:16 ` [PATCH 2/2] Document date formats accepted by parse_date() Miklos Vajna
1 sibling, 1 reply; 18+ messages in thread
From: Miklos Vajna @ 2009-12-02 22:16 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Jeff King, git
This is like --author: allow a user to specify a given date without
using the GIT_AUTHOR_DATE environment variable.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
---
On Wed, Dec 02, 2009 at 11:38:05AM -0800, Junio C Hamano <gitster@pobox.com> wrote:
> So I do not think --date is something we urgently need, even though it
> might be nice to have it to be consistent with --author.
Changes from the previous version:
* updated the commit message
* rebased on top of current master that has --reset-author
Documentation/git-commit.txt | 5 ++++-
builtin-commit.c | 6 +++++-
t/t7501-commit.sh | 15 +++++++++++++++
3 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index d227cec..cbbbeeb 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -11,7 +11,7 @@ SYNOPSIS
'git commit' [-a | --interactive] [-s] [-v] [-u<mode>] [--amend] [--dry-run]
[(-c | -C) <commit>] [-F <file> | -m <msg>] [--reset-author]
[--allow-empty] [--no-verify] [-e] [--author=<author>]
- [--cleanup=<mode>] [--] [[-i | -o ]<file>...]
+ [--date=<date>] [--cleanup=<mode>] [--] [[-i | -o ]<file>...]
DESCRIPTION
-----------
@@ -85,6 +85,9 @@ OPTIONS
an existing commit that matches the given string and its author
name is used.
+--date=<date>::
+ Override the date used in the commit.
+
-m <msg>::
--message=<msg>::
Use the given <msg> as the commit message.
diff --git a/builtin-commit.c b/builtin-commit.c
index e93a647..9a1264a 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -52,7 +52,7 @@ static char *edit_message, *use_message;
static char *author_name, *author_email, *author_date;
static int all, edit_flag, also, interactive, only, amend, signoff;
static int quiet, verbose, no_verify, allow_empty, dry_run, renew_authorship;
-static char *untracked_files_arg;
+static char *untracked_files_arg, *force_date;
/*
* The default commit message cleanup mode will remove the lines
* beginning with # (shell comments) and leading and trailing
@@ -90,6 +90,7 @@ static struct option builtin_commit_options[] = {
OPT_FILENAME('F', "file", &logfile, "read log from file"),
OPT_STRING(0, "author", &force_author, "AUTHOR", "override author for commit"),
+ OPT_STRING(0, "date", &force_date, "DATE", "override date for commit"),
OPT_CALLBACK('m', "message", &message, "MESSAGE", "specify commit message", opt_parse_m),
OPT_STRING('c', "reedit-message", &edit_message, "COMMIT", "reuse and edit message from specified commit"),
OPT_STRING('C', "reuse-message", &use_message, "COMMIT", "reuse message from specified commit"),
@@ -410,6 +411,9 @@ static void determine_author_info(void)
email = xstrndup(lb + 2, rb - (lb + 2));
}
+ if (force_date)
+ date = force_date;
+
author_name = name;
author_email = email;
author_date = date;
diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh
index a603f6d..a529701 100755
--- a/t/t7501-commit.sh
+++ b/t/t7501-commit.sh
@@ -211,6 +211,21 @@ test_expect_success 'amend commit to fix author' '
'
+test_expect_success 'amend commit to fix date' '
+
+ test_tick &&
+ newtick=$GIT_AUTHOR_DATE &&
+ git reset --hard &&
+ git cat-file -p HEAD |
+ sed -e "s/author.*/author $author $newtick/" \
+ -e "s/^\(committer.*> \).*$/\1$GIT_COMMITTER_DATE/" > \
+ expected &&
+ git commit --amend --date="$newtick" &&
+ git cat-file -p HEAD > current &&
+ test_cmp expected current
+
+'
+
test_expect_success 'sign off (1)' '
echo 1 >positive &&
--
1.6.5.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 2/2] Document date formats accepted by parse_date()
2009-12-02 22:16 ` [PATCH 1/2] " Miklos Vajna
@ 2009-12-02 22:16 ` Miklos Vajna
2009-12-02 22:33 ` Nanako Shiraishi
0 siblings, 1 reply; 18+ messages in thread
From: Miklos Vajna @ 2009-12-02 22:16 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Jeff King, git
---
Documentation/date-formats.txt | 23 +++++++++++++++++++++++
Documentation/git-commit-tree.txt | 1 +
Documentation/git-commit.txt | 2 ++
3 files changed, 26 insertions(+), 0 deletions(-)
create mode 100644 Documentation/date-formats.txt
diff --git a/Documentation/date-formats.txt b/Documentation/date-formats.txt
new file mode 100644
index 0000000..626c887
--- /dev/null
+++ b/Documentation/date-formats.txt
@@ -0,0 +1,23 @@
+DATE FORMATS
+------------
+
+The GIT_AUTHOR_DATE, GIT_COMMITTER_DATE environment variables
+ifdef::git-commit[]
+and the `--date` option
+endif::git-commit[]
+support the following date formats:
+
+Git native format::
+ It is `<unix timestamp> <timezone offset>`, where `<unix
+ timestamp>` is the number of seconds since the UNIX epoch.
+ `<timezone offset>` is a positive or negative offset from UTC.
+ For example CET (which is 2 hours ahead UTC) is `+0200`.
+
+RFC 2822::
+ The standard email format as described by RFC 2822, for example
+ `Thu, 07 Apr 2005 22:13:13 +0200`.
+
+ISO 8601::
+ Time and date specified by the ISO 8601 standard, for example
+ `2005-04-07T22:13:13`. The parser accepts a space instead of the
+ `T` character as well.
diff --git a/Documentation/git-commit-tree.txt b/Documentation/git-commit-tree.txt
index b8834ba..4fec5d5 100644
--- a/Documentation/git-commit-tree.txt
+++ b/Documentation/git-commit-tree.txt
@@ -73,6 +73,7 @@ A commit comment is read from stdin. If a changelog
entry is not provided via "<" redirection, 'git-commit-tree' will just wait
for one to be entered and terminated with ^D.
+include::date-formats.txt[]
Diagnostics
-----------
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index cbbbeeb..17783b4 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -220,6 +220,8 @@ specified.
these files are also staged for the next commit on top
of what have been staged before.
+:git-commit: 1
+include::date-formats.txt[]
EXAMPLES
--------
--
1.6.5.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 2/2] Document date formats accepted by parse_date()
2009-12-02 22:16 ` [PATCH 2/2] Document date formats accepted by parse_date() Miklos Vajna
@ 2009-12-02 22:33 ` Nanako Shiraishi
2009-12-02 22:42 ` Jeff King
2009-12-02 22:54 ` Junio C Hamano
0 siblings, 2 replies; 18+ messages in thread
From: Nanako Shiraishi @ 2009-12-02 22:33 UTC (permalink / raw)
To: Miklos Vajna; +Cc: Junio C Hamano, Jeff King, git
Quoting Miklos Vajna <vmiklos@frugalware.org>
> ---
I don't think any message needs to be there, but a Signed-Off-By:
line should be.
> +The GIT_AUTHOR_DATE, GIT_COMMITTER_DATE environment variables
> +ifdef::git-commit[]
> +and the `--date` option
> +endif::git-commit[]
> +support the following date formats:
> +
> +Git native format::
> + It is `<unix timestamp> <timezone offset>`, where `<unix
> + timestamp>` is the number of seconds since the UNIX epoch.
> + `<timezone offset>` is a positive or negative offset from UTC.
> + For example CET (which is 2 hours ahead UTC) is `+0200`.
It is better to call it 'internal' format, instead of 'native'.
I think 'native' means the most natural way to Git, and users
view what 'git show' outputs as 'native'.
nana.git% git show -s v1.6.5^0 | grep Date
Date: Sat Oct 10 00:05:19 2009 -0700
nana.git% ./test-date parse 'Sat Oct 10 00:05:19 2009 -0700'
Sat Oct 10 00:05:19 2009 -0700 -> 2009-10-10 07:05:19 +0000
And 'Git native' format is also supported, I think.
> +RFC 2822::
> + The standard email format as described by RFC 2822, for example
> + `Thu, 07 Apr 2005 22:13:13 +0200`.
> +
> +ISO 8601::
> + Time and date specified by the ISO 8601 standard, for example
> + `2005-04-07T22:13:13`. The parser accepts a space instead of the
> + `T` character as well.
I didn't know about "T", but it works (^_^).
nana.git% ./test-date parse '2005-04-07T22:13:13'
2005-04-07T22:13:13 -> 2005-04-07 13:13:13 +0000
Is there something wrong with 'show'?
nana.git% ./test-date show '2005-04-07T22:13:13'
2005-04-07T22:13:13 -> 40 years ago
--
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/2] Document date formats accepted by parse_date()
2009-12-02 22:33 ` Nanako Shiraishi
@ 2009-12-02 22:42 ` Jeff King
2009-12-02 22:54 ` Junio C Hamano
1 sibling, 0 replies; 18+ messages in thread
From: Jeff King @ 2009-12-02 22:42 UTC (permalink / raw)
To: Nanako Shiraishi; +Cc: Miklos Vajna, Junio C Hamano, git
On Thu, Dec 03, 2009 at 07:33:13AM +0900, Nanako Shiraishi wrote:
> Is there something wrong with 'show'?
>
> nana.git% ./test-date show '2005-04-07T22:13:13'
> 2005-04-07T22:13:13 -> 40 years ago
No. It doesn't call parse_date, but instead accepts a time_t-like
"seconds since epoch". I intentionally didn't use parse_date because I
didn't want bugs in parse_date to affect 'show' output, to keep testing
simple.
-Peff
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/2] Document date formats accepted by parse_date()
2009-12-02 22:33 ` Nanako Shiraishi
2009-12-02 22:42 ` Jeff King
@ 2009-12-02 22:54 ` Junio C Hamano
2009-12-02 23:49 ` [PATCH 2/2 v2] " Miklos Vajna
1 sibling, 1 reply; 18+ messages in thread
From: Junio C Hamano @ 2009-12-02 22:54 UTC (permalink / raw)
To: Nanako Shiraishi; +Cc: Miklos Vajna, Junio C Hamano, Jeff King, git
Nanako Shiraishi <nanako3@lavabit.com> writes:
> Is there something wrong with 'show'?
>
> nana.git% ./test-date show '2005-04-07T22:13:13'
> 2005-04-07T22:13:13 -> 40 years ago
Heh, you fooled me, and Peff is right. "test-date show" does not
interpret its input any way other than as seconds-since-epoch.
I agree with the "native->internal" part of the suggestion. What see by
default in "git show" output is merely the ctime(3) format followed by
timezone. I don't mind if we call that "git native", even though I
suspect we do _not have to_ invent new word for that.
Also "test-date parse" seems to accept things like these:
'2009.04.07 20:21:22 -0000'
'04/07/2009 20:21:22 -0000'
'07.04.2009 20:21:22 -0000'
^ permalink raw reply [flat|nested] 18+ messages in thread* [PATCH 2/2 v2] Document date formats accepted by parse_date()
2009-12-02 22:54 ` Junio C Hamano
@ 2009-12-02 23:49 ` Miklos Vajna
0 siblings, 0 replies; 18+ messages in thread
From: Miklos Vajna @ 2009-12-02 23:49 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Nanako Shiraishi, Jeff King, git
---
On Wed, Dec 02, 2009 at 02:54:40PM -0800, Junio C Hamano <gitster@pobox.com> wrote:
> I agree with the "native->internal" part of the suggestion.
Changed.
> Also "test-date parse" seems to accept things like these:
>
> '2009.04.07 20:21:22 -0000'
> '04/07/2009 20:21:22 -0000'
> '07.04.2009 20:21:22 -0000'
Ah OK, I just tried 2009.04.07 (without the time part) and thought it
was about approxidate() as well. I added them.
Documentation/date-formats.txt | 26 ++++++++++++++++++++++++++
Documentation/git-commit-tree.txt | 1 +
Documentation/git-commit.txt | 2 ++
3 files changed, 29 insertions(+), 0 deletions(-)
create mode 100644 Documentation/date-formats.txt
diff --git a/Documentation/date-formats.txt b/Documentation/date-formats.txt
new file mode 100644
index 0000000..c000f08
--- /dev/null
+++ b/Documentation/date-formats.txt
@@ -0,0 +1,26 @@
+DATE FORMATS
+------------
+
+The GIT_AUTHOR_DATE, GIT_COMMITTER_DATE environment variables
+ifdef::git-commit[]
+and the `--date` option
+endif::git-commit[]
+support the following date formats:
+
+Git internal format::
+ It is `<unix timestamp> <timezone offset>`, where `<unix
+ timestamp>` is the number of seconds since the UNIX epoch.
+ `<timezone offset>` is a positive or negative offset from UTC.
+ For example CET (which is 2 hours ahead UTC) is `+0200`.
+
+RFC 2822::
+ The standard email format as described by RFC 2822, for example
+ `Thu, 07 Apr 2005 22:13:13 +0200`.
+
+ISO 8601::
+ Time and date specified by the ISO 8601 standard, for example
+ `2005-04-07T22:13:13`. The parser accepts a space instead of the
+ `T` character as well.
++
+NOTE: In addition, the date part is accepted in the following formats:
+`YYYY.MM.DD`, `MM/DD/YYYY` and `DD.MM.YYYY`.
diff --git a/Documentation/git-commit-tree.txt b/Documentation/git-commit-tree.txt
index b8834ba..4fec5d5 100644
--- a/Documentation/git-commit-tree.txt
+++ b/Documentation/git-commit-tree.txt
@@ -73,6 +73,7 @@ A commit comment is read from stdin. If a changelog
entry is not provided via "<" redirection, 'git-commit-tree' will just wait
for one to be entered and terminated with ^D.
+include::date-formats.txt[]
Diagnostics
-----------
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index cbbbeeb..17783b4 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -220,6 +220,8 @@ specified.
these files are also staged for the next commit on top
of what have been staged before.
+:git-commit: 1
+include::date-formats.txt[]
EXAMPLES
--------
--
1.6.5.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH] builtin-commit: add --date option
2009-12-02 19:26 ` Jeff King
2009-12-02 19:38 ` Junio C Hamano
@ 2009-12-02 22:12 ` Miklos Vajna
2009-12-02 22:22 ` Jeff King
1 sibling, 1 reply; 18+ messages in thread
From: Miklos Vajna @ 2009-12-02 22:12 UTC (permalink / raw)
To: Jeff King; +Cc: git
[-- Attachment #1: Type: text/plain, Size: 725 bytes --]
On Wed, Dec 02, 2009 at 02:26:14PM -0500, Jeff King <peff@peff.net> wrote:
> Do you really want to set the date to something arbitrary, or do you
> just want to set it to "now"? If the latter case, do you really just
> want the recently discussed --reset-author?
No, I want to set it to two days ago, for example when I forgot to
commit at the end of the day and I notice it two days later before I
start to work on something again.
> Also, is there a good reason why GIT_AUTHOR_DATE is not respected in
> this case? If not, should we simply be fixing that bug instead?
GIT_AUTHOR_DATE is respected by --reset-author, just given that we have
--author already, using environment variables for a user can be
uncomfortable.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] builtin-commit: add --date option
2009-12-02 22:12 ` [PATCH] builtin-commit: add --date option Miklos Vajna
@ 2009-12-02 22:22 ` Jeff King
0 siblings, 0 replies; 18+ messages in thread
From: Jeff King @ 2009-12-02 22:22 UTC (permalink / raw)
To: Miklos Vajna; +Cc: git
On Wed, Dec 02, 2009 at 11:12:32PM +0100, Miklos Vajna wrote:
> No, I want to set it to two days ago, for example when I forgot to
> commit at the end of the day and I notice it two days later before I
> start to work on something again.
OK. I think you are being overly meticulous about your commit date, but
that is your right. ;)
> > Also, is there a good reason why GIT_AUTHOR_DATE is not respected in
> > this case? If not, should we simply be fixing that bug instead?
>
> GIT_AUTHOR_DATE is respected by --reset-author, just given that we have
> --author already, using environment variables for a user can be
> uncomfortable.
OK, I can agree with that reasoning.
-Peff
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2009-12-02 23:47 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-01 0:27 [PATCH] builtin-commit: add --date option Miklos Vajna
2009-12-02 17:11 ` Miklos Vajna
2009-12-02 17:35 ` Junio C Hamano
2009-12-02 17:55 ` Junio C Hamano
2009-12-02 21:40 ` Miklos Vajna
2009-12-02 19:24 ` Jeff King
2009-12-02 20:33 ` Miklos Vajna
2009-12-02 19:26 ` Jeff King
2009-12-02 19:38 ` Junio C Hamano
2009-12-02 21:07 ` Miklos Vajna
2009-12-02 22:16 ` [PATCH 1/2] " Miklos Vajna
2009-12-02 22:16 ` [PATCH 2/2] Document date formats accepted by parse_date() Miklos Vajna
2009-12-02 22:33 ` Nanako Shiraishi
2009-12-02 22:42 ` Jeff King
2009-12-02 22:54 ` Junio C Hamano
2009-12-02 23:49 ` [PATCH 2/2 v2] " Miklos Vajna
2009-12-02 22:12 ` [PATCH] builtin-commit: add --date option Miklos Vajna
2009-12-02 22:22 ` Jeff King
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).