rebase: add --reset-author-date

The previous commit introduced --ignore-date flag to rebase -i, but the
name is rather vague as it does not say whether the author date or the
committer date is ignored. Add an alias to convey the precise purpose.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Rohit Ashiwal <rohit.ashiwal265@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Rohit Ashiwal 2020-08-17 18:40:04 +01:00 committed by Junio C Hamano
parent a3894aad67
commit 27126692ba
3 changed files with 25 additions and 14 deletions

View File

@ -450,6 +450,7 @@ See also INCOMPATIBLE OPTIONS below.
date. This option implies `--force-rebase`.
--ignore-date::
--reset-author-date::
Instead of using the author date of the original commit, use
the current time as the author date of the rebased commit. This
option implies `--force-rebase`.

View File

@ -1505,8 +1505,10 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
OPT_BOOL(0, "committer-date-is-author-date",
&options.committer_date_is_author_date,
N_("make committer date match author date")),
OPT_BOOL(0, "ignore-date", &options.ignore_date,
OPT_BOOL(0, "reset-author-date", &options.ignore_date,
N_("ignore author date and use current date")),
OPT_HIDDEN_BOOL(0, "ignore-date", &options.ignore_date,
N_("synonym of --reset-author-date")),
OPT_PASSTHRU_ARGV('C', NULL, &options.git_am_opts, N_("n"),
N_("passed to 'git apply'"), 0),
OPT_BOOL(0, "ignore-whitespace", &ignore_whitespace,

View File

@ -117,20 +117,20 @@ test_atime_is_ignored () {
! grep -v +0000 authortime
}
test_expect_success '--ignore-date works with apply backend' '
test_expect_success '--reset-author-date works with apply backend' '
git commit --amend --date="$GIT_AUTHOR_DATE" &&
git rebase --apply --ignore-date HEAD^ &&
git rebase --apply --reset-author-date HEAD^ &&
test_atime_is_ignored -1
'
test_expect_success '--ignore-date works with merge backend' '
test_expect_success '--reset-author-date works with merge backend' '
git commit --amend --date="$GIT_AUTHOR_DATE" &&
git rebase --ignore-date -m HEAD^ &&
git rebase --reset-author-date -m HEAD^ &&
test_atime_is_ignored -1
'
test_expect_success '--ignore-date works after conflict resolution' '
test_must_fail git rebase --ignore-date -m \
test_expect_success '--reset-author-date works after conflict resolution' '
test_must_fail git rebase --reset-author-date -m \
--onto commit2^^ commit2^ commit2 &&
echo resolved >foo &&
git add foo &&
@ -138,16 +138,16 @@ test_expect_success '--ignore-date works after conflict resolution' '
test_atime_is_ignored -1
'
test_expect_success '--ignore-date works with rebase -r' '
test_expect_success '--reset-author-date works with rebase -r' '
git checkout side &&
git merge --no-ff commit3 &&
git rebase -r --root --ignore-date &&
git rebase -r --root --reset-author-date &&
test_atime_is_ignored
'
test_expect_success '--ignore-date with --committer-date-is-author-date works' '
test_expect_success '--reset-author-date with --committer-date-is-author-date works' '
test_must_fail git rebase -m --committer-date-is-author-date \
--ignore-date --onto commit2^^ commit2^ commit3 &&
--reset-author-date --onto commit2^^ commit2^ commit3 &&
git checkout --theirs foo &&
git add foo &&
git rebase --continue &&
@ -155,15 +155,23 @@ test_expect_success '--ignore-date with --committer-date-is-author-date works' '
test_atime_is_ignored -2
'
test_expect_success '--ignore-date --committer-date-is-author-date works when forking merge' '
test_expect_success '--reset-author-date --committer-date-is-author-date works when forking merge' '
GIT_SEQUENCE_EDITOR="echo \"merge -C $(git rev-parse HEAD) commit3\">" \
PATH="./test-bin:$PATH" git rebase -i --strategy=test \
--ignore-date --committer-date-is-author-date \
side side &&
--reset-author-date \
--committer-date-is-author-date side side &&
test_ctime_is_atime -1 &&
test_atime_is_ignored -1
'
test_expect_success '--ignore-date is an alias for --reset-author-date' '
git commit --amend --date="$GIT_AUTHOR_DATE" &&
git rebase --apply --ignore-date HEAD^ &&
git commit --allow-empty -m empty --date="$GIT_AUTHOR_DATE" &&
git rebase -m --ignore-date HEAD^ &&
test_atime_is_ignored -2
'
# This must be the last test in this file
test_expect_success '$EDITOR and friends are unchanged' '
test_editor_unchanged