built-in stash: use the built-in git add -p
if so configured
The scripted version of `git stash` called directly into the Perl script `git-add--interactive.perl`, and this was faithfully converted to C. However, we have a much better way to do this now: call the internal API directly, which will now incidentally also respect the `add.interactive.useBuiltin` setting. Let's just do this. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
90a6bb98d1
commit
6610e4628a
@ -999,9 +999,9 @@ static int stash_patch(struct stash_info *info, const struct pathspec *ps,
|
|||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
struct child_process cp_read_tree = CHILD_PROCESS_INIT;
|
struct child_process cp_read_tree = CHILD_PROCESS_INIT;
|
||||||
struct child_process cp_add_i = CHILD_PROCESS_INIT;
|
|
||||||
struct child_process cp_diff_tree = CHILD_PROCESS_INIT;
|
struct child_process cp_diff_tree = CHILD_PROCESS_INIT;
|
||||||
struct index_state istate = { NULL };
|
struct index_state istate = { NULL };
|
||||||
|
char *old_index_env = NULL, *old_repo_index_file;
|
||||||
|
|
||||||
remove_path(stash_index_path.buf);
|
remove_path(stash_index_path.buf);
|
||||||
|
|
||||||
@ -1015,16 +1015,19 @@ static int stash_patch(struct stash_info *info, const struct pathspec *ps,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Find out what the user wants. */
|
/* Find out what the user wants. */
|
||||||
cp_add_i.git_cmd = 1;
|
old_repo_index_file = the_repository->index_file;
|
||||||
argv_array_pushl(&cp_add_i.args, "add--interactive", "--patch=stash",
|
the_repository->index_file = stash_index_path.buf;
|
||||||
"--", NULL);
|
old_index_env = xstrdup_or_null(getenv(INDEX_ENVIRONMENT));
|
||||||
add_pathspecs(&cp_add_i.args, ps);
|
setenv(INDEX_ENVIRONMENT, the_repository->index_file, 1);
|
||||||
argv_array_pushf(&cp_add_i.env_array, "GIT_INDEX_FILE=%s",
|
|
||||||
stash_index_path.buf);
|
ret = run_add_interactive(NULL, "--patch=stash", ps);
|
||||||
if (run_command(&cp_add_i)) {
|
|
||||||
ret = -1;
|
the_repository->index_file = old_repo_index_file;
|
||||||
goto done;
|
if (old_index_env && *old_index_env)
|
||||||
}
|
setenv(INDEX_ENVIRONMENT, old_index_env, 1);
|
||||||
|
else
|
||||||
|
unsetenv(INDEX_ENVIRONMENT);
|
||||||
|
FREE_AND_NULL(old_index_env);
|
||||||
|
|
||||||
/* State of the working tree. */
|
/* State of the working tree. */
|
||||||
if (write_index_as_tree(&info->w_tree, &istate, stash_index_path.buf, 0,
|
if (write_index_as_tree(&info->w_tree, &istate, stash_index_path.buf, 0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user