git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Derrick Stolee <derrickstolee@github.com>
Cc: Tao Klerks <tao@klerks.biz>, git <git@vger.kernel.org>
Subject: Re: Auto packing the repository - foreground or background in Windows?
Date: Tue, 06 Dec 2022 20:19:46 +0100	[thread overview]
Message-ID: <221206.86o7sgbagq.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <4dcad1f5-9ebd-d15a-b663-a3513ae1bcb8@github.com>


On Tue, Dec 06 2022, Derrick Stolee wrote:

> On 12/1/2022 7:25 AM, Tao Klerks wrote: 
>> But my *question* is: Does anyone know where I could/should look to
>> understand why the GC was happening in the foreground, even though the
>> message says it will run in the background?
>
> On Windows, Git's foreground process cannot complete without also
> killing the background process. I'm not sure on the concrete details,
> but the lack of a background "git gc --auto" here is deliberate for
> that platform.
>  
>> I don't know how to create the conditions for the auto-GC on demand
>> (how to create lots of loose objects??), so I don't know how to verify
>> whether it ever runs in the background on Windows, or what that might
>> depend on. I saw some discussions in 2016, but I can't tell what the
>> conclusion was; is it simply the case that git has been "lying" about
>> running GC in the background, on windows, for all these years? Or is
>> there something specific going on in this user's environment?
>
> Instead, the modern recommendation for repositories where "git gc --auto"
> would be slow is to run "git maintenance start" which will schedule
> background maintenance jobs with the Windows scheduler. Those processes
> are built to do updates that are non-invasive to concurrent foreground
> processes. It also sets config to avoid "git gc --auto" commands at the
> end of foreground Git processes.
>
> See [1] for more details.
>
> [1] https://git-scm.com/docs/git-maintenance

That's good advice, but Tao is pointing out that the message we emit is
buggy here, which is a correct.

The problem is just that on Windows we always fail to daemonize(), but
didn't correct the bits that know that to the bits that emit the
message.

I think this should fix it:
	
	diff --git a/builtin/gc.c b/builtin/gc.c
	index 02455fdcd73..a5f599ebff0 100644
	--- a/builtin/gc.c
	+++ b/builtin/gc.c
	@@ -623,9 +623,11 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
	 		if (!need_to_gc())
	 			return 0;
	 		if (!quiet) {
	+#ifndef NO_POSIX_GOODIES
	 			if (detach_auto)
	 				fprintf(stderr, _("Auto packing the repository in background for optimum performance.\n"));
	 			else
	+#endif
	 				fprintf(stderr, _("Auto packing the repository for optimum performance.\n"));
	 			fprintf(stderr, _("See \"git help gc\" for manual housekeeping.\n"));
	 		}
Tao: If you're interested do you mind carrying that (or some other
similar) patch forward?

The above is: Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>

  reply	other threads:[~2022-12-06 19:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-01 12:25 Auto packing the repository - foreground or background in Windows? Tao Klerks
2022-12-06 18:03 ` Derrick Stolee
2022-12-06 19:19   ` Ævar Arnfjörð Bjarmason [this message]
2022-12-06 22:41   ` Jeff Hostetler
2022-12-08 14:29     ` Tao Klerks
2022-12-08 14:52   ` Tao Klerks
2022-12-09 15:11     ` Derrick Stolee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=221206.86o7sgbagq.gmgdl@evledraar.gmail.com \
    --to=avarab@gmail.com \
    --cc=derrickstolee@github.com \
    --cc=git@vger.kernel.org \
    --cc=tao@klerks.biz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).