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

[PATCH 0/3] detecting delete/modechange conflicts

From
Jeff King <peff@peff.net>
Date
Oct 26, 2015, 21:35 UTC
Message-ID
<20151026213502.GA17244@sigill.intra.peff.net>
I was surprised to find that:
  # base commit
  echo base >file &&
  git add file &&
  git commit -m base &&
  # one side changes mode
  chmod +x file &&
  git commit -am executable &&
  # the other deletes the file
  git checkout -b other HEAD^ &&
  git rm file &&
  git commit -am removed &&
  git merge master

silently completes the merge, dropping the mode change. We detect delete/modify conflicts, but not delete/modechange conflicts. The trivial index merge does catch it, but both the resolve and recursive strategies resolve it silently in favor of the deletion.

After looking through the history and the list archive, I don't _think_ this was intentional, and we simply missed the case in both places. But maybe somebody else knows something I don't. It seems like we should be punting to the user under the general principle of stupid and safe merges.

  [1/3]: t6031: move triple-rename test to t3030
  [2/3]: t6031: generalize for recursive and resolve strategies
  [3/3]: merge: detect delete/modechange conflict
-Peff
Next: Jeff King
Message 1 of 6 in “detecting delete/modechange conflicts”
  1. 0/3 detecting delete/modechange conflictsJeff King, Oct 26, 2015
  2. 1/3 t6031: move triple-rename test to t3030Jeff King, Oct 26, 2015
  3. 2/3 t6031: generalize for recursive and resolve strategiesJeff King, Oct 26, 2015
  4. 3/3 merge: detect delete/modechange conflictJeff King, Oct 26, 2015
  5. Junio C HamanoOct 26, 2015
  6. Jeff KingOct 26, 2015

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.