Browse Source

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>
maint
Nanako Shiraishi 16 years ago committed by Junio C Hamano
parent
commit
a79ec62d06
  1. 17
      Documentation/git-am.txt
  2. 8
      git-am.sh
  3. 13
      t/t4150-am.sh

17
Documentation/git-am.txt

@ -10,7 +10,8 @@ SYNOPSIS @@ -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. @@ -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.

8
git-am.sh

@ -25,6 +25,7 @@ r,resolved to be used after a patch failure @@ -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= @@ -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 @@ -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 @@ -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"

13
t/t4150-am.sh

@ -277,4 +277,17 @@ test_expect_success 'am without --committer-date-is-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…
Cancel
Save