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

Re: nd/merge-quit, was Re: What's cooking in git.git (May 2019, #01; Thu, 9)

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
May 13, 2019, 14:02 UTC
Message-ID
<nycvar.QRO.7.76.6.1905131531000.44@tvgsbejvaqbjf.bet>
In-Reply-To
<CACsJy8DTErpeoNHUkCieDafnjc3iwg6QKAp2VP-8tUNYh33tJA@mail.gmail.com>
Hi Duy,
On Fri, 10 May 2019, Duy Nguyen wrote:
Show 43 quoted lines
> On Fri, May 10, 2019 at 3:54 AM Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
> >
> > Hi Junio & Duy,
> >
> > On Thu, 9 May 2019, Junio C Hamano wrote:
> >
> > > * nd/merge-quit (2019-05-07) 2 commits
> > >  - merge: add --quit
> > >  - merge: remove drop_save() in favor of remove_merge_branch_state()
> > >
> > >  "git merge" learned "--quit" option that cleans up the in-progress
> > >  merge while leaving the working tree and the index still in a mess.
> > >
> > >  Hmph, why is this a good idea?
> >
> > It also seems to work *only* on Linux. At least the tests break on macOS
> > and on Windows:
> >
> > https://dev.azure.com/gitgitgadget/git/_build/results?buildId=8313&view=ms.vss-test-web.build-test-results-tab
>
> Sorry I have no idea what the problem is. That's basically the same as
> the 'merge detects mod-256 conflicts (recursive)' test earlier but
> with rerere enabled. It does not even look like some leftover rerere
> records accidentally fix the conflict.
>
> I tried with a case-insensitive filesytem (on linux) and with
> --valgrind, no problem found. Travis on pu seemed ok with t7600 on
> mac.
>
> One difference I notice is the the failed test looks like it found the
> wrong merge base
>
> found 1 common ancestor:
> c4c4222 commit 1
>
> while my tests have "commit 0" as the base. "git log --graph
> --oneline" indicates "commit 1" is the wrong base.
>
> Something is wrong with the merge code (this has not even reached the
> new --quit code). I could change the setup steps to be more stable,
> using a simpler commit history, but this looks like something we
> should find and fix.
Yeah... someone should look at this... Someone. But who?
:-)

Well, since you seemed quite reluctant to figure out why your patches fail the test suite, and since we're about to enter the -rc0 phase (where we all spend all of our time to hammer out the next version, right? Right?), I figured out I better look into it before nobody does.

Turns out that the culprit is not even hard to figure out. All I had to do is to compare, carefully, the logs from the Azure Pipelines and from a local run in a local Ubuntu.

It has nothing to do with our merge code. There might be bugs, but this breakage is safely in this here patch series: the test case you introduced relies on side effects.

Namely, when test cases 51 and 52 are skipped because of a missing GPG prerequisite [*1*], and those two are obviously required to run for the `git merge to fail in your test case, as you can very easily verify by downloading the artifact containing the `trash directory.t7600-merge` directory and re-running the last steps on Linux (where the `git -c rerere.enabled=true merge master` *succeeds*).

In fact, you can very, very easily emulate the whole situation on your box by running:

	sh t7600-merge.sh -i -v -x --run=1-50,53-59

And then you can fix your test case so that it does not need to rely on test cases that may, or may not, have run previously.

Ciao, Johannes

Footnote *1*: GNU Privacy Guard is not actually missing from Git for Windows' SDK, quite to the contrary. But it fails to start a gpg-agent due to the fact that we pass a `--homedir` that contains a colon, something that is totally expected on Windows, and at the same something that GNU Privacy Guard totally cannot handle.

Previous: Duy NguyenNext: Johannes Schindelin
Message 14 of 27 in “What's cooking in git.git (May 2019, #01; Thu, 9)”
  1. Junio C HamanoMay 8, 2019
  2. Denton LiuMay 8, 2019
  3. Elijah NewrenMay 8, 2019
  4. Phillip WoodMay 9, 2019
  5. Johannes SchindelinMay 10, 2019
  6. Phillip WoodMay 13, 2019
  7. Duy NguyenMay 9, 2019
  8. en/fast-export-encoding, was Re: What's cooking in git.git (May 2019, #01; Thu, 9)Johannes Schindelin, May 9, 2019
  9. Elijah NewrenMay 10, 2019
  10. Johannes SixtMay 10, 2019
  11. Johannes SchindelinMay 10, 2019
  12. nd/merge-quit, was Re: What's cooking in git.git (May 2019, #01; Thu, 9)Johannes Schindelin, May 9, 2019
  13. Duy NguyenMay 10, 2019
  14. Johannes SchindelinMay 13, 2019
  15. Johannes SchindelinMay 13, 2019
  16. Eric SunshineMay 13, 2019
  17. Johannes SchindelinMay 13, 2019
  18. tests: add a special setup where prerequisites failÆvar Arnfjörð Bjarmason, May 13, 2019
  19. Johannes SchindelinMay 14, 2019
  20. Ævar Arnfjörð BjarmasonMay 14, 2019
  21. Johannes SchindelinMay 14, 2019
  22. Ævar Arnfjörð BjarmasonMay 14, 2019
  23. Johannes SchindelinMay 14, 2019
  24. tests: mark two failing tests under FAIL_PREREQSÆvar Arnfjörð Bjarmason, Jun 20, 2019
  25. Johannes SchindelinJun 21, 2019
  26. Ævar Arnfjörð BjarmasonJun 21, 2019
  27. Junio C HamanoJun 21, 2019

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.