[RFC PATCH 2/2] merge-recursive: When we detect we can skip an update, actually skip it

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In 882fd11 (merge-recursive: Delay content merging for renames 2010-09-20),
the code that checked for whether we could skip updating a file in the
working directory (due to the merged version matching the current copy) was
moved into a separate function.  In order to defer the content merging, we
had to update the index with unmerged entries.  As part of the move, a bug
was introduced such that the message about skipping the update would be
printed (if GIT_MERGE_VERBOSITY was sufficiently high) but the file would
be updated in the working copy anyway.

When we detect that the file does not need to be updated in the working
copy, update the index to remove the unmerged entries and then return early
before updating the working copy.

STILL BROKEN: Unfortunately, this change leaves the index in a state where
the renamed file is only racily clean; a 'git diff-files' will report the
file as modified.

---
No Signed-off-by since it still doesn't work.

 merge-recursive.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/merge-recursive.c b/merge-recursive.c
index 16c2dbe..94b818c 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1274,9 +1274,12 @@ static int merge_content(struct merge_options *o,
 	}
 
 	if (mfi.clean && !df_conflict_remains &&
-	    sha_eq(mfi.sha, a_sha) && mfi.mode == a.mode)
+	    sha_eq(mfi.sha, a_sha) && mfi.mode == a.mode) {
 		output(o, 3, "Skipped %s (merged same as existing)", path);
-	else
+		add_cacheinfo(mfi.mode, mfi.sha, path,
+			      0, 0, ADD_CACHE_OK_TO_REPLACE);
+		return mfi.clean;
+	} else
 		output(o, 2, "Auto-merging %s", path);
 
 	if (!mfi.clean) {
-- 
1.7.4.1.23.g4865dd

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]