diff options
| author | Junio C Hamano <gitster@pobox.com> | 2014-04-08 12:07:06 -0700 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2014-04-08 12:07:06 -0700 | 
| commit | 86b4c1639c4a44fa8c10a7c438c5af24ca87e2a9 (patch) | |
| tree | e3d0929979a9874bc9864e9d48bd6daec4abc110 /builtin/commit.c | |
| parent | 2f91649a9ba7c590be4f1ce66521b21e305fb7bc (diff) | |
| parent | b549be0da7ff9075c0b3de14c1d5d03583ca8d2d (diff) | |
| download | git-86b4c1639c4a44fa8c10a7c438c5af24ca87e2a9.tar.gz | |
Merge branch 'bp/commit-p-editor' into maint
* bp/commit-p-editor:
  run-command: mark run_hook_with_custom_index as deprecated
  merge hook tests: fix and update tests
  merge: fix GIT_EDITOR override for commit hook
  commit: fix patch hunk editing with "commit -p -m"
  test patch hunk editing with "commit -p -m"
  merge hook tests: use 'test_must_fail' instead of '!'
  merge hook tests: fix missing '&&' in test
Diffstat (limited to 'builtin/commit.c')
| -rw-r--r-- | builtin/commit.c | 35 | 
1 files changed, 28 insertions, 7 deletions
| diff --git a/builtin/commit.c b/builtin/commit.c index 26b2986abe..6a60f668b2 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -612,7 +612,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,  	/* This checks and barfs if author is badly specified */  	determine_author_info(author_ident); -	if (!no_verify && run_hook(index_file, "pre-commit", NULL)) +	if (!no_verify && run_commit_hook(use_editor, index_file, "pre-commit", NULL))  		return 0;  	if (squash_message) { @@ -866,8 +866,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix,  		return 0;  	} -	if (run_hook(index_file, "prepare-commit-msg", -		     git_path(commit_editmsg), hook_arg1, hook_arg2, NULL)) +	if (run_commit_hook(use_editor, index_file, "prepare-commit-msg", +			    git_path(commit_editmsg), hook_arg1, hook_arg2, NULL))  		return 0;  	if (use_editor) { @@ -883,7 +883,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,  	}  	if (!no_verify && -	    run_hook(index_file, "commit-msg", git_path(commit_editmsg), NULL)) { +	    run_commit_hook(use_editor, index_file, "commit-msg", git_path(commit_editmsg), NULL)) {  		return 0;  	} @@ -1067,8 +1067,6 @@ static int parse_and_validate_options(int argc, const char *argv[],  		use_editor = 0;  	if (0 <= edit_flag)  		use_editor = edit_flag; -	if (!use_editor) -		setenv("GIT_EDITOR", ":", 1);  	/* Sanity check options */  	if (amend && !current_head) @@ -1445,6 +1443,29 @@ static int run_rewrite_hook(const unsigned char *oldsha1,  	return finish_command(&proc);  } +int run_commit_hook(int editor_is_used, const char *index_file, const char *name, ...) +{ +	const char *hook_env[3] =  { NULL }; +	char index[PATH_MAX]; +	va_list args; +	int ret; + +	snprintf(index, sizeof(index), "GIT_INDEX_FILE=%s", index_file); +	hook_env[0] = index; + +	/* +	 * Let the hook know that no editor will be launched. +	 */ +	if (!editor_is_used) +		hook_env[1] = "GIT_EDITOR=:"; + +	va_start(args, name); +	ret = run_hook_ve(hook_env, name, args); +	va_end(args); + +	return ret; +} +  int cmd_commit(int argc, const char **argv, const char *prefix)  {  	static struct wt_status s; @@ -1669,7 +1690,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)  		     "not exceeded, and then \"git reset HEAD\" to recover."));  	rerere(0); -	run_hook(get_index_file(), "post-commit", NULL); +	run_commit_hook(use_editor, get_index_file(), "post-commit", NULL);  	if (amend && !no_post_rewrite) {  		struct notes_rewrite_cfg *cfg;  		cfg = init_copy_notes_for_rewrite("amend"); | 
