Merge branch 'jc/apply-ignore-whitespace' into maint
"--ignore-space-change" option of "git apply" ignored the spaces at the beginning of line too aggressively, which is inconsistent with the option of the same name "diff" and "git diff" have. * jc/apply-ignore-whitespace: apply --ignore-space-change: lines with and without leading whitespaces do not match
This commit is contained in:
commit
c122c9a968
@ -300,11 +300,13 @@ static int fuzzy_matchlines(const char *s1, size_t n1,
|
||||
while ((*last2 == '\r') || (*last2 == '\n'))
|
||||
last2--;
|
||||
|
||||
/* skip leading whitespace */
|
||||
while (isspace(*s1) && (s1 <= last1))
|
||||
s1++;
|
||||
while (isspace(*s2) && (s2 <= last2))
|
||||
s2++;
|
||||
/* skip leading whitespaces, if both begin with whitespace */
|
||||
if (s1 <= last1 && s2 <= last2 && isspace(*s1) && isspace(*s2)) {
|
||||
while (isspace(*s1) && (s1 <= last1))
|
||||
s1++;
|
||||
while (isspace(*s2) && (s2 <= last2))
|
||||
s2++;
|
||||
}
|
||||
/* early return if both lines are empty */
|
||||
if ((s1 > last1) && (s2 > last2))
|
||||
return 1;
|
||||
|
@ -111,7 +111,6 @@ sed -e 's/T/ /g' > main.c.final <<\EOF
|
||||
#include <stdio.h>
|
||||
|
||||
void print_int(int num);
|
||||
T/* a comment */
|
||||
int func(int num);
|
||||
|
||||
int main() {
|
||||
@ -154,7 +153,8 @@ test_expect_success 'patch2 reverse applies with --ignore-space-change' '
|
||||
git config apply.ignorewhitespace change
|
||||
|
||||
test_expect_success 'patch2 applies (apply.ignorewhitespace = change)' '
|
||||
git apply patch2.patch
|
||||
git apply patch2.patch &&
|
||||
test_cmp main.c.final main.c
|
||||
'
|
||||
|
||||
test_expect_success 'patch3 fails (missing string at EOL)' '
|
||||
@ -165,12 +165,8 @@ test_expect_success 'patch4 fails (missing EOL at EOF)' '
|
||||
test_must_fail git apply patch4.patch
|
||||
'
|
||||
|
||||
test_expect_success 'patch5 applies (leading whitespace)' '
|
||||
git apply patch5.patch
|
||||
'
|
||||
|
||||
test_expect_success 'patches do not mangle whitespace' '
|
||||
test_cmp main.c main.c.final
|
||||
test_expect_success 'patch5 fails (leading whitespace differences matter)' '
|
||||
test_must_fail git apply patch5.patch
|
||||
'
|
||||
|
||||
test_expect_success 're-create file (with --ignore-whitespace)' '
|
||||
|
Loading…
Reference in New Issue
Block a user