mirror of
https://github.com/git/git.git
synced 2024-12-14 20:33:46 +08:00
Merge branch 'jz/apply-quiet-and-allow-empty'
"git apply" has been taught to ignore a message without a patch with the "--allow-empty" option. It also learned to honor the "--quiet" option given from the command line. * jz/apply-quiet-and-allow-empty: git-apply: add --allow-empty flag git-apply: add --quiet flag
This commit is contained in:
commit
62a3a27b91
@ -16,7 +16,7 @@ SYNOPSIS
|
||||
[--ignore-space-change | --ignore-whitespace]
|
||||
[--whitespace=(nowarn|warn|fix|error|error-all)]
|
||||
[--exclude=<path>] [--include=<path>] [--directory=<root>]
|
||||
[--verbose] [--unsafe-paths] [<patch>...]
|
||||
[--verbose | --quiet] [--unsafe-paths] [--allow-empty] [<patch>...]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -228,6 +228,11 @@ behavior:
|
||||
current patch being applied will be printed. This option will cause
|
||||
additional information to be reported.
|
||||
|
||||
-q::
|
||||
--quiet::
|
||||
Suppress stderr output. Messages about patch status and progress
|
||||
will not be printed.
|
||||
|
||||
--recount::
|
||||
Do not trust the line counts in the hunk headers, but infer them
|
||||
by inspecting the patch (e.g. after editing the patch without
|
||||
@ -251,6 +256,10 @@ When `git apply` is used as a "better GNU patch", the user can pass
|
||||
the `--unsafe-paths` option to override this safety check. This option
|
||||
has no effect when `--index` or `--cached` is in use.
|
||||
|
||||
--allow-empty::
|
||||
Don't return error for patches containing no diff. This includes
|
||||
empty patches and patches with commit text only.
|
||||
|
||||
CONFIGURATION
|
||||
-------------
|
||||
|
||||
|
10
apply.c
10
apply.c
@ -4752,8 +4752,10 @@ static int apply_patch(struct apply_state *state,
|
||||
}
|
||||
|
||||
if (!list && !skipped_patch) {
|
||||
error(_("unrecognized input"));
|
||||
res = -128;
|
||||
if (!state->allow_empty) {
|
||||
error(_("No valid patches in input (allow with \"--allow-empty\")"));
|
||||
res = -128;
|
||||
}
|
||||
goto end;
|
||||
}
|
||||
|
||||
@ -5071,7 +5073,7 @@ int apply_parse_options(int argc, const char **argv,
|
||||
N_("leave the rejected hunks in corresponding *.rej files")),
|
||||
OPT_BOOL(0, "allow-overlap", &state->allow_overlap,
|
||||
N_("allow overlapping hunks")),
|
||||
OPT__VERBOSE(&state->apply_verbosity, N_("be verbose")),
|
||||
OPT__VERBOSITY(&state->apply_verbosity),
|
||||
OPT_BIT(0, "inaccurate-eof", options,
|
||||
N_("tolerate incorrectly detected missing new-line at the end of file"),
|
||||
APPLY_OPT_INACCURATE_EOF),
|
||||
@ -5081,6 +5083,8 @@ int apply_parse_options(int argc, const char **argv,
|
||||
OPT_CALLBACK(0, "directory", state, N_("root"),
|
||||
N_("prepend <root> to all filenames"),
|
||||
apply_option_parse_directory),
|
||||
OPT_BOOL(0, "allow-empty", &state->allow_empty,
|
||||
N_("don't return error for empty patches")),
|
||||
OPT_END()
|
||||
};
|
||||
|
||||
|
1
apply.h
1
apply.h
@ -66,6 +66,7 @@ struct apply_state {
|
||||
int threeway;
|
||||
int unidiff_zero;
|
||||
int unsafe_paths;
|
||||
int allow_empty;
|
||||
|
||||
/* Other non boolean parameters */
|
||||
struct repository *repo;
|
||||
|
@ -11,6 +11,8 @@ test_expect_success setup '
|
||||
git add empty &&
|
||||
test_tick &&
|
||||
git commit -m initial &&
|
||||
git commit --allow-empty -m "empty commit" &&
|
||||
git format-patch --always HEAD~ >empty.patch &&
|
||||
for i in a b c d e
|
||||
do
|
||||
echo $i
|
||||
@ -27,30 +29,42 @@ test_expect_success setup '
|
||||
'
|
||||
|
||||
test_expect_success 'apply empty' '
|
||||
git reset --hard &&
|
||||
rm -f missing &&
|
||||
test_when_finished "git reset --hard" &&
|
||||
git apply patch0 &&
|
||||
test_cmp expect empty
|
||||
'
|
||||
|
||||
test_expect_success 'apply empty patch fails' '
|
||||
test_when_finished "git reset --hard" &&
|
||||
test_must_fail git apply empty.patch &&
|
||||
test_must_fail git apply - </dev/null
|
||||
'
|
||||
|
||||
test_expect_success 'apply with --allow-empty succeeds' '
|
||||
test_when_finished "git reset --hard" &&
|
||||
git apply --allow-empty empty.patch &&
|
||||
git apply --allow-empty - </dev/null
|
||||
'
|
||||
|
||||
test_expect_success 'apply --index empty' '
|
||||
git reset --hard &&
|
||||
rm -f missing &&
|
||||
test_when_finished "git reset --hard" &&
|
||||
git apply --index patch0 &&
|
||||
test_cmp expect empty &&
|
||||
git diff --exit-code
|
||||
'
|
||||
|
||||
test_expect_success 'apply create' '
|
||||
git reset --hard &&
|
||||
rm -f missing &&
|
||||
test_when_finished "git reset --hard" &&
|
||||
git apply patch1 &&
|
||||
test_cmp expect missing
|
||||
'
|
||||
|
||||
test_expect_success 'apply --index create' '
|
||||
git reset --hard &&
|
||||
rm -f missing &&
|
||||
test_when_finished "git reset --hard" &&
|
||||
git apply --index patch1 &&
|
||||
test_cmp expect missing &&
|
||||
git diff --exit-code
|
||||
|
Loading…
Reference in New Issue
Block a user