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 <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html