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

Re: [PATCH/RFC 1/3] t3030-merge-recursive: Test known breakage with empty work tree

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Jan 24, 2014, 16:51 UTC
Message-ID
<20140124165112.GK18964@google.com>
In-Reply-To
<bee33fbfe83408a69085d58db302b3e72edf16a4.1390574981.git.brad.king@kitware.com>
Hi,
Brad King wrote:
Show 5 quoted lines
> Add test cases that use 'merge-recursive' plumbing with a temporary
> index and empty work tree.  Populate the index using 'read-tree' and
> 'update-index --ignore-missing --refresh' to prepare for merge without
> actually checking all files out to disk.  Verify that each merge
> produces its expected tree while displaying no error diagnostics.

Following my usual review practice of lazy reading for the sake of readers in the future who might be in a hurry, it's not clear what problem these tests are solving or trying to detect. Could you start with a quick summary of the symptoms and when it came up?

The commit message doesn't need to paraphrase the actual code, since anyone curious about the details can always look at the code. It's more important to explain the motivation and intended effect so people can understand what went wrong if something ends up being broken by a later patch.

> This approach can be used to compute tree merges while checking out only
> conflicting files to disk (which is useful for server-side scripts).
> Prior to commit 5b448b85 (merge-recursive: When we detect we can skip an
> update, actually skip it, 2011-08-11) this worked cleanly in all cases.
Do you mean something like the following?
	Sometimes when working with a large repository it can be useful to
	try out a merge and only check out conflicting files to disk (for
	example as a speed optimization on a server).  Until v1.7.7-rc1~28^2~20
	(merge-recursive: When we detect we can skip an update, actually
	skip it, 2011-08-11), it was possible to do so with the following
	idiom:
		... summary of commands here ...
	Nowadays, that still works and the exit status is the same,
	but merge-recursive produces a diagnostic if "our" side renamed
	a file:
		error: addinfo_cache failed for path 'dst'
	Add a test to document this regression.
[...]
> +++ b/t/t3030-merge-recursive.sh
[...]
Show 7 quoted lines
> @@ -517,6 +518,52 @@ test_expect_success 'reset and bind merge' '
>  
>  '
>  
> +test_expect_failure 'merge-recursive w/ empty work tree - ours has rename' '
> +	(
> +	 GIT_WORK_TREE="$PWD/ours-has-rename-work" &&

Elsewhere in the test, commands in a subshell are indented by another tab, so these new tests should probably follow suit. As a side effect, that makes the indentation easier to see.

Hope that helps, Jonathan

Previous: Brad KingNext: Brad King
Message 3 of 21 in “merge-recursive: Avoid diagnostic on empty work tree”
  1. 0/3 merge-recursive: Avoid diagnostic on empty work treeBrad King, Jan 24, 2014
  2. 1/3 t3030-merge-recursive: Test known breakage with empty work treeBrad King, Jan 24, 2014
  3. Jonathan NiederJan 24, 2014
  4. Brad KingJan 24, 2014
  5. 2/3 read-cache.c: Thread lstat error through make_cache_entry signatureBrad King, Jan 24, 2014
  6. 3/3 merge-recursive: Tolerate missing file when HEAD is up to dateBrad King, Jan 24, 2014
  7. Junio C HamanoJan 24, 2014
  8. Brad KingJan 24, 2014
  9. 0/3 merge-recursive: Avoid diagnostic on empty work treeBrad King, Jan 24, 2014
  10. 1/3 t3030-merge-recursive: Test known breakage with empty work treeBrad King, Jan 24, 2014
  11. 2/3 read-cache.c: Optionally tolerate missing files in make_cache_entryBrad King, Jan 24, 2014
  12. Junio C HamanoJan 24, 2014
  13. 3/3 merge-recursive.c: Tolerate missing files while refreshing indexBrad King, Jan 24, 2014
  14. 0/3 merge-recursive: Avoid diagnostic on empty work treeBrad King, Jan 27, 2014
  15. 1/4 t3030-merge-recursive: Test known breakage with empty work treeBrad King, Jan 27, 2014
  16. 2/4 read-cache.c: Refactor --ignore-missing implementationBrad King, Jan 27, 2014
  17. Junio C HamanoJan 27, 2014
  18. 3/4 read-cache.c: Extend make_cache_entry refresh flag with optionsBrad King, Jan 27, 2014
  19. 4/4 merge-recursive.c: Tolerate missing files while refreshing indexBrad King, Jan 27, 2014
  20. Fwd: [PATCH/RFC 3/3] merge-recursive: Tolerate missing file when HEAD is up to datenewren, Jan 24, 2014
  21. Brad KingJan 24, 2014

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.