diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-12-10 01:22:42 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-12-10 01:22:42 -0800 |
commit | 7be2b6e02b4f2a1b4812764f65b12cafb11a934e (patch) | |
tree | c94ad7eb3a4d478a1c71eb6ef0aaf1c0f7348660 /builtin-tag.c | |
parent | Documentation: describe -w/--web option to "git-help". (diff) | |
parent | Update draft Release Notes for 1.5.4 (diff) | |
download | tgif-7be2b6e02b4f2a1b4812764f65b12cafb11a934e.tar.xz |
Merge branch 'master' into cc/help
This is to primarily pull in MANPATH tweak and help.txt formatting fix
from the master branch.
Diffstat (limited to 'builtin-tag.c')
-rw-r--r-- | builtin-tag.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/builtin-tag.c b/builtin-tag.c index 114c684d24..517419fd3d 100644 --- a/builtin-tag.c +++ b/builtin-tag.c @@ -23,11 +23,9 @@ static const char * const git_tag_usage[] = { static char signingkey[1000]; -static void launch_editor(const char *path, struct strbuf *buffer) +void launch_editor(const char *path, struct strbuf *buffer, const char *const *env) { const char *editor, *terminal; - struct child_process child; - const char *args[3]; editor = getenv("GIT_EDITOR"); if (!editor && editor_program) @@ -48,15 +46,15 @@ static void launch_editor(const char *path, struct strbuf *buffer) if (!editor) editor = "vi"; - memset(&child, 0, sizeof(child)); - child.argv = args; - args[0] = editor; - args[1] = path; - args[2] = NULL; + if (strcmp(editor, ":")) { + const char *args[] = { editor, path, NULL }; - if (run_command(&child)) - die("There was a problem with the editor %s.", editor); + if (run_command_v_opt_cd_env(args, 0, NULL, env)) + die("There was a problem with the editor %s.", editor); + } + if (!buffer) + return; if (strbuf_read_file(buffer, path, 0) < 0) die("could not read message file '%s': %s", path, strerror(errno)); @@ -190,7 +188,7 @@ static int do_sign(struct strbuf *buffer) int len; if (!*signingkey) { - if (strlcpy(signingkey, git_committer_info(1), + if (strlcpy(signingkey, git_committer_info(IDENT_ERROR_ON_NO_NAME), sizeof(signingkey)) > sizeof(signingkey) - 1) return error("committer info too long."); bracket = strchr(signingkey, '>'); @@ -300,7 +298,7 @@ static void create_tag(const unsigned char *object, const char *tag, sha1_to_hex(object), typename(type), tag, - git_committer_info(1)); + git_committer_info(IDENT_ERROR_ON_NO_NAME)); if (header_len > sizeof(header_buf) - 1) die("tag header too big."); @@ -322,7 +320,7 @@ static void create_tag(const unsigned char *object, const char *tag, write_or_die(fd, tag_template, strlen(tag_template)); close(fd); - launch_editor(path, buf); + launch_editor(path, buf, NULL); unlink(path); free(path); |