git-am: Add --ignore-date option
This new option tells 'git-am' to ignore the date header field recorded in the format-patch output. The commits will have the timestamp when they are created instead. You can work a lot in one day to accumulate many changes, but apply and push to the public repository only some of them at the end of the first day. Then next day you can spend all your working hours reading comics or chatting with your coworkers, and apply your remaining patches from the previous day using this option to pretend that you have been working at the end of the day. Signed-off-by: しらいしななこ <nanako3@lavabit.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3f01ad6654
commit
a79ec62d06
@ -10,7 +10,8 @@ SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git am' [--signoff] [--keep] [--utf8 | --no-utf8]
|
||||
[--3way] [--interactive]
|
||||
[--3way] [--interactive] [--committer-date-is-author-date]
|
||||
[--ignore-date]
|
||||
[--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
|
||||
[--reject]
|
||||
[<mbox> | <Maildir>...]
|
||||
@ -73,6 +74,20 @@ default. You could use `--no-utf8` to override this.
|
||||
--interactive::
|
||||
Run interactively.
|
||||
|
||||
--committer-date-is-author-date::
|
||||
By default the command records the date from the e-mail
|
||||
message as the commit author date, and uses the time of
|
||||
commit creation as the committer date. This allows the
|
||||
user to lie about the committer date by using the same
|
||||
timestamp as the author date.
|
||||
|
||||
--ignore-date::
|
||||
By default the command records the date from the e-mail
|
||||
message as the commit author date, and uses the time of
|
||||
commit creation as the committer date. This allows the
|
||||
user to lie about author timestamp by using the same
|
||||
timestamp as the committer date.
|
||||
|
||||
--skip::
|
||||
Skip the current patch. This is only meaningful when
|
||||
restarting an aborted patch.
|
||||
|
@ -25,6 +25,7 @@ r,resolved to be used after a patch failure
|
||||
skip skip the current patch
|
||||
abort restore the original branch and abort the patching operation.
|
||||
committer-date-is-author-date lie about committer date
|
||||
ignore-date use current timestamp for author date
|
||||
rebasing (internal use for git-rebase)"
|
||||
|
||||
. git-sh-setup
|
||||
@ -136,6 +137,7 @@ sign= utf8=t keep= skip= interactive= resolved= rebasing= abort=
|
||||
resolvemsg= resume=
|
||||
git_apply_opt=
|
||||
committer_date_is_author_date=
|
||||
ignore_date=
|
||||
|
||||
while test $# != 0
|
||||
do
|
||||
@ -175,6 +177,8 @@ do
|
||||
git_apply_opt="$git_apply_opt $1" ;;
|
||||
--committer-date-is-author-date)
|
||||
committer_date_is_author_date=t ;;
|
||||
--ignore-date)
|
||||
ignore_date=t ;;
|
||||
--)
|
||||
shift; break ;;
|
||||
*)
|
||||
@ -529,6 +533,10 @@ do
|
||||
tree=$(git write-tree) &&
|
||||
parent=$(git rev-parse --verify HEAD) &&
|
||||
commit=$(
|
||||
if test -n "$ignore_date"
|
||||
then
|
||||
GIT_AUTHOR_DATE=
|
||||
fi
|
||||
if test -n "$committer_date_is_author_date"
|
||||
then
|
||||
GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
|
||||
|
@ -277,4 +277,17 @@ test_expect_success 'am without --committer-date-is-author-date' '
|
||||
test "$at" != "$ct"
|
||||
'
|
||||
|
||||
# This checks for +0000 because TZ is set to UTC and that should
|
||||
# show up when the current time is used. The date in message is set
|
||||
# by test_tick that uses -0700 timezone; if this feature does not
|
||||
# work, we will see that instead of +0000.
|
||||
test_expect_success 'am --ignore-date' '
|
||||
git checkout first &&
|
||||
test_tick &&
|
||||
git am --ignore-date patch1 &&
|
||||
git cat-file commit HEAD | sed -e "/^$/q" >head1 &&
|
||||
at=$(sed -ne "/^author /s/.*> //p" head1) &&
|
||||
echo "$at" | grep "+0000"
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user