Skip to contentSkip to conversation

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

PATCH In review John Lin via GitGitGadget 4 participants 5 messages Jun 7, 2020 – Jun 8, 2020

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Recommend "git gc --auto" instead of "git prune"

From: John Lin <[email protected]>

---
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(-)
builtin/gc.c +1 -1
index 8e0b9cf41b3..3833a3de332 100644
@@ -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

Signature · 1 line
gitgitgadget
#1 lore raw
Quoted 20 lines · John Lin via GitGitGadget

From: John Lin <[email protected]>

---
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(-)
builtin/gc.c +0 -0
index 8e0b9cf41b3..3833a3de332 100644

builtin/gc.c int cmd_gc(int argc, const char **argv, const char *prefix) · line 695

Quoted 5 lines
builtin/gc.c +1 -1
@@ -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.

Signature · 2 lines
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204
#2 lore raw
Quoted 6 lines · brian m. carlson
Quoted 6 lines
builtin/gc.c +0 -0
index 8e0b9cf41b3..3833a3de332 100644
@@ -692,7 +692,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
 
Quoted 10 lines

builtin/gc.c int cmd_gc(int argc, const char **argv, const char *prefix) · line 695

Quoted 4 lines
builtin/gc.c +1 -1
 	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.

#3 lore raw

Hi all,

Quoted 19 lines · Junio C Hamano
Quoted 6 lines · brian m. carlson
Quoted 6 lines
builtin/gc.c +0 -0
index 8e0b9cf41b3..3833a3de332 100644
@@ -692,7 +692,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
 
Quoted 10 lines

builtin/gc.c int cmd_gc(int argc, const char **argv, const char *prefix) · line 695

Quoted 4 lines
builtin/gc.c +1 -1
 	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.

Quoted 2 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.

[0]: https://github.com/gitgitgadget/git/issues/642

#4 lore raw
Quoted 8 lines · Denton Liu
Quoted 2 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...

Quoted 6 lines

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.