move run_commit_hook() to libgit and use it there
This function was declared in commit.h but was implemented in builtin/commit.c so was not part of libgit. Move it to libgit so we can use it in the sequencer. This simplifies the implementation of run_prepare_commit_msg_hook() and will be used in the next commit. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
12bb7a540a
commit
49697cb721
|
@ -1443,28 +1443,6 @@ static int git_commit_config(const char *k, const char *v, void *cb)
|
||||||
return git_status_config(k, v, s);
|
return git_status_config(k, v, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
int run_commit_hook(int editor_is_used, const char *index_file, const char *name, ...)
|
|
||||||
{
|
|
||||||
struct argv_array hook_env = ARGV_ARRAY_INIT;
|
|
||||||
va_list args;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
argv_array_pushf(&hook_env, "GIT_INDEX_FILE=%s", index_file);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Let the hook know that no editor will be launched.
|
|
||||||
*/
|
|
||||||
if (!editor_is_used)
|
|
||||||
argv_array_push(&hook_env, "GIT_EDITOR=:");
|
|
||||||
|
|
||||||
va_start(args, name);
|
|
||||||
ret = run_hook_ve(hook_env.argv,name, args);
|
|
||||||
va_end(args);
|
|
||||||
argv_array_clear(&hook_env);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cmd_commit(int argc, const char **argv, const char *prefix)
|
int cmd_commit(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
const char *argv_gc_auto[] = {"gc", "--auto", NULL};
|
const char *argv_gc_auto[] = {"gc", "--auto", NULL};
|
||||||
|
|
24
commit.c
24
commit.c
|
@ -19,6 +19,7 @@
|
||||||
#include "advice.h"
|
#include "advice.h"
|
||||||
#include "refs.h"
|
#include "refs.h"
|
||||||
#include "commit-reach.h"
|
#include "commit-reach.h"
|
||||||
|
#include "run-command.h"
|
||||||
|
|
||||||
static struct commit_extra_header *read_commit_extra_header_lines(const char *buf, size_t len, const char **);
|
static struct commit_extra_header *read_commit_extra_header_lines(const char *buf, size_t len, const char **);
|
||||||
|
|
||||||
|
@ -1581,3 +1582,26 @@ size_t ignore_non_trailer(const char *buf, size_t len)
|
||||||
}
|
}
|
||||||
return boc ? len - boc : len - cutoff;
|
return boc ? len - boc : len - cutoff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int run_commit_hook(int editor_is_used, const char *index_file,
|
||||||
|
const char *name, ...)
|
||||||
|
{
|
||||||
|
struct argv_array hook_env = ARGV_ARRAY_INIT;
|
||||||
|
va_list args;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
argv_array_pushf(&hook_env, "GIT_INDEX_FILE=%s", index_file);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Let the hook know that no editor will be launched.
|
||||||
|
*/
|
||||||
|
if (!editor_is_used)
|
||||||
|
argv_array_push(&hook_env, "GIT_EDITOR=:");
|
||||||
|
|
||||||
|
va_start(args, name);
|
||||||
|
ret = run_hook_ve(hook_env.argv,name, args);
|
||||||
|
va_end(args);
|
||||||
|
argv_array_clear(&hook_env);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
23
sequencer.c
23
sequencer.c
|
@ -1127,25 +1127,22 @@ static int run_prepare_commit_msg_hook(struct repository *r,
|
||||||
struct strbuf *msg,
|
struct strbuf *msg,
|
||||||
const char *commit)
|
const char *commit)
|
||||||
{
|
{
|
||||||
struct argv_array hook_env = ARGV_ARRAY_INIT;
|
int ret = 0;
|
||||||
int ret;
|
const char *name, *arg1 = NULL, *arg2 = NULL;
|
||||||
const char *name;
|
|
||||||
|
|
||||||
name = git_path_commit_editmsg();
|
name = git_path_commit_editmsg();
|
||||||
if (write_message(msg->buf, msg->len, name, 0))
|
if (write_message(msg->buf, msg->len, name, 0))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
argv_array_pushf(&hook_env, "GIT_INDEX_FILE=%s", r->index_file);
|
if (commit) {
|
||||||
argv_array_push(&hook_env, "GIT_EDITOR=:");
|
arg1 = "commit";
|
||||||
if (commit)
|
arg2 = commit;
|
||||||
ret = run_hook_le(hook_env.argv, "prepare-commit-msg", name,
|
} else {
|
||||||
"commit", commit, NULL);
|
arg1 = "message";
|
||||||
else
|
}
|
||||||
ret = run_hook_le(hook_env.argv, "prepare-commit-msg", name,
|
if (run_commit_hook(0, r->index_file, "prepare-commit-msg", name,
|
||||||
"message", NULL);
|
arg1, arg2, NULL))
|
||||||
if (ret)
|
|
||||||
ret = error(_("'prepare-commit-msg' hook failed"));
|
ret = error(_("'prepare-commit-msg' hook failed"));
|
||||||
argv_array_clear(&hook_env);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue