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

[PATCHv2 0/3] Fix unnecessary (mtime) updates of files during merge

From
Elijah Newren <newren@gmail.com>
Date
Mar 1, 2011, 01:08 UTC
Message-ID
<1298941732-19763-1-git-send-email-newren@gmail.com>

This patch series fixes a bug reported by Stephen Rothwell -- that during merges git would unnecessarily update modification times of files.

There are two testcases included in this patch series. The first is a simple case to test the originally reported bug; this testcase is fixed in this series (as is Stephen's original linux-next testcase). The second testcase suffers from the exact same problem, but arises from a different situation and is not fixed in this series. That testcase is slightly harder to solve because:

  * unpack_trees + threeway_merge throws away the original index entry
    with stat information when it notices the directory/file conflict
  * make_room_for_directories_of_df_conflicts() must remove such files
    from the working copy or the corresponding directory and files
    below it will be unable to be written to the working copy (which
    can cause spurious conflicts, or make resolving conflicts very
    hard for users who don't know how to access the many files missing
    from their working copy).

We could fix this second testcase by recording stat information for files removed by make_room_for_directories_of_df_conflicts(), and then, if those files are reinstated at the end of conflict resolution (i.e. the directory of the D/F conflict went away during the merge), then call utime() to reset the modification times on those files back to what they originally were.

(Technically, the second testcase that I left unfixed is not a regression; prior versions of git would fail the merge and record the file's content in an alternative file to "avoid" the directory it thought was in the way, so the modification time was the least of the worries.)

Elijah Newren (3):
  t6022: New test checking for unnecessary updates of renamed+modified files
  t6022: New test checking for unnecessary updates of files in D/F conflicts
  merge-recursive: When we detect we can skip an update, actually skip it
 merge-recursive.c       |   17 +++++++----
 t/t6022-merge-rename.sh |   68 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+), 6 deletions(-)
-- 
1.7.4
Next: Elijah Newren
Message 1 of 14 in “[PATCHv2 0/3] Fix unnecessary (mtime) updates of files during merge”
  1. Elijah NewrenMar 1, 2011
  2. 1/3 t6022: New test checking for unnecessary updates of renamed+modified filesElijah Newren, Mar 1, 2011
  3. Johannes SixtMar 1, 2011
  4. Jeff KingMar 1, 2011
  5. Elijah NewrenMar 2, 2011
  6. 2/3 t6022: New test checking for unnecessary updates of files in D/F conflictsElijah Newren, Mar 1, 2011
  7. 3/3 merge-recursive: When we detect we can skip an update, actually skip itElijah Newren, Mar 1, 2011
  8. Junio C HamanoMar 2, 2011
  9. Elijah NewrenMar 2, 2011
  10. Junio C HamanoMar 2, 2011
  11. Jeff KingMar 1, 2011
  12. Jeff KingMar 1, 2011
  13. Elijah NewrenMar 2, 2011
  14. Junio C HamanoMar 2, 2011

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.