git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] rebase --preserve-merges keeps empty merge commits

From
Neil Horman <nhorman@tuxdriver.com>
Date
Jan 14, 2013, 14:02 UTC
Message-ID
<20130114140249.GA2373@hmsreliant.think-freely.org>
In-Reply-To
<1358023561-26773-1-git-send-email-hordp@cisco.com>
On Sat, Jan 12, 2013 at 03:46:01PM -0500, Phil Hord wrote:
Show 45 quoted lines
> 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@tuxdriver.com>
Previous: Phil HordNext: Matthieu Moy
Message 2 of 9 in “rebase --preserve-merges keeps empty merge commits”
  1. rebase --preserve-merges keeps empty merge commitsPhil Hord, Jan 12, 2013
  2. Neil HormanJan 14, 2013
  3. Matthieu MoyJan 14, 2013
  4. Junio C HamanoJan 14, 2013
  5. Phil HordJan 14, 2013
  6. Martin von ZweigbergkFeb 1, 2013
  7. Phil HordFeb 1, 2013
  8. Martin von ZweigbergkFeb 2, 2013
  9. Junio C HamanoFeb 25, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.