diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-01-07 15:35:55 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-01-07 15:35:55 -0800 |
commit | 762c710b3673009f3ee7b2f4f9321b68d52fca72 (patch) | |
tree | c2a5d48084a2eb532657741de5eef5ece94b894c | |
parent | 79f6ce5717844e787f54ca571c0fde845dd52f04 (diff) | |
parent | 788070a261ecc3a37a7e0ed9301ecec4a333586d (diff) | |
download | git-762c710b3673009f3ee7b2f4f9321b68d52fca72.tar.gz git-762c710b3673009f3ee7b2f4f9321b68d52fca72.tar.xz |
Merge branch 'mv/commit-date'
* mv/commit-date:
Document date formats accepted by parse_date()
builtin-commit: add --date option
-rw-r--r-- | Documentation/date-formats.txt | 26 | ||||
-rw-r--r-- | Documentation/git-commit-tree.txt | 1 | ||||
-rw-r--r-- | Documentation/git-commit.txt | 7 | ||||
-rw-r--r-- | builtin-commit.c | 6 | ||||
-rwxr-xr-x | t/t7501-commit.sh | 15 |
5 files changed, 53 insertions, 2 deletions
diff --git a/Documentation/date-formats.txt b/Documentation/date-formats.txt new file mode 100644 index 000000000..c000f08a9 --- /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 b8834bace..4fec5d5e3 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 c97c151ae..5fb43f932 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 ----------- @@ -99,6 +99,9 @@ OPTIONS an existing commit that matches the given string and its author name is used. +--date=<date>:: + Override the author date used in the commit. + -m <msg>:: --message=<msg>:: Use the given <msg> as the commit message. @@ -231,6 +234,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 -------- diff --git a/builtin-commit.c b/builtin-commit.c index 3dfcd77c4..073fe90ba 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -53,7 +53,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 @@ -98,6 +98,7 @@ static struct option builtin_commit_options[] = { OPT_GROUP("Commit message 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"), @@ -441,6 +442,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 a603f6d21..a52970124 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 && |