threads / patch / 53630

patchRecommend "git gc --auto" instead of "git prune"

Subject: [PATCH] Recommend "git gc --auto" instead of "git prune"

## tl;dr

5 messages between Jun 7, 2020 and Jun 8, 2020. Diffs are folded; open one to read it.

replies: 4people: 4as markdown or json

John Lin via GitGitGadget· Jun 7, 2020, 16:18 UTC · lore
From: John Lin <johnlinp@gmail.com>
Signed-off-by: John Lin <johnlinp@gmail.com>
---
    Recommend "git gc --auto" instead of "git prune"
    
    Fix according to #642.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-651%2Fjohnlinp%2Ffix-git-gc-warning-message-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-651/johnlinp/fix-git-gc-warning-message-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/651
 builtin/gc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to builtin/gc.c +1 −1
diff --git a/builtin/gc.c b/builtin/gc.c
index 8e0b9cf41b3..3833a3de332 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -692,7 +692,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
 
 	if (auto_gc && too_many_loose_objects())
 		warning(_("There are too many unreachable loose objects; "
-			"run 'git prune' to remove them."));
+			"run 'git gc --auto' to remove them."));
 
 	if (!daemonized)
 		unlink(git_path("gc.log"));

base-commit: 20514004ddf1a3528de8933bc32f284e175e1012
-- 
gitgitgadget
brian m. carlson· Jun 7, 2020, 16:25 UTC · re: John Lin via GitGitGadget · lore

Re: [PATCH] Recommend "git gc --auto" instead of "git prune"

On 2020-06-07 at 16:18:35, John Lin via GitGitGadget wrote:
Show 25 quoted lines
> From: John Lin <johnlinp@gmail.com>
> 
> Signed-off-by: John Lin <johnlinp@gmail.com>
> ---
>     Recommend "git gc --auto" instead of "git prune"
>     
>     Fix according to #642.
> 
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-651%2Fjohnlinp%2Ffix-git-gc-warning-message-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-651/johnlinp/fix-git-gc-warning-message-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/651
> 
>  builtin/gc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/builtin/gc.c b/builtin/gc.c
> index 8e0b9cf41b3..3833a3de332 100644
> --- a/builtin/gc.c
> +++ b/builtin/gc.c
> @@ -692,7 +692,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
>  
>  	if (auto_gc && too_many_loose_objects())
>  		warning(_("There are too many unreachable loose objects; "
> -			"run 'git prune' to remove them."));
> +			"run 'git gc --auto' to remove them."));

I'm not sure this is correct. If we have just expelled a large number of objects from a pack into loose objects because they're no longer referenced, it's possible we may trigger another git gc --auto on the next time we run a command. If so, no amount of git gc --auto is going to help here; you really have to run git prune.

-- 
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204
Junio C Hamano· Jun 7, 2020, 17:10 UTC · re: brian m. carlson · lore

Re: [PATCH] Recommend "git gc --auto" instead of "git prune"

"brian m. carlson" <sandals@crustytoothpaste.net> writes:
Show 16 quoted lines
>> diff --git a/builtin/gc.c b/builtin/gc.c
>> index 8e0b9cf41b3..3833a3de332 100644
>> --- a/builtin/gc.c
>> +++ b/builtin/gc.c
>> @@ -692,7 +692,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
>>  
>>  	if (auto_gc && too_many_loose_objects())
>>  		warning(_("There are too many unreachable loose objects; "
>> -			"run 'git prune' to remove them."));
>> +			"run 'git gc --auto' to remove them."));
>
> I'm not sure this is correct.  If we have just expelled a large number
> of objects from a pack into loose objects because they're no longer
> referenced, it's possible we may trigger another git gc --auto on the
> next time we run a command.  If so, no amount of git gc --auto is going
> to help here; you really have to run git prune.

Correct. When running manually, after noticing the need to do a GC, it is a mental bug to add "--auto" to it, I would think.

Denton Liu· Jun 7, 2020, 20:45 UTC · re: Junio C Hamano · lore

Re: [PATCH] Recommend "git gc --auto" instead of "git prune"

Hi all,
On Sun, Jun 07, 2020 at 10:10:19AM -0700, Junio C Hamano wrote:
Show 21 quoted lines
> "brian m. carlson" <sandals@crustytoothpaste.net> writes:
> 
> >> diff --git a/builtin/gc.c b/builtin/gc.c
> >> index 8e0b9cf41b3..3833a3de332 100644
> >> --- a/builtin/gc.c
> >> +++ b/builtin/gc.c
> >> @@ -692,7 +692,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
> >>  
> >>  	if (auto_gc && too_many_loose_objects())
> >>  		warning(_("There are too many unreachable loose objects; "
> >> -			"run 'git prune' to remove them."));
> >> +			"run 'git gc --auto' to remove them."));
> >
> > I'm not sure this is correct.  If we have just expelled a large number
> > of objects from a pack into loose objects because they're no longer
> > referenced, it's possible we may trigger another git gc --auto on the
> > next time we run a command.  If so, no amount of git gc --auto is going
> > to help here; you really have to run git prune.
> 
> Correct.  When running manually, after noticing the need to do a GC,
> it is a mental bug to add "--auto" to it, I would think.

Sorry about the confusion, when I was responding to the original issue[0], I mistakenly typed the wrong thing. I meant to suggest replacing it with `git gc --prune=now`, _not_ `git gc --auto` but I guess I had my wires crossed. With this in mind...

The rationale behind this change is that John wanted to add bash completions for `git prune`. However, I noted that prune is a plumbing command and users should opt to use `git gc` instead. He mentioned that sometimes when auto gc runs, it tells the user that they should run `git prune` so I suggested (meant to suggest) replacing the command with `git gc --prune=now` instead so that users could call the porcelain.

[0]: https://github.com/gitgitgadget/git/issues/642
Junio C Hamano· Jun 8, 2020, 17:34 UTC · re: Denton Liu · lore

Re: [PATCH] Recommend "git gc --auto" instead of "git prune"

Denton Liu <liu.denton@gmail.com> writes:
Show 14 quoted lines
>> Correct.  When running manually, after noticing the need to do a GC,
>> it is a mental bug to add "--auto" to it, I would think.
>
> Sorry about the confusion, when I was responding to the original
> issue[0], I mistakenly typed the wrong thing. I meant to suggest
> replacing it with `git gc --prune=now`, _not_ `git gc --auto` but I
> guess I had my wires crossed. With this in mind...
>
> The rationale behind this change is that John wanted to add bash
> completions for `git prune`. However, I noted that prune is a plumbing
> command and users should opt to use `git gc` instead. He mentioned that
> sometimes when auto gc runs, it tells the user that they should run
> `git prune` so I suggested (meant to suggest) replacing the command with
> `git gc --prune=now` instead so that users could call the porcelain.

Nice to know. The reasoning behind the change should be available to those who only look at "git show".

John, if you are to send an updated patch, please make sure you have a meaningful log message in it.

Thanks.

← back to recent threads