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
https://lore.kernel.org/git/c6a2711a-96c1-d7ac-9678-20c581408ef5@gmail.com
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@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.
--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