diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-01-21 20:15:15 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-01-21 20:15:15 -0800 |
commit | 51c6de2bab06562d0e69dcfd48f04a3b28a878b1 (patch) | |
tree | 71df21800244a482a0ad6246e85d98fb90e4f7ba /git-rebase--interactive.sh | |
parent | Merge branch 'nd/clone-no-separate-git-dir-with-bare' (diff) | |
parent | rebase --preserve-merges: keep all merge commits including empty ones (diff) | |
download | tgif-51c6de2bab06562d0e69dcfd48f04a3b28a878b1.tar.xz |
Merge branch 'ph/rebase-preserve-all-merges'
An earlier change to add --keep-empty option broke "git rebase
--preserve-merges" and lost merge commits that end up being the
same as its parent.
* ph/rebase-preserve-all-merges:
rebase --preserve-merges: keep all merge commits including empty ones
Diffstat (limited to 'git-rebase--interactive.sh')
-rw-r--r-- | git-rebase--interactive.sh | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 44901d53c4..8ed7fccc18 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -190,6 +190,11 @@ is_empty_commit() { test "$tree" = "$ptree" } +is_merge_commit() +{ + git rev-parse --verify --quiet "$1"^2 >/dev/null 2>&1 +} + # Run command with GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, and # GIT_AUTHOR_DATE exported from the current environment. do_with_author () { @@ -874,7 +879,7 @@ git rev-list $merges_option --pretty=oneline --abbrev-commit \ while read -r shortsha1 rest do - if test -z "$keep_empty" && is_empty_commit $shortsha1 + if test -z "$keep_empty" && is_empty_commit $shortsha1 && ! is_merge_commit $shortsha1 then comment_out="# " else |