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

Re: [PATCH] t5510: run auto-gc in the foreground

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
May 4, 2016, 05:48 UTC
Message-ID
<alpine.DEB.2.20.1605040741500.9313@virtualbox>
In-Reply-To
<20160503135028.Horde.jeJdKT1kb2NTVAS1HpcsQh2@webmail.informatik.kit.edu>
Hi Gábor,
On Tue, 3 May 2016, SZEDER Gábor wrote:
Show 34 quoted lines
> Quoting SZEDER Gábor <szeder@ira.uka.de>:
> 
> >Quoting Johannes Schindelin <Johannes.Schindelin@gmx.de>:
> >
> > >Hi Gábor,
> > >
> > >On Sun, 1 May 2016, SZEDER Gábor wrote:
> > >
> > > >diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
> > > >index 38321d19efbe..454d896390c0 100755
> > > >--- a/t/t5510-fetch.sh
> > > >+++ b/t/t5510-fetch.sh
> > > >@@ -682,6 +682,7 @@ test_expect_success 'fetching with auto-gc does
> > > >not lock up' '
> > > > (
> > > >  cd auto-gc &&
> > > >  git config gc.autoPackLimit 1 &&
> > > >+		git config gc.autoDetach false &&
> > > >  GIT_ASK_YESNO="$D/askyesno" git fetch >fetch.out 2>&1 &&
> > > >  ! grep "Should I try again" fetch.out
> > > > )
> > >
> > >Sounds good to me.
> >
> >There is something still bothering me, though.
> >
> >I take this was a Windows-specific issue; deleting open files on Linux is
> >no brainer.  According to a comment on the original Git for Windows issue
> >at github[1], 'git gc' runs in the background by default on Windows as well.
> 
> Ok, having slept on it, it was a false alarm.
> 
> Though 'git gc --auto' claims "Auto packing the repository in background for
> optimum performance." on Windows, it does in fact runs in the foreground.
Thanks for checking. I ran out of time yesterday.
> 'git gc --auto' first prints that message, unless gc.autoDetach is disabled,
> and then calls daemonize() to go to the background.  However, daemonize() is
> basically a no-op on Windows, thus 'git gc' will remain in the foreground and
> the sequence I described below is impossible.  Good.

Oh, right. I think this will take a lot of energy to fix: daemonize()'s functionality is not really available, indeed. What *is* available is a spawn() that detaches the new process.

> Perhaps it would be worth updating 'git gc' to not lie about going to the
> background when we can already know in advance that it won't.

Hmm. https://github.com/git/git/blob/master/builtin/gc.c#L372-L373 already looks correct (should it really know that we cannot daemonize()? What about other code paths using that function?):

			if (detach_auto)
				fprintf(stderr, _("Auto packing the repository in background for optimum performance.\n"));
			else
				fprintf(stderr, _("Auto packing the repository for optimum performance.\n"));

Ciao, Dscho

Previous: SZEDER GáborNext: SZEDER Gábor
Message 5 of 9 in “t5510: run auto-gc in the foreground”
  1. t5510: run auto-gc in the foregroundSZEDER Gábor, May 1, 2016
  2. Johannes SchindelinMay 2, 2016
  3. SZEDER GáborMay 2, 2016
  4. SZEDER GáborMay 3, 2016
  5. Johannes SchindelinMay 4, 2016
  6. SZEDER GáborMay 5, 2016
  7. gc --auto: don't lie about running in background on WindowsSZEDER Gábor, May 5, 2016
  8. Junio C HamanoMay 5, 2016
  9. SZEDER GáborMay 7, 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.