зеркало из https://github.com/microsoft/git.git
builtin/apply: move 'apply' global into 'struct apply_state'
To libify the apply functionality the 'apply' variable should not be static and global to the file. Let's move it into 'struct apply_state'. Reviewed-by: Stefan Beller <sbeller@google.com> Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
a48f9bb1b3
Коммит
574f5a59d8
|
@ -26,6 +26,7 @@ struct apply_state {
|
|||
int prefix_length;
|
||||
|
||||
/* These control what gets looked at and modified */
|
||||
int apply; /* this is not a dry-run */
|
||||
int cached; /* apply to the index only */
|
||||
int check; /* preimage must match working tree, don't actually apply */
|
||||
int check_index; /* preimage must match the indexed version */
|
||||
|
@ -56,7 +57,7 @@ static int newfd = -1;
|
|||
|
||||
static int state_p_value = 1;
|
||||
static int p_value_known;
|
||||
static int apply = 1;
|
||||
|
||||
static const char * const apply_usage[] = {
|
||||
N_("git apply [<options>] [<patch>...]"),
|
||||
NULL
|
||||
|
@ -126,10 +127,11 @@ static void parse_ignorewhitespace_option(const char *option)
|
|||
die(_("unrecognized whitespace ignore option '%s'"), option);
|
||||
}
|
||||
|
||||
static void set_default_whitespace_mode(const char *whitespace_option)
|
||||
static void set_default_whitespace_mode(struct apply_state *state,
|
||||
const char *whitespace_option)
|
||||
{
|
||||
if (!whitespace_option && !apply_default_whitespace)
|
||||
ws_error_action = (apply ? warn_on_ws_error : nowarn_ws_error);
|
||||
ws_error_action = (state->apply ? warn_on_ws_error : nowarn_ws_error);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2058,7 +2060,7 @@ static int parse_chunk(struct apply_state *state, char *buffer, unsigned long si
|
|||
* without metadata change. A binary patch appears
|
||||
* empty to us here.
|
||||
*/
|
||||
if ((apply || state->check) &&
|
||||
if ((state->apply || state->check) &&
|
||||
(!patch->is_binary && !metadata_changes(patch)))
|
||||
die(_("patch with only garbage at line %d"), state_linenr);
|
||||
}
|
||||
|
@ -2916,7 +2918,7 @@ static int apply_one_fragment(struct apply_state *state,
|
|||
* apply_data->apply_fragments->apply_one_fragment
|
||||
*/
|
||||
if (ws_error_action == die_on_ws_error)
|
||||
apply = 0;
|
||||
state->apply = 0;
|
||||
}
|
||||
|
||||
if (state->apply_verbosely && applied_pos != pos) {
|
||||
|
@ -4460,9 +4462,9 @@ static int apply_patch(struct apply_state *state,
|
|||
die(_("unrecognized input"));
|
||||
|
||||
if (whitespace_error && (ws_error_action == die_on_ws_error))
|
||||
apply = 0;
|
||||
state->apply = 0;
|
||||
|
||||
state->update_index = state->check_index && apply;
|
||||
state->update_index = state->check_index && state->apply;
|
||||
if (state->update_index && newfd < 0)
|
||||
newfd = hold_locked_index(&lock_file, 1);
|
||||
|
||||
|
@ -4471,12 +4473,12 @@ static int apply_patch(struct apply_state *state,
|
|||
die(_("unable to read index file"));
|
||||
}
|
||||
|
||||
if ((state->check || apply) &&
|
||||
if ((state->check || state->apply) &&
|
||||
check_patch_list(state, list) < 0 &&
|
||||
!state->apply_with_reject)
|
||||
exit(1);
|
||||
|
||||
if (apply && write_out_results(state, list)) {
|
||||
if (state->apply && write_out_results(state, list)) {
|
||||
if (state->apply_with_reject)
|
||||
exit(1);
|
||||
/* with --3way, we still need to write the index out */
|
||||
|
@ -4565,6 +4567,7 @@ static void init_apply_state(struct apply_state *state, const char *prefix)
|
|||
memset(state, 0, sizeof(*state));
|
||||
state->prefix = prefix;
|
||||
state->prefix_length = state->prefix ? strlen(state->prefix) : 0;
|
||||
state->apply = 1;
|
||||
state->line_termination = '\n';
|
||||
state->p_context = UINT_MAX;
|
||||
|
||||
|
@ -4676,9 +4679,9 @@ int cmd_apply(int argc, const char **argv, const char *prefix)
|
|||
state.check_index = 1;
|
||||
}
|
||||
if (state.apply_with_reject)
|
||||
apply = state.apply_verbosely = 1;
|
||||
state.apply = state.apply_verbosely = 1;
|
||||
if (!force_apply && (state.diffstat || state.numstat || state.summary || state.check || state.fake_ancestor))
|
||||
apply = 0;
|
||||
state.apply = 0;
|
||||
if (state.check_index && is_not_gitdir)
|
||||
die(_("--index outside a repository"));
|
||||
if (state.cached) {
|
||||
|
@ -4706,11 +4709,11 @@ int cmd_apply(int argc, const char **argv, const char *prefix)
|
|||
if (fd < 0)
|
||||
die_errno(_("can't open patch '%s'"), arg);
|
||||
read_stdin = 0;
|
||||
set_default_whitespace_mode(whitespace_option);
|
||||
set_default_whitespace_mode(&state, whitespace_option);
|
||||
errs |= apply_patch(&state, fd, arg, options);
|
||||
close(fd);
|
||||
}
|
||||
set_default_whitespace_mode(whitespace_option);
|
||||
set_default_whitespace_mode(&state, whitespace_option);
|
||||
if (read_stdin)
|
||||
errs |= apply_patch(&state, 0, "<stdin>", options);
|
||||
if (whitespace_error) {
|
||||
|
@ -4728,7 +4731,7 @@ int cmd_apply(int argc, const char **argv, const char *prefix)
|
|||
"%d lines add whitespace errors.",
|
||||
whitespace_error),
|
||||
whitespace_error);
|
||||
if (applied_after_fixing_ws && apply)
|
||||
if (applied_after_fixing_ws && state.apply)
|
||||
warning("%d line%s applied after"
|
||||
" fixing whitespace errors.",
|
||||
applied_after_fixing_ws,
|
||||
|
|
Загрузка…
Ссылка в новой задаче