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

Re: [PATCH 1/2] t6026-merge-attr: child processes must not inherit index.lock handles

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 17, 2016, 17:55 UTC
Message-ID
<xmqqh9aj9t5p.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<742a0bc524ac20bf10ccdf9ac51bb01a30efee16.1471437637.git.johannes.schindelin@gmx.de>
Johannes Schindelin <johannes.schindelin@gmx.de> writes:
> From: Ben Wijen <ben@wijen.net>
>
> On Windows, files cannot be removed unless all file handles to it have

s/files/a file/, as the file handles later in the sentence are open on that single file.

Alternatively s/file handles to it/file handles to them/.
Show 17 quoted lines
> been released. Hence it is particularly important to close handles when
> spawning children (which would probably not even know that they hold on
> to those handles).
>
> The example chosen for this test is a custom merge driver that indeed
> has no idea that it blocks the deletion of index.lock. The full use case
> is a daemon that lives on after the merge, with subsequent invocations
> handing off to the daemon, thereby avoiding hefty start-up costs. We
> simulate this behavior by simply sleeping one second.
>
> Note that the test only fails on Windows, due to the file locking issue.
> Since we have no way to say "expect failure with MINGW, success
> otherwise", we simply skip this test on Windows for now.
>
> Signed-off-by: Ben Wijen <ben@wijen.net>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
Otherwise, nicely done.  Thanks.
Show 25 quoted lines
>  t/t6026-merge-attr.sh | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/t/t6026-merge-attr.sh b/t/t6026-merge-attr.sh
> index ef0cbce..3d28c78 100755
> --- a/t/t6026-merge-attr.sh
> +++ b/t/t6026-merge-attr.sh
> @@ -181,4 +181,17 @@ test_expect_success 'up-to-date merge without common ancestor' '
>  	)
>  '
>  
> +test_expect_success !MINGW 'custom merge does not lock index' '
> +	git reset --hard anchor &&
> +	write_script sleep-one-second.sh <<-\EOF &&
> +		sleep 1 &
> +	EOF
> +
> +	test_write_lines >.gitattributes \
> +		"* merge=ours" "text merge=sleep-one-second" &&
> +	test_config merge.ours.driver true &&
> +	test_config merge.sleep-one-second.driver ./sleep-one-second.sh &&
> +	git merge master
> +'
> +
>  test_done
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 3 of 21 in “Do not lock temporary files via child processes on Windows”
  1. 0/2 Do not lock temporary files via child processes on WindowsJohannes Schindelin, Aug 17, 2016
  2. 1/2 t6026-merge-attr: child processes must not inherit index.lock handlesJohannes Schindelin, Aug 17, 2016
  3. Junio C HamanoAug 17, 2016
  4. 2/2 mingw: ensure temporary file handles are not inherited by child processesJohannes Schindelin, Aug 17, 2016
  5. Eric SunshineAug 17, 2016
  6. Johannes SchindelinAug 18, 2016
  7. Lars SchneiderAug 17, 2016
  8. Junio C HamanoAug 17, 2016
  9. Johannes SchindelinAug 18, 2016
  10. Eric WongAug 18, 2016
  11. Junio C HamanoAug 18, 2016
  12. Eric WongAug 18, 2016
  13. Junio C HamanoAug 19, 2016
  14. Johannes SchindelinAug 22, 2016
  15. 0/2 Do not lock temporary files via child processes on WindowsJohannes Schindelin, Aug 18, 2016
  16. 2/2 mingw: ensure temporary file handles are not inherited by child processesJohannes Schindelin, Aug 18, 2016
  17. 1/2 t6026-merge-attr: child processes must not inherit index.lock handlesJohannes Schindelin, Aug 18, 2016
  18. 0/2 Do not lock temporary files via child processes on WindowsJohannes Schindelin, Aug 22, 2016
  19. 1/2 t6026-merge-attr: child processes must not inherit index.lock handlesJohannes Schindelin, Aug 22, 2016
  20. 2/2 mingw: ensure temporary file handles are not inherited by child processesJohannes Schindelin, Aug 22, 2016
  21. Eric WongAug 22, 2016

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.