From: "Torsten Bögershausen" <tboegi@web.de>
To: Benoit Pierre <benoit.pierre@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 4/7] commit: fix patch hunk editing with "commit -p -m"
Date: Wed, 19 Mar 2014 08:32:24 +0100 [thread overview]
Message-ID: <53294808.8030106@web.de> (raw)
In-Reply-To: <1395136856-17225-4-git-send-email-benoit.pierre@gmail.com>
On 03/18/2014 11:00 AM, Benoit Pierre wrote:
> Don't change git environment: move the GIT_EDITOR=":" override to the
> hook command subprocess, like it's already done for GIT_INDEX_FILE.
>
> Signed-off-by: Benoit Pierre <benoit.pierre@gmail.com>
> ---
> builtin/checkout.c | 8 ++++----
> builtin/clone.c | 4 ++--
> builtin/commit.c | 35 ++++++++++++++++++++++++++++-------
> builtin/gc.c | 2 +-
> builtin/merge.c | 6 +++---
> commit.h | 3 +++
> run-command.c | 44 ++++++++++++++++++++++++++++++++------------
> run-command.h | 6 +++++-
> t/t7514-commit-patch.sh | 4 ++--
> 9 files changed, 80 insertions(+), 32 deletions(-)
>
[]
> index 3914d9c..75abc47 100644
> --- a/run-command.c
> +++ b/run-command.c
> @@ -760,13 +760,11 @@ char *find_hook(const char *name)
> return path;
> }
>
> -int run_hook(const char *index_file, const char *name, ...)
> +int run_hook_ve(const char *const *env, const char *name, va_list args)
> {
> struct child_process hook;
> struct argv_array argv = ARGV_ARRAY_INIT;
> - const char *p, *env[2];
> - char index[PATH_MAX];
(Please see below)
> - va_list args;
> + const char *p;
> int ret;
>
> p = find_hook(name);
> @@ -775,23 +773,45 @@ int run_hook(const char *index_file, const char *name, ...)
>
> argv_array_push(&argv, p);
>
> - va_start(args, name);
> while ((p = va_arg(args, const char *)))
> argv_array_push(&argv, p);
> - va_end(args);
>
> memset(&hook, 0, sizeof(hook));
> hook.argv = argv.argv;
> + hook.env = env;
> hook.no_stdin = 1;
> hook.stdout_to_stderr = 1;
> - if (index_file) {
> - snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", index_file);
> - env[0] = index;
> - env[1] = NULL;
> - hook.env = env;
> - }
>
> ret = run_command(&hook);
> argv_array_clear(&argv);
> return ret;
> }
> +
> +int run_hook_le(const char *const *env, const char *name, ...)
> +{
> + va_list args;
> + int ret;
> +
> + va_start(args, name);
> + ret = run_hook_ve(env, name, args);
> + va_end(args);
> +
> + return ret;
> +}
> +
> +int run_hook_with_custom_index(const char *index_file, const char *name, ...)
> +{
> + const char *hook_env[3] = { NULL };
> + char index[PATH_MAX];
Sorry being late with the review.
Recently some effort has been put to replace the
"PATH_MAX/snprintf() combo" with code using strbuf.
So I think for new developed code it could make sense to avoid PATH_MAX
from the start.
To my knowledge mkpathdup() from path.c can be used,
(or are there better ways ?)
and the whole function will look like below (not tested)
> + va_list args;
> + int ret;
> +
> + snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", index_file);
> + hook_env[0] = index;
> +
> + va_start(args, name);
> + ret = run_hook_ve(hook_env, name, args);
> + va_end(args);
> +
> + return ret;
> +}
int run_hook_with_custom_index(const char *index_file, const char *name,
...)
{
const char *hook_env[3] = { NULL };
char index = mkpathdup("GIT_INDEX_FILE=%s", index_file);
va_list args;
int ret;
hook_env[0] = index;
va_start(args, name);
ret = run_hook_ve(hook_env, name, args);
va_end(args);
free(index);
return ret;
}
> diff --git a/run-command.h b/run-command.h
> index 6b985af..88460f9 100644
> --- a/run-command.h
> +++ b/run-command.h
> @@ -47,7 +47,11 @@ int run_command(struct child_process *);
>
> extern char *find_hook(const char *name);
> LAST_ARG_MUST_BE_NULL
> -extern int run_hook(const char *index_file, const char *name, ...);
> +extern int run_hook_le(const char *const *env, const char *name, ...);
> +extern int run_hook_ve(const char *const *env, const char *name, va_list args);
> +
> +LAST_ARG_MUST_BE_NULL
> +extern int run_hook_with_custom_index(const char *index_file, const char *name, ...);
>
> #define RUN_COMMAND_NO_STDIN 1
> #define RUN_GIT_CMD 2 /*If this is to be git sub-command */
> diff --git a/t/t7514-commit-patch.sh b/t/t7514-commit-patch.sh
> index 41dd37a..998a210 100755
> --- a/t/t7514-commit-patch.sh
> +++ b/t/t7514-commit-patch.sh
> @@ -15,7 +15,7 @@ test_expect_success 'setup (initial)' '
> git commit -m commit1
> '
>
> -test_expect_failure 'edit hunk "commit -p -m message"' '
> +test_expect_success 'edit hunk "commit -p -m message"' '
> test_when_finished "rm -f editor_was_started" &&
> rm -f editor_was_started &&
> echo more >>file &&
> @@ -23,7 +23,7 @@ test_expect_failure 'edit hunk "commit -p -m message"' '
> test -r editor_was_started
> '
>
> -test_expect_failure 'edit hunk "commit --dry-run -p -m message"' '
> +test_expect_success 'edit hunk "commit --dry-run -p -m message"' '
> test_when_finished "rm -f editor_was_started" &&
> rm -f editor_was_started &&
> echo more >>file &&
>
next prev parent reply other threads:[~2014-03-19 7:32 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-10 18:49 [PATCH V2 0/7] fix hunk editing with 'commit -p -m' Benoit Pierre
2014-03-10 18:49 ` [PATCH 1/7] merge hook tests: fix missing '&&' in test Benoit Pierre
2014-03-10 18:49 ` [PATCH 2/7] merge hook tests: use 'test_must_fail' instead of '!' Benoit Pierre
2014-03-10 18:49 ` [PATCH 3/7] test patch hunk editing with "commit -p -m" Benoit Pierre
2014-03-10 20:20 ` Eric Sunshine
2014-03-11 18:13 ` Junio C Hamano
2014-03-10 20:30 ` Philip Oakley
2014-03-11 21:03 ` Junio C Hamano
2014-03-15 12:28 ` Torsten Bögershausen
2014-03-15 16:11 ` Benoit Pierre
2014-03-15 21:00 ` Torsten Bögershausen
2014-03-15 21:42 ` [PATCH 1/7] merge hook tests: fix missing '&&' in test Benoit Pierre
2014-03-15 21:42 ` [PATCH 2/7] merge hook tests: use 'test_must_fail' instead of '!' Benoit Pierre
2014-03-15 21:42 ` [PATCH 3/7] test patch hunk editing with "commit -p -m" Benoit Pierre
2014-03-17 18:49 ` Junio C Hamano
2014-03-17 19:46 ` Benoit Pierre
2014-03-17 19:51 ` Eric Sunshine
2014-03-17 19:53 ` Benoit Pierre
2014-03-17 21:33 ` Junio C Hamano
2014-03-17 18:53 ` Junio C Hamano
2014-03-17 19:52 ` Benoit Pierre
2014-03-17 21:35 ` Junio C Hamano
2014-03-18 10:00 ` [PATCH 1/7] merge hook tests: fix missing '&&' in test Benoit Pierre
2014-03-18 10:00 ` [PATCH 2/7] merge hook tests: use 'test_must_fail' instead of '!' Benoit Pierre
2014-03-18 10:00 ` [PATCH 3/7] test patch hunk editing with "commit -p -m" Benoit Pierre
2014-03-18 10:00 ` [PATCH 4/7] commit: fix " Benoit Pierre
2014-03-19 7:32 ` Torsten Bögershausen [this message]
2014-03-19 17:19 ` Junio C Hamano
2014-03-18 10:00 ` [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook Benoit Pierre
2014-03-18 10:00 ` [PATCH 6/7] merge hook tests: fix and update tests Benoit Pierre
2014-03-18 10:00 ` [PATCH 7/7] run-command: mark run_hook_with_custom_index as deprecated Benoit Pierre
2014-03-18 18:27 ` [PATCH 1/7] merge hook tests: fix missing '&&' in test Junio C Hamano
2014-03-15 21:42 ` [PATCH 4/7] commit: fix patch hunk editing with "commit -p -m" Benoit Pierre
2014-03-15 21:42 ` [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook Benoit Pierre
2014-03-15 21:42 ` [PATCH 6/7] merge hook tests: fix and update tests Benoit Pierre
2014-03-15 21:42 ` [PATCH 7/7] run-command: mark run_hook_with_custom_index as deprecated Benoit Pierre
2014-03-10 18:49 ` [PATCH 4/7] commit: fix patch hunk editing with "commit -p -m" Benoit Pierre
2014-03-10 20:07 ` Jeff King
2014-03-11 0:45 ` Jun Hao
2014-03-11 17:56 ` Benoit Pierre
2014-03-11 18:00 ` Jeff King
2014-03-11 18:40 ` [PATCH 4/7] commit: fix patch hunk editing with Jun Hao
2014-03-11 21:02 ` [PATCH 4/7] commit: fix patch hunk editing with "commit -p -m" Junio C Hamano
2014-03-10 18:49 ` [PATCH 5/7] merge: fix GIT_EDITOR override for commit hook Benoit Pierre
2014-03-10 18:49 ` [PATCH 6/7] merge hook tests: fix and update tests Benoit Pierre
2014-03-10 20:27 ` Eric Sunshine
2014-03-10 18:49 ` [PATCH 7/7] run-command: mark run_hook_with_custom_index as deprecated Benoit Pierre
2014-03-11 1:00 ` brian m. carlson
2014-03-11 17:37 ` Benoit Pierre
2014-04-03 22:11 ` [PATCH V2 0/7] fix hunk editing with 'commit -p -m' Jonathan Nieder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53294808.8030106@web.de \
--to=tboegi@web.de \
--cc=benoit.pierre@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).