On Sat, Jan 12, 2013 at 03:46:01PM -0500, Phil Hord wrote: > Since 90e1818f9a (git-rebase: add keep_empty flag, 2012-04-20) > 'git rebase --preserve-merges' fails to preserve empty merge commits > unless --keep-empty is also specified. Merge commits should be > preserved in order to preserve the structure of the rebased graph, > even if the merge commit does not introduce changes to the parent. > > Teach rebase not to drop merge commits only because they are empty. > > A special case which is not handled by this change is for a merge commit > whose parents are now the same commit because all the previous different > parents have been dropped as a result of this rebase or some previous > operation. > --- > git-rebase--interactive.sh | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh > index 44901d5..8ed7fcc 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 > -- > 1.8.1.dirty > > Seems reasonable Acked-by: Neil Horman <nhorman@xxxxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html