git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Elijah Newren <newren@gmail.com>
Cc: git@vger.kernel.org, Stephen Rothwell <sfr@canb.auug.org.au>,
	Jeff King <peff@peff.net>
Subject: Re: [PATCHv2 0/3] Fix unnecessary (mtime) updates of files during merge
Date: Wed, 02 Mar 2011 15:22:00 -0800	[thread overview]
Message-ID: <7vaahdaz1j.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: 1298941732-19763-1-git-send-email-newren@gmail.com

Elijah Newren <newren@gmail.com> writes:

> 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.

Which is a big Yuck.  I agree that we don't want to go there.

The real cause of the problem is that the code removes the files that
could potentially involved in conflict _way_ too early, and unfortunately
this is coming from the way merge-recursive tracks d/f conflicts, which is
to grab set of path that can potentially appear as directories by throwing
all directories into a single string list from both sides of the merge
(same for non directory paths using another single string list) upfront,
and after that point, it becomes very hard to tell if the potential
directory is on your (i.e. stage #2) side or on their side, and to make
things worse, it doesn't wait writing partial results out to the working
tree before it knows the result of the merge to say something intelligent
like "all these files under the directory will go away and we can safely
keep the file there".  Your earlier series, e.g. 2ff739f (merge-recursive:
New function to assist resolving renames in-core only, 2010-09-20), was a
step in the right direction, but we are not there yet while functions like
make_room_for_path() and make_room_for_directories_of_df_conflicts() are
used.

So I think it would need a lot major restructuring of the merge-recursive,
especially its d/f conflict logic, to fix the second one correctly.

Thanks.

      parent reply	other threads:[~2011-03-02 23:22 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-01  1:08 [PATCHv2 0/3] Fix unnecessary (mtime) updates of files during merge Elijah Newren
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 [this message]

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=7vaahdaz1j.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=newren@gmail.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).