git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Elijah Newren <newren@gmail.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, Stephen Rothwell <sfr@canb.auug.org.au>,
	Jeff King <peff@peff.net>, Elijah Newren <newren@gmail.com>
Subject: [PATCHv2 0/3] Fix unnecessary (mtime) updates of files during merge
Date: Mon, 28 Feb 2011 18:08:49 -0700	[thread overview]
Message-ID: <1298941732-19763-1-git-send-email-newren@gmail.com> (raw)

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

             reply	other threads:[~2011-03-01  1:09 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-01  1:08 Elijah Newren [this message]
2011-03-01  1:08 ` [PATCHv2 1/3] t6022: New test checking for unnecessary updates of renamed+modified files Elijah Newren
2011-03-01  7:33   ` Johannes Sixt
2011-03-01 19:38     ` Jeff King
2011-03-02 22:26     ` Elijah Newren
2011-03-01  1:08 ` [PATCHv2 2/3] t6022: New test checking for unnecessary updates of files in D/F conflicts Elijah Newren
2011-03-01  1:08 ` [PATCHv2 3/3] merge-recursive: When we detect we can skip an update, actually skip it Elijah Newren
2011-03-02 20:19   ` Junio C Hamano
2011-03-02 22:22     ` Elijah Newren
2011-03-02 23:23       ` Junio C Hamano
2011-03-01 19:31 ` [PATCHv2 0/3] Fix unnecessary (mtime) updates of files during merge Jeff King
2011-03-01 19:36   ` Jeff King
2011-03-02 23:11   ` Elijah Newren
2011-03-02 23:22 ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1298941732-19763-1-git-send-email-newren@gmail.com \
    --to=newren@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    --cc=sfr@canb.auug.org.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).