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

[Git] recursive merge on 'master' severely broken?

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 11, 2018, 07:19 UTC
Message-ID
<xmqqmuya43cs.fsf@gitster-ct.c.googlers.com>

It appears that a topic recently graduated to 'master' introduces a severe regression to "git merge" when it merges a side branch that renames paths while the trunk has further updates.

The symptom can easily be seen by trying to recreate the merge I made at the tip of 'pu' 29dea678 ("Merge branch 'sb/filenames-with-dashes' into pu", 2018-04-11) that I'll be. pushing out shortly. The side branch renames a file exec_cmd.h to exec-cmd.h (an underscore changed to a dash) without changing any contents, while the branch being merged to has made some changes to the contents while keeping the original pathname.

A clean automerged result should leave the identical contents from HEAD:exec_cmd.h in :exec-cmd.h in the index, which is what happens when using Git v2.17.0 proper, but with today's master', there are content changes that cannot be explained--the merge is simply broken and worse yet, the command pretends that everything went well and merged cleanly in that path. Overly clever tool that behaves in a buggy and unexplainable way is bad enough, doing so silently is unexcusable.

I suspect that the culprit is the merge e4bb62fa ("Merge branch 'en/rename-directory-detection'", 2018-04-10), and I am planning to revert it out of 'master' as soon as possible, but it is already buried deep in other topics, so I may not be able to get to it until later this week. Sorry about that.

Next: Junio C Hamano
Message 1 of 13 in “[Git] recursive merge on 'master' severely broken?”
  1. Junio C HamanoApr 11, 2018
  2. Junio C HamanoApr 11, 2018
  3. Junio C HamanoApr 11, 2018
  4. Elijah NewrenApr 11, 2018
  5. Junio C HamanoApr 12, 2018
  6. 0/30 Add directory rename detection to gitElijah Newren, Apr 13, 2018
  7. 30/30 merge-recursive: fix check for skipability of working tree updatesElijah Newren, Apr 13, 2018
  8. 75/30 merge-recursive: Fix was_tracked() to quit lying with some renamed pathsElijah Newren, Apr 13, 2018
  9. Junio C HamanoApr 16, 2018
  10. Elijah NewrenApr 16, 2018
  11. 50/30 t6046: testcases checking whether updates can be skipped in a mergeElijah Newren, Apr 13, 2018
  12. Stefan BellerApr 13, 2018
  13. 25/30 merge-recursive: improve output precision around skipping updatesElijah Newren, Apr 13, 2018

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.