From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> 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 https://lore.kernel.org/git/c6a2711a-96c1-d7ac-9678-20c581408ef5@xxxxxxxxx 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. --ignore-whitespace:: -+ 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 ++application. ++ +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. + --whitespace=<option>:: - 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@xxxxxxxxxxxxx> ## 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. --committer-date-is-author-date:: @@ 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, ¤t_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 -- 2.26.2