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

[PATCH 1/3] git-gc --auto: add pre-auto-gc hook

From
Miklos Vajna <vmiklos@frugalware.org>
Date
Apr 2, 2008, 19:34 UTC
Message-ID
<4507d1e1d8973a621222c389fa22cd96266312a7.1207164676.git.vmiklos@frugalware.org>
In-Reply-To
<7vtzik848t.fsf@gitster.siamese.dyndns.org>

If such a hook is available and exits with a non-zero status, then git-gc --auto won't run.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
---
 builtin-gc.c |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/builtin-gc.c b/builtin-gc.c
index 8cef36f..9dc7a37 100644
--- a/builtin-gc.c
+++ b/builtin-gc.c
@@ -157,6 +157,34 @@ static int too_many_packs(void)
 	return gc_auto_pack_limit <= cnt;
 }
 
+static int run_hook()
+{
+	const char *argv[2];
+	struct child_process hook;
+	int ret;
+
+	argv[0] = git_path("hooks/pre-auto-gc");
+	argv[1] = NULL;
+
+	if (access(argv[0], X_OK) < 0)
+		return 0;
+
+	memset(&hook, 0, sizeof(hook));
+	hook.argv = argv;
+	hook.no_stdin = 1;
+	hook.stdout_to_stderr = 1;
+
+	ret = start_command(&hook);
+	if (ret) {
+		warning("Could not spawn %s", argv[0]);
+		return ret;
+	}
+	ret = finish_command(&hook);
+	if (ret == -ERR_RUN_COMMAND_WAITPID_SIGNAL)
+		warning("%s exited due to uncaught signal", argv[0]);
+	return ret;
+}
+
 static int need_to_gc(void)
 {
 	/*
@@ -176,6 +204,9 @@ static int need_to_gc(void)
 		append_option(argv_repack, "-A", MAX_ADD);
 	else if (!too_many_loose_objects())
 		return 0;
+
+	if (run_hook())
+		return 0;
 	return 1;
 }
 
-- 
1.5.5.rc2.4.gec07.dirty
Previous: Miklos VajnaNext: Miklos Vajna
Message 9 of 21 in “Re: [PATCH 1/4] git-gc --auto: add pre-auto-gc hook”
  1. Junio C HamanoApr 1, 2008
  2. 0/4 add pre-auto-gc hook for git-gc --auto (try2)Miklos Vajna, Apr 1, 2008
  3. Junio C HamanoApr 1, 2008
  4. Miklos VajnaApr 2, 2008
  5. Junio C HamanoApr 2, 2008
  6. Miklos VajnaApr 2, 2008
  7. Junio C HamanoApr 2, 2008
  8. 0/3 add pre-auto-gc hook for git-gc --auto (try3)Miklos Vajna, Apr 2, 2008
  9. 1/3 git-gc --auto: add pre-auto-gc hookMiklos Vajna, Apr 2, 2008
  10. 2/3 Documentation/hooks: add pre-auto-gc hookMiklos Vajna, Apr 2, 2008
  11. 3/3 contrib/hooks: add an example pre-auto-gc hookMiklos Vajna, Apr 2, 2008
  12. Junio C HamanoApr 2, 2008
  13. 3/3 contrib/hooks: add an example pre-auto-gc hookMiklos Vajna, Apr 2, 2008
  14. Junio C HamanoApr 2, 2008
  15. Miklos VajnaApr 2, 2008
  16. tests for pre-auto-gc hook (WAS: Re: [PATCH 3/3] contrib/hooks: add an example pre-auto-gc hook)Miklos Vajna, Apr 3, 2008
  17. Johannes SixtApr 4, 2008
  18. 1/4 git-gc --auto: add pre-auto-gc hookMiklos Vajna, Apr 1, 2008
  19. 2/4 Documentation/hooks: add pre-auto-gc hookMiklos Vajna, Apr 1, 2008
  20. 3/4 templates: add an example pre-auto-gc hookMiklos Vajna, Apr 1, 2008
  21. 4/4 contrib/hooks: add an example pre-auto-gc hookMiklos Vajna, Apr 1, 2008

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.