talisman icon indicating copy to clipboard operation
talisman copied to clipboard

#416 Fix - Files of the same name in sub-folders will be considered a…

Open deepthirera opened this issue 1 year ago • 0 comments

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).

deepthirera avatar May 21 '24 04:05 deepthirera