Appends "**" to patterns with a terminal slash, so that directory contents are ignored, but not the directory itself.
@@ -345,7 +345,7 @@ func parseIgnoreFile(fd io.Reader, currentFile string, seen map[string]bool) ([]
case strings.HasSuffix(line, "/**"):
err = addPattern(line)
case strings.HasSuffix(line, "/"):
- err = addPattern(line)
+ err = addPattern(line + "**")
default:
if err == nil {
@@ -718,3 +718,22 @@ func TestIssue3174(t *testing.T) {
t.Error("Should match")
}
+
+func TestIssue3639(t *testing.T) {
+ stignore := `
+ foo/
+ `
+ pats := New(true)
+ err := pats.Parse(bytes.NewBufferString(stignore), ".stignore")
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !pats.Match("foo/bar").IsIgnored() {
+ t.Error("Should match 'foo/bar'")
+ if pats.Match("foo").IsIgnored() {
+ t.Error("Should not match 'foo'")
+}