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> /// <returns>True if the file should be ignored.</returns>
public static bool IsIgnored(FileSystemMetadata fileInfo, BaseItem? parent) 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); var parentDirPath = Path.GetDirectoryName(fileInfo.FullName);
if (string.IsNullOrEmpty(parentDirPath)) if (string.IsNullOrEmpty(parentDirPath))
{ {
@ -55,13 +68,9 @@ public class DotIgnoreIgnoreRule : IResolverIgnoreRule
return false; return false;
} }
string ignoreFileString; string ignoreFileString = GetFileContent(ignoreFile);
using (var reader = ignoreFile.OpenText())
{
ignoreFileString = reader.ReadToEnd();
}
if (string.IsNullOrEmpty(ignoreFileString)) if (string.IsNullOrWhiteSpace(ignoreFileString))
{ {
// Ignore directory if we just have the file // Ignore directory if we just have the file
return true; return true;
@ -74,4 +83,12 @@ public class DotIgnoreIgnoreRule : IResolverIgnoreRule
return ignore.IsIgnored(fileInfo.FullName); return ignore.IsIgnored(fileInfo.FullName);
} }
private static string GetFileContent(FileInfo dirIgnoreFile)
{
using (var reader = dirIgnoreFile.OpenText())
{
return reader.ReadToEnd();
}
}
} }