diff options
author | Junio C Hamano <gitster@pobox.com> | 2018-04-25 13:28:49 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-04-25 13:28:49 +0900 |
commit | d892beef52a293b271538481dbc76014672ddf09 (patch) | |
tree | e9f7896908c60aff2a25a6fe4ac327aaaa6d6974 | |
parent | 18a6a8571fa150441de06e007e9c61856bfadc5d (diff) | |
parent | 3d946165e1177905103a25aeb374e018c510e540 (diff) | |
download | git-d892beef52a293b271538481dbc76014672ddf09.tar.gz |
Merge branch 'pw/rebase-keep-empty-fixes'
"git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
* pw/rebase-keep-empty-fixes:
rebase: respect --no-keep-empty
rebase -i --keep-empty: don't prune empty commits
rebase --root: stop assuming squash_onto is unset
-rwxr-xr-x | git-rebase.sh | 4 | ||||
-rw-r--r-- | sequencer.c | 8 | ||||
-rwxr-xr-x | t/t3421-rebase-topology-linear.sh | 2 |
3 files changed, 11 insertions, 3 deletions
diff --git a/git-rebase.sh b/git-rebase.sh index fb64ee1fe4..548c15e4a1 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -62,6 +62,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= @@ -270,6 +271,9 @@ do --allow-empty-message) allow_empty_message=--allow-empty-message ;; + --no-keep-empty) + keep_empty= + ;; --preserve-merges) preserve_merges=t test -z "$interactive_rebase" && interactive_rebase=implied diff --git a/sequencer.c b/sequencer.c index 667f35ebdf..eedd45ef83 100644 --- a/sequencer.c +++ b/sequencer.c @@ -3001,7 +3001,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; @@ -3026,8 +3026,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 |