Re: [PATCH 0/2] Reinstate the helpful message when `git pull --rebase` fails
- From
Torsten Bögershausen <tboegi@web.de>
- Date
- Oct 10, 2015, 16:05 UTC
- Message-ID
- <56193760.5010307@web.de>
- In-Reply-To
- <d89d595a223508896db9303c901e7c30@dscho.org>
On 09.10.15 12:11, Johannes Schindelin wrote:
Show 58 quoted lines
> Me again, > > On 2015-10-09 11:50, Johannes Schindelin wrote: >> >> On 2015-10-09 03:40, Paul Tan wrote: >>> On Fri, Oct 9, 2015 at 8:52 AM, Junio C Hamano <gitster@pobox.com> wrote: >>>> Johannes Schindelin <johannes.schindelin@gmx.de> writes: >>>> >>>>> Brendan Forster noticed that we no longer see the helpful message after >>>>> a failed `git pull --rebase`. It turns out that the builtin `am` calls >>>>> the recursive merge function directly, not via a separate process. >>>>> >>>>> But that function was not really safe to be called that way, as it >>>>> die()s pretty liberally. >>> >>> I'm not too familiar with the merge-recursive.c code, but I was under >>> the impression that it only called die() under fatal conditions. In >>> common use cases, such as merge conflicts, it just errors out and the >>> helpful error message does get printed. Is there a reproduction recipe >>> for this? >> >> Yes. Sorry, I should have added that as part of the patch series. >> Actually, I should have written it *before* making those patches. >> Because it revealed that the underlying problem is completely >> different: *Normally* you are correct, if `pull --rebase` fails with a >> merge conflict, the advice is shown. >> >> The problem occurs with CR/LF. > > I finally have that test case working, took way longer than I wanted to: > > -- snip -- > Subject: [PATCH 3/2] Verify that `git pull --rebase` shows the helpful advice when failing > Author: Johannes Schindelin <johannes.schindelin@gmx.de> > Date: Fri Oct 9 11:15:30 2015 +0200 > > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> > > diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh > index a0013ee..bce332f 100755 > --- a/t/t5520-pull.sh > +++ b/t/t5520-pull.sh > @@ -237,6 +237,18 @@ test_expect_success '--rebase' ' > test new = "$(git show HEAD:file2)" > ' > > +test_expect_success 'failed --rebase shows advice' ' > + git checkout -b diverging && > + test_commit attributes .gitattributes "* text=auto" attrs && > + sha1="$(printf "1\\r\\n" | git hash-object -w --stdin)" && > + git update-index --cacheinfo 0644 $sha1 file && > + git commit -m v1-with-cr && > + git checkout -f -b fails-to-rebase HEAD^ && > + test_commit v2-without-cr file "2" file2-lf && > + test_must_fail git pull --rebase . diverging 2>err >out && > + grep "When you have resolved this problem" out > +' > +
One other question: Is it good to mix 2 different things in one test case ? "shows the helpful advice when failing" is one thing, and the problematic CRLF handling another.
Does it make sense to simply create "really-modified" file to test the helpful advice ?
And may be another one witch test the CRLF handling, (may be)