summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: ef5b9d6)
raw | patch | inline | side by side (parent: ef5b9d6)
author | Paolo Bonzini <bonzini@gnu.org> | |
Tue, 5 Feb 2008 10:01:44 +0000 (11:01 +0100) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Wed, 6 Feb 2008 10:26:02 +0000 (02:26 -0800) |
This is a preparatory patch to allow using run_hook for the
prepare-commit-msg hook.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
prepare-commit-msg hook.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-commit.c | patch | blob | history |
diff --git a/builtin-commit.c b/builtin-commit.c
index c787bed696591f58d1336a701e57414c9d5c8cbf..ec00134f9842ac8ddba72d3f8489036a9f21a396 100644 (file)
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -343,6 +343,40 @@ static int run_status(FILE *fp, const char *index_file, const char *prefix, int
return s.commitable;
}
+static int run_hook(const char *index_file, const char *name, ...)
+{
+ struct child_process hook;
+ const char *argv[10], *env[2];
+ char index[PATH_MAX];
+ va_list args;
+ int i;
+
+ va_start(args, name);
+ argv[0] = git_path("hooks/%s", name);
+ i = 0;
+ do {
+ if (++i >= ARRAY_SIZE(argv))
+ die ("run_hook(): too many arguments");
+ argv[i] = va_arg(args, const char *);
+ } while (argv[i]);
+ va_end(args);
+
+ snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", index_file);
+ env[0] = index;
+ env[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;
+ hook.env = env;
+
+ return run_command(&hook);
+}
+
static const char sign_off_header[] = "Signed-off-by: ";
static int prepare_log_message(const char *index_file, const char *prefix)
return commitable ? 0 : 1;
}
-static int run_hook(const char *index_file, const char *name, const char *arg)
-{
- struct child_process hook;
- const char *argv[3], *env[2];
- char index[PATH_MAX];
-
- argv[0] = git_path("hooks/%s", name);
- argv[1] = arg;
- argv[2] = NULL;
- snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", index_file);
- env[0] = index;
- env[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;
- hook.env = env;
-
- return run_command(&hook);
-}
-
static void print_summary(const char *prefix, const unsigned char *sha1)
{
struct rev_info rev;
launch_editor(git_path(commit_editmsg), NULL, env);
}
if (!no_verify &&
- run_hook(index_file, "commit-msg", git_path(commit_editmsg))) {
+ run_hook(index_file, "commit-msg", git_path(commit_editmsg), NULL)) {
rollback_index_files();
exit(1);
}