From 5cb6a2c946a071d43be3cdabf2f6d4417a4be694 Mon Sep 17 00:00:00 2001 From: David Turner Date: Sun, 29 Oct 2017 12:28:43 -0400 Subject: Ignore trailing whitespace in .gitignore files (as git itself does) --- src/ignore.c | 10 ++++++++++ tests/attr/ignore.c | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/ignore.c b/src/ignore.c index f089dbeb5..615cd94bf 100644 --- a/src/ignore.c +++ b/src/ignore.c @@ -213,6 +213,16 @@ static int parse_ignore_file( if (ignore_case) match->flags |= GIT_ATTR_FNMATCH_ICASE; + while (match->length > 0) { + if (match->pattern[match->length - 1] == ' ' || + match->pattern[match->length - 1] == '\t') { + match->pattern[match->length - 1] = 0; + match->length --; + } else { + break; + } + } + scan = git__next_line(scan); /* diff --git a/tests/attr/ignore.c b/tests/attr/ignore.c index 856e61f90..d241c03b5 100644 --- a/tests/attr/ignore.c +++ b/tests/attr/ignore.c @@ -51,6 +51,16 @@ void test_attr_ignore__allow_root(void) assert_is_ignored(false, "NewFolder/NewFolder/File.txt"); } +void test_attr_ignore__ignore_space(void) +{ + cl_git_rewritefile("attr/.gitignore", "/\n\n/NewFolder \n/NewFolder/NewFolder"); + + assert_is_ignored(false, "File.txt"); + assert_is_ignored(true, "NewFolder"); + assert_is_ignored(true, "NewFolder/NewFolder"); + assert_is_ignored(true, "NewFolder/NewFolder/File.txt"); +} + void test_attr_ignore__ignore_root(void) { cl_git_rewritefile("attr/.gitignore", "/\n\n/NewFolder\n/NewFolder/NewFolder"); -- cgit v1.2.1