apply -v: show offset count when patch did not apply exactly
When the line number the patch intended to touch does not match the line in the version being patched, GNU patch reports that it applied the hunk at a different line number, with how big an offset. Teach "git apply" to do the same under --verbose option. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
964498e7f9
commit
334f8cb22a
@ -2432,7 +2432,8 @@ static void update_image(struct image *img,
|
||||
}
|
||||
|
||||
static int apply_one_fragment(struct image *img, struct fragment *frag,
|
||||
int inaccurate_eof, unsigned ws_rule)
|
||||
int inaccurate_eof, unsigned ws_rule,
|
||||
int nth_fragment)
|
||||
{
|
||||
int match_beginning, match_end;
|
||||
const char *patch = frag->patch;
|
||||
@ -2638,6 +2639,15 @@ static int apply_one_fragment(struct image *img, struct fragment *frag,
|
||||
apply = 0;
|
||||
}
|
||||
|
||||
if (apply_verbosely && applied_pos != pos) {
|
||||
int offset = applied_pos - pos;
|
||||
if (apply_in_reverse)
|
||||
offset = 0 - offset;
|
||||
fprintf(stderr,
|
||||
"Hunk #%d succeeded at %d (offset %d lines).\n",
|
||||
nth_fragment, applied_pos + 1, offset);
|
||||
}
|
||||
|
||||
/*
|
||||
* Warn if it was necessary to reduce the number
|
||||
* of context lines.
|
||||
@ -2785,12 +2795,14 @@ static int apply_fragments(struct image *img, struct patch *patch)
|
||||
const char *name = patch->old_name ? patch->old_name : patch->new_name;
|
||||
unsigned ws_rule = patch->ws_rule;
|
||||
unsigned inaccurate_eof = patch->inaccurate_eof;
|
||||
int nth = 0;
|
||||
|
||||
if (patch->is_binary)
|
||||
return apply_binary(img, patch);
|
||||
|
||||
while (frag) {
|
||||
if (apply_one_fragment(img, frag, inaccurate_eof, ws_rule)) {
|
||||
nth++;
|
||||
if (apply_one_fragment(img, frag, inaccurate_eof, ws_rule, nth)) {
|
||||
error("patch failed: %s:%ld", name, frag->oldpos);
|
||||
if (!apply_with_reject)
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user