Ignore directory if empty .ignore file is present (#14536)

This commit is contained in:
Piyush Rungta 2025-07-28 06:52:12 +05:30 committed by GitHub
parent dfab2fb6e2
commit e86315128d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -42,6 +42,19 @@ public class DotIgnoreIgnoreRule : IResolverIgnoreRule
/// <returns>True if the file should be ignored.</returns>
public static bool IsIgnored(FileSystemMetadata fileInfo, BaseItem? parent)
{
if (fileInfo.IsDirectory)
{
var dirIgnoreFile = FindIgnoreFile(new DirectoryInfo(fileInfo.FullName));
if (dirIgnoreFile is null)
{
return false;
}
// ignore the directory only if the .ignore file is empty
// evaluate individual files otherwise
return string.IsNullOrWhiteSpace(GetFileContent(dirIgnoreFile));
}
var parentDirPath = Path.GetDirectoryName(fileInfo.FullName);
if (string.IsNullOrEmpty(parentDirPath))
{
@ -55,13 +68,9 @@ public class DotIgnoreIgnoreRule : IResolverIgnoreRule
return false;
}
string ignoreFileString;
using (var reader = ignoreFile.OpenText())
{
ignoreFileString = reader.ReadToEnd();
}
string ignoreFileString = GetFileContent(ignoreFile);
if (string.IsNullOrEmpty(ignoreFileString))
if (string.IsNullOrWhiteSpace(ignoreFileString))
{
// Ignore directory if we just have the file
return true;
@ -74,4 +83,12 @@ public class DotIgnoreIgnoreRule : IResolverIgnoreRule
return ignore.IsIgnored(fileInfo.FullName);
}
private static string GetFileContent(FileInfo dirIgnoreFile)
{
using (var reader = dirIgnoreFile.OpenText())
{
return reader.ReadToEnd();
}
}
}