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

Cherry-pick dangles and forgets helpful advice in next

From
Phil Hord <hordp@cisco.com>
Date
May 23, 2012, 20:31 UTC
Message-ID
<4FBD4904.9090000@cisco.com>

In git.git 'master' when I cherry-pick a commit which is eventually empty, git gives me a friendly description of my supposed error, leaves my cherry-pick "pending" and exits with an error code.

$ git cherry-pick a0aff2d # On branch master nothing to commit (working directory clean) The previous cherry-pick is now empty, possibly due to conflict resolution. If you wish to commit it anyway, use:

    git commit --allow-empty
Otherwise, please use 'git reset'

In 'next' this is broken. Now git does not tell me anything and it does not exit with an error code. It does still leave the cherry-pick pending, though.

$ git cherry-pick a0aff2d $ cat /tmp/repo/.git/CHERRY_PICK_HEAD a0aff2da3d12a9a097c02e39570611f359433c23

It bisects to this commit:
commit b27cfb0d8d4cbb6d079c70ffeadac9c0dcfff250
Author: Neil Horman <nhorman@tuxdriver.com>
Date:   Fri Apr 20 10:36:15 2012 -0400
    git-cherry-pick: Add keep-redundant-commits option
   
    The git-cherry-pick --allow-empty command by default only preserves
empty
    commits that were originally empty, i.e only those commits for which
    <commit>^{tree} and <commit>^^{tree} are equal.  By default commits
which are
    non-empty, but were made empty by the inclusion of a prior commit on
the current
    history are filtered out.  This option allows us to override that
behavior and
    include redundant commits as empty commits in the change history.
   
    Note that this patch changes the default behavior of git cherry-pick
slightly.
    Prior to this patch all commits in a cherry-pick sequence were
applied and git
    commit was run.  The implication here was that, if a commit was
redundant, and
    the commit did not trigger the fast forward logic, the git commit
operation, and
    therefore the git cherry-pick operation would fail, displaying the
cherry pick
    advice (i.e. run git commit --allow-empty).  With this patch
however, such
    redundant commits are automatically skipped without stopping, unless
    --keep-redundant-commits is specified, in which case, they are
automatically
    applied as empty commits.
   
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

I don't have time to chase it any further today. Hopefully someone can see the flub and straighten it out before I get a chance to look again. If not, I'll probably forget anyway.

Phil
Next: Junio C Hamano
Message 1 of 10 in “Cherry-pick dangles and forgets helpful advice in next”
  1. Phil HordMay 23, 2012
  2. Junio C HamanoMay 23, 2012
  3. Junio C HamanoMay 23, 2012
  4. Junio C HamanoMay 23, 2012
  5. Junio C HamanoMay 23, 2012
  6. Phil HordMay 23, 2012
  7. Junio C HamanoMay 23, 2012
  8. Junio C HamanoMay 30, 2012
  9. Phil HordMay 30, 2012
  10. Junio C HamanoMay 31, 2012

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.