threads / bug / 26154

[minor BUG] cherry-pick -x doesn't work if a conflict occurs

Subject: [minor BUG] cherry-pick -x doesn't work if a conflict occurs

## tl;dr

6 messages between Dec 29, 2010 and Jan 5, 2011.

replies: 5people: 4as markdown or json

Uwe Kleine-König· Dec 29, 2010, 14:16 UTC · lore
Hello,
when hitting a conflict cherry-pick suggests using
	git commit -c $sha1

but the resulting (suggested) commit log doesn't have the extra reference requested by -x.

Best regards Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Robin Rosenberg· Jan 5, 2011, 06:31 UTC · re: Uwe Kleine-König · lore

Re: [minor BUG] cherry-pick -x doesn't work if a conflict occurs

29 dec 2010 kl. 15:16 skrev Uwe Kleine-König:
Show 9 quoted lines
> Hello,
> 
> when hitting a conflict cherry-pick suggests using
> 
> 	git commit -c $sha1
> 
> but the resulting (suggested) commit log doesn't have the extra
> reference requested by -x.
> 

The man page says -x only takes effect when you do not have a conflict, so there is no bug.

-- robin
Uwe Kleine-König· Jan 5, 2011, 06:50 UTC · re: Robin Rosenberg · lore

Re: [minor BUG] cherry-pick -x doesn't work if a conflict occurs

On Wed, Jan 05, 2011 at 07:31:05AM +0100, Robin Rosenberg wrote:
Show 15 quoted lines
> 
> 29 dec 2010 kl. 15:16 skrev Uwe Kleine-König:
> 
> > Hello,
> > 
> > when hitting a conflict cherry-pick suggests using
> > 
> > 	git commit -c $sha1
> > 
> > but the resulting (suggested) commit log doesn't have the extra
> > reference requested by -x.
> > 
> 
> The man page says -x only takes effect when you do not have a conflict, so there
> is no bug.
ah, I wonder if this is intended or just documenting a short-coming :-)
Uwe
-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Jay Soffian· Jan 5, 2011, 16:28 UTC · re: Uwe Kleine-König · lore

Re: [minor BUG] cherry-pick -x doesn't work if a conflict occurs

2011/1/5 Uwe Kleine-König <u.kleine-koenig@pengutronix.de>:
>> The man page says -x only takes effect when you do not have a conflict, so there
>> is no bug.
> ah, I wonder if this is intended or just documenting a short-coming :-)

I think it's intended as it's no longer the original commit, but personally I think it should be configurable (I'd like -x to be configurable as well). For now, I use the following "recommit" script after a cherry-pick conflict.

#!/bin/sh # Used after a cherry-pick conflicts to commit with the original # authorship (commit -c) but keep the newly generated commit message # self=$(cd "$(dirname "$0")" && pwd -P)/$(basename "$0") . "$(git --exec-path)/git-sh-setup" require_work_tree cd_to_toplevel test -f .git/MERGE_MSG || die "No .git/MERGE_MSG"

if test "$GIT_EDITOR" = "$self"
then
  cat .git/MERGE_MSG > .GIT/COMMIT_EDITMSG
  exit 0
fi
if sha1=$(sed -ne \
  's/^(cherry picked from commit \([a-f0-9]\{40\}\))$/\1/p' .git/MERGE_MSG)
then
  export GIT_EDITOR="$self"
  git commit -c $sha1
fi
j.
Jay Soffian· Jan 5, 2011, 16:37 UTC · re: Jay Soffian · lore

Re: [minor BUG] cherry-pick -x doesn't work if a conflict occurs

2011/1/5 Jay Soffian <jaysoffian@gmail.com>:
> 2011/1/5 Uwe Kleine-König <u.kleine-koenig@pengutronix.de>:
>> ah, I wonder if this is intended or just documenting a short-coming :-)
>
> I think it's intended as it's no longer the original commit, but
Ah, seems to be a documented short-coming after-all:
  http://thread.gmane.org/gmane.comp.version-control.git/61737/focus=61933
j.
Junio C Hamano· Jan 5, 2011, 18:33 UTC · re: Jay Soffian · lore

Re: [minor BUG] cherry-pick -x doesn't work if a conflict occurs

Jay Soffian <jaysoffian@gmail.com> writes:
> Ah, seems to be a documented short-coming after-all:
>
>   http://thread.gmane.org/gmane.comp.version-control.git/61737/focus=61933
Well, it is not.

Shawn might have accepted a documentation patch as such during my absence, but when I originally wrote the "cherry-picked-from", it was a conscious design decision not to carry the information forward in a conflicted case, and the reasoning was exactly what you wrote in your first response.

Because -x has become an optional feature that a user has to explicitly ask, I however tend to agree with Uwe that it may make sense to throw the original commit object name in the commit log template these days. That would allow the user to edit it further and say something like "Originally done by Foo in commit 1234, forward ported with conflict resolution."

← back to recent threads