diff options
author | Phillip Wood <phillip.wood@dunelm.org.uk> | 2018-03-20 10:03:14 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-03-29 10:46:48 -0700 |
commit | 76ea235891c08e43226391cceaca8be056a1f803 (patch) | |
tree | 96b2209eb6d010dc8c3bdca2cc6c85f9e67027e2 | |
parent | rebase --root: stop assuming squash_onto is unset (diff) | |
download | tgif-76ea235891c08e43226391cceaca8be056a1f803.tar.xz |
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 <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | sequencer.c | 8 | ||||
-rwxr-xr-x | t/t3421-rebase-topology-linear.sh | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/sequencer.c b/sequencer.c index 4d3f60594c..1a10766492 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 68fe2003ef..52fc6885e5 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 |