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

Re: [PATCHv2 3/3] merge-recursive: When we detect we can skip an update, actually skip it

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 2, 2011, 20:19 UTC
Message-ID
<7vwrkhb7ig.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1298941732-19763-4-git-send-email-newren@gmail.com>
Elijah Newren <newren@gmail.com> writes:
Show 13 quoted lines
> @@ -1274,9 +1275,13 @@ 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 &&
> +	    lstat(path, &st) == 0) {
>  		output(o, 3, "Skipped %s (merged same as existing)", path);
> -	else
> +		add_cacheinfo(mfi.mode, mfi.sha, path,
> +			      0 /*stage*/, 1 /*refresh*/, 0 /*options*/);
> +		return mfi.clean;
> +	} else

Hmmmm. During a merge, we allow files missing from the working tree as if it is not modified from the index. Changing the behaviour based on the existence of the path on the filesystem does not feel quite right.

Even if we decide that regressing in that use case were acceptable, what guarantees that the path that happens to be in the work tree has the same contents as what the merge result should be? IOW, shouldn't we be looking at the original index, making sure that our side (stage #2) at the path had a file there that matches the merge result mfi.{sha,mode}, instead of looking at the working tree?

Previous: Elijah NewrenNext: Elijah Newren
Message 8 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.