]> git.ipfire.org Git - thirdparty/git.git/blobdiff - apply.c
doc: move credential helper info into gitcredentials(7)
[thirdparty/git.git] / apply.c
diff --git a/apply.c b/apply.c
index b5485ef6c988cc9e13aa9468b788edaa7f624b3f..fab44322c5f27952842b6bcfe48bd5e5f8a3c739 100644 (file)
--- a/apply.c
+++ b/apply.c
@@ -2661,6 +2661,16 @@ static int find_pos(struct apply_state *state,
        unsigned long backwards, forwards, current;
        int backwards_lno, forwards_lno, current_lno;
 
+       /*
+        * When running with --allow-overlap, it is possible that a hunk is
+        * seen that pretends to start at the beginning (but no longer does),
+        * and that *still* needs to match the end. So trust `match_end` more
+        * than `match_beginning`.
+        */
+       if (state->allow_overlap && match_beginning && match_end &&
+           img->nr - preimage->nr != 0)
+               match_beginning = 0;
+
        /*
         * If match_beginning or match_end is specified, there is no
         * point starting from a wrong line that will never match and