threads / patch / 16464

patchInvoke "gc --auto" from git commit

Subject: [PATCH] Invoke "gc --auto" from git commit

## tl;dr

4 messages between Nov 25, 2008 and Nov 26, 2008. Diffs are folded; open one to read it.

replies: 3people: 2as markdown or json

Jean-Luc Herren· Nov 25, 2008, 16:15 UTC · lore
This feature was lost during the port of git commit to C.
Signed-off-by: Jean-Luc Herren <jlh@gmx.ch>
---
 builtin-commit.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Show changes to builtin-commit.c +2 −0
diff --git a/builtin-commit.c b/builtin-commit.c
index 591d16b..209805b 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -947,6 +947,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
 	struct commit_list *parents = NULL, **pptr = &parents;
 	struct stat statbuf;
 	int allow_fast_forward = 1;
+	const char *argv_gc_auto[] = { "gc", "--auto", NULL };
 
 	git_config(git_commit_config, NULL);
 
@@ -1068,6 +1069,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
 		     "not exceeded, and then \"git reset HEAD\" to recover.");
 
 	rerere();
+	run_command_v_opt(argv_gc_auto, RUN_GIT_CMD);
 	run_hook(get_index_file(), "post-commit", NULL);
 	if (!quiet)
 		print_summary(prefix, commit_sha1);
-- 
1.6.0.4
Jean-Luc Herren· Nov 26, 2008, 01:00 UTC · re: Johannes Schindelin · lore

Re: [PATCH] Invoke "gc --auto" from git commit

Johannes Schindelin wrote:
> On Tue, 25 Nov 2008, Jean-Luc Herren wrote:
>> This feature was lost during the port of git commit to C.
> 
> See http://article.gmane.org/gmane.comp.version-control.git/82125

Oh, I missed that. But then the only commands ever invoking git gc --auto would be git rebase -i, git merge, git svn and git am. I don't know if some people have repositories where they never use any of those, but I certainly have repositories where I only ever use git rebase -i and never any of the other. 'git commit' is something everyone is bound to use and thus it would be the best place for running 'git gc --auto'.

As for the performance impact, on my machine 'git gc --auto' runs 500 times per second in a loop on the git repository (it won't call the hook unless repacking is necessary). I suppose any script calling git commit in a loop would do substantially more work than git gc --auto itself. And if that bit of performance really matters, it could be invoked by git commit only if (rand() % 20 == 0).

My two cents anyway.
jlh
Johannes Schindelin· Nov 26, 2008, 12:37 UTC · re: Jean-Luc Herren · lore

Re: [PATCH] Invoke "gc --auto" from git commit

Hi,
On Wed, 26 Nov 2008, Jean-Luc Herren wrote:
> As for the performance impact, on my machine 'git gc --auto' runs
> 500 times per second in a loop on the git repository (it won't
> call the hook unless repacking is necessary).
Ummm.

How many people do you think share your luck? git.git is _small_. Your machine is _fast_. It is the typical mistake in IT, not thinking about real-world cases...

Ciao, Dscho

← back to recent threads