From bb2ac4fcacaf5044b44e2acb918da33a4cca6af1 Mon Sep 17 00:00:00 2001 From: Phillip Wood Date: Tue, 20 Mar 2018 10:03:13 +0000 Subject: rebase --root: stop assuming squash_onto is unset If the user set the environment variable 'squash_onto', the 'rebase' command would erroneously assume that the user passed the option '--root'. Signed-off-by: Phillip Wood Signed-off-by: Junio C Hamano diff --git a/git-rebase.sh b/git-rebase.sh index fd72a35..8b1b892 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -60,6 +60,7 @@ $(gettext 'Resolve all conflicts manually, mark them as resolved with You can instead skip this commit: run "git rebase --skip". To abort and get back to the state before "git rebase", run "git rebase --abort".') " +squash_onto= unset onto unset restrict_revision cmd= -- cgit v0.10.2-6-g49f6 From 76ea235891c08e43226391cceaca8be056a1f803 Mon Sep 17 00:00:00 2001 From: Phillip Wood Date: Tue, 20 Mar 2018 10:03:14 +0000 Subject: rebase -i --keep-empty: don't prune empty commits If there are empty commits on the left hand side of $upstream...HEAD then the empty commits on the right hand side that we want to keep are pruned by --cherry-pick. Fix this by using --cherry-mark instead of --cherry-pick and keeping the commits that are empty or are not marked as cherry-picks. Signed-off-by: Phillip Wood Signed-off-by: Junio C Hamano diff --git a/sequencer.c b/sequencer.c index 4d3f605..1a10766 100644 --- a/sequencer.c +++ b/sequencer.c @@ -2470,7 +2470,7 @@ int sequencer_make_script(FILE *out, int argc, const char **argv, init_revisions(&revs, NULL); revs.verbose_header = 1; revs.max_parents = 1; - revs.cherry_pick = 1; + revs.cherry_mark = 1; revs.limited = 1; revs.reverse = 1; revs.right_only = 1; @@ -2495,8 +2495,12 @@ int sequencer_make_script(FILE *out, int argc, const char **argv, return error(_("make_script: error preparing revisions")); while ((commit = get_revision(&revs))) { + int is_empty = is_original_commit_empty(commit); + + if (!is_empty && (commit->object.flags & PATCHSAME)) + continue; strbuf_reset(&buf); - if (!keep_empty && is_original_commit_empty(commit)) + if (!keep_empty && is_empty) strbuf_addf(&buf, "%c ", comment_line_char); strbuf_addf(&buf, "%s %s ", insn, oid_to_hex(&commit->object.oid)); diff --git a/t/t3421-rebase-topology-linear.sh b/t/t3421-rebase-topology-linear.sh index 68fe200..52fc688 100755 --- a/t/t3421-rebase-topology-linear.sh +++ b/t/t3421-rebase-topology-linear.sh @@ -215,7 +215,7 @@ test_run_rebase () { } test_run_rebase success '' test_run_rebase failure -m -test_run_rebase failure -i +test_run_rebase success -i test_run_rebase failure -p # m -- cgit v0.10.2-6-g49f6 From 3d946165e1177905103a25aeb374e018c510e540 Mon Sep 17 00:00:00 2001 From: Phillip Wood Date: Tue, 20 Mar 2018 10:03:15 +0000 Subject: rebase: respect --no-keep-empty $OPT_SPEC has always allowed --no-keep-empty so lets start handling it. Signed-off-by: Phillip Wood Signed-off-by: Junio C Hamano diff --git a/git-rebase.sh b/git-rebase.sh index 8b1b892..37b8f13 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -263,6 +263,9 @@ do --keep-empty) keep_empty=yes ;; + --no-keep-empty) + keep_empty= + ;; --preserve-merges) preserve_merges=t test -z "$interactive_rebase" && interactive_rebase=implied -- cgit v0.10.2-6-g49f6