This PR fixes #416
Issue happens when the repo has multiple files of the same name in different directories.
This is because in various scenarios, a function in gitrepo.go checks if a file matches a pattern
`func (a Addition) Matches(pattern string) bool {
var result bool
if pattern[len(pattern)-1] == '/' {
result = strings.HasPrefix(string(a.Path), pattern)
} else if strings.ContainsRune(pattern, '/') {
result, _ = path.Match(pattern, string(a.Path))
} else {
result, _ = path.Match(pattern, string(a.Name))
}
`
The last condition matches against the file name a.Name and hence it considers both "readme.md" and "sub-folder/readme.md" as the same. Both these files are considered the same, but the checksum are different.
So, even if a readme.md is already ignored in .talismanrc, the checksum doesnt match with the file in sub-folder. Hence talisman suggests the same suggestion that is already in talismanrc.
With this fix, in addition to the existing pattern matches, we have a new match that does a string compare of the filepath and the given pattern as the final default. With this, all these patterns are allowed. sub-folder/, sub-folder/, .txt, sub-folder/readme.md, readme.md(this one alone is matched exactly with the file name).
This PR fixes #416 Issue happens when the repo has multiple files of the same name in different directories. This is because in various scenarios, a function in gitrepo.go checks if a file matches a pattern
The last condition matches against the file name
a.Name
and hence it considers both "readme.md" and "sub-folder/readme.md" as the same. Both these files are considered the same, but the checksum are different.So, even if a readme.md is already ignored in .talismanrc, the checksum doesnt match with the file in sub-folder. Hence talisman suggests the same suggestion that is already in talismanrc.
With this fix, in addition to the existing pattern matches, we have a new match that does a string compare of the filepath and the given pattern as the final default. With this, all these patterns are allowed. sub-folder/, sub-folder/, .txt, sub-folder/readme.md, readme.md(this one alone is matched exactly with the file name).