On Wed, Jul 17, 2019 at 01:38:35PM -0700, Junio C Hamano wrote:

> When resolving a conflict on a path in favor of removing it, using
> "git rm" on it is the standard way to do so.  The user however is
> greeted with a "needs merge" message during that operation:
> 
>       $ git merge side-branch
>       $ edit conflicted-path-1
>       $ git add conflicted-path-1
>       $ git rm conflicted-path-2
>       conflicted-path-2: needs merge
>       rm 'conflicted-path-2'
> 
> The removal by "git rm" does get performed, but an uninitiated user
> may find it confusing, "needs merge? so I need to resolve conflict
> before being able to remove it???"
> 
> The message is coming from "update-index --refresh" that is called
> internally to make sure "git rm" knows which paths are clean and
> which paths are dirty, in order to prevent removal of paths modified
> relative to the index without the "-f" option.  We somehow ended up
> not squelching this message which seeped through to the UI surface.
> 
> Use the same mechanism used by "git commit", "git describe", etc. to
> squelch the message.

Nicely explained, and the patch makes sense.

> +test_expect_success 'Resolving by removal is not a warning-worthy event' '
> +     git reset -q --hard &&
> +     test_when_finished "rm -f .git/index.lock msg && git reset -q --hard" &&
> +     qfwfq=$(echo qfwfq | git hash-object -w --stdin) &&

I'd have called this "$blob" for my own sanity in typing later lines,
but OK. :)

> +     do
> +             echo "100644 $qfwfq $stage      qfwfq"
> +     done | git update-index --index-info &&
> +     git rm qfwfq >msg &&
> +     test_i18ngrep ! "needs merge" msg &&

Should we capture stderr from "git rm", too, to cover all bases?

-Peff

Reply via email to