[PATCH v3 0/5] cleanup ra/rebase-i-more-options
Johannes Schindelin
Junio C Hamano
Elijah Newren
Rohit Ashiwal
Alban Gruin
Git Mailing List
Phillip Wood
Phillip Wood
See Also
2020-05-21 10:14:50 UTC
From: Phillip Wood <phillip.wood@dunelm.org.uk>

Thanks for the feedback on v2, I've updated the documentation as
suggested by Elijah and made the style fixes suggested by Alban but
I've not changed read_author_script() for the reasons explained in

These patches are based on 9fadedd637 ("Merge branch
'ds/default-pack-use-sparse-to-true'", 2020-03-29)

Phillip Wood (2):
  rebase -i: support --committer-date-is-author-date
  rebase -i: support --ignore-date

Rohit Ashiwal (3):
  rebase -i: add --ignore-whitespace flag
  sequencer: rename amend_author to author_to_free
  rebase: add --reset-author-date

 Documentation/git-rebase.txt           |  33 +++-
 builtin/rebase.c                       |  46 ++++--
 sequencer.c                            | 111 ++++++++++++-
 sequencer.h                            |   2 +
 t/t3422-rebase-incompatible-options.sh |   2 -
 t/t3436-rebase-more-options.sh         | 209 +++++++++++++++++++++++++
 6 files changed, 379 insertions(+), 24 deletions(-)
 create mode 100755 t/t3436-rebase-more-options.sh

Range-diff against v2:
1:  5ef315240a ! 1:  df8c4ed2e9 rebase -i: add --ignore-whitespace flag
    @@ Documentation/git-rebase.txt: your branch contains commits which were dropped, t
      with `--keep-base` in order to drop those commits from your branch.
    -+	Behaves differently depending on which backend is selected.
    ++	Ignore whitespace differences when trying to reconcile
    ++differences. Currently, each backend implements an approximation of
    ++this behavior:
     +apply backend: When applying a patch, ignore changes in whitespace in
    -+context lines.
    ++context lines. Unfortunately, this means that if the "old" lines being
    ++replaced by the patch differ only in whitespace from the existing
    ++file, you will get a merge conflict instead of a successful patch
     +merge backend: Treat lines with only whitespace changes as unchanged
    -+when merging.
    ++when merging. Unfortunately, this means that any patch hunks that were
    ++intended to modify whitespace and nothing else will be dropped, even
    ++if the other side had no changes that conflicted.
     -	These flags are passed to the 'git apply' program
2:  55eb3a7efc ! 2:  df44a0bde6 rebase -i: support --committer-date-is-author-date
    @@ Commit message
         Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
      ## Documentation/git-rebase.txt ##
    -@@ Documentation/git-rebase.txt: when merging.
    +@@ Documentation/git-rebase.txt: if the other side had no changes that conflicted.
      See also INCOMPATIBLE OPTIONS below.
    @@ sequencer.c: static int run_git_commit(struct repository *r,
      	if (!(flags & VERIFY_MSG))
     @@ sequencer.c: static int try_to_commit(struct repository *r,
    - 	if (parse_head(r, &current_head))
    - 		return -1;
    - 	if (flags & AMEND_MSG) {
    - 		const char *exclude_gpgsig[] = { "gpgsig", "gpgsig-sha256", NULL };
    - 		const char *out_enc = get_commit_output_encoding();
    -@@ sequencer.c: static int try_to_commit(struct repository *r,
      		commit_list_insert(current_head, &parents);
3:  19352fdc22 = 3:  fa3d4856b4 sequencer: rename amend_author to author_to_free
4:  5e971abb74 ! 4:  96657233d4 rebase -i: support --ignore-date
    @@ sequencer.c: static const char *author_date_from_env_array(const struct argv_arr
     +		error(_("malformed ident line '%s'"), author);
     +		return NULL;
     +	}
     +	len = ident.mail_end - ident.name_begin + 1;
     +	strbuf_addf(&new_author, "%.*s ", len, ident.name_begin);
     +	datestamp(&new_author);
     +	return strbuf_detach(&new_author, NULL);
    @@ sequencer.c: static int try_to_commit(struct repository *r,
     +		free(author_to_free);
     +		author_to_free = (char *)author;
     +	}
      	if (commit_tree_extended(msg->buf, msg->len, &tree, parents,
      				 oid, author, opts->gpg_sign, extra)) {
      		res = error(_("failed to write commit object"));
5:  43a097c583 = 5:  828155baba rebase: add --reset-author-date