DirectoryTidier should not attempt to delete a directory if a new file was added under it.

This commit is contained in:
Mert Akinc
2019-01-23 13:29:52 -06:00
parent 67256ce17f
commit 10fd93da8e
+6 -12
View File
@@ -46,6 +46,8 @@ namespace GitTfs.Core
{
if (fileAndOperation.Value == FileOperation.Remove)
_filesInTfs.Remove(fileAndOperation.Key.ToLowerInvariant());
else if (fileAndOperation.Value == FileOperation.Add || fileAndOperation.Value == FileOperation.RenameTo)
_filesInTfs.Add(fileAndOperation.Key.ToLowerInvariant());
}
var deletedDirs = new List<string>();
@@ -133,24 +135,16 @@ namespace GitTfs.Core
private IEnumerable<string> CalculateCandidateDirectories()
{
var directoriesWithRemovedFiles = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
var directoriesBlockedForRemoval = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
foreach (var fileAndOperation in _fileOperations)
foreach (var removedFilePath in _fileOperations.Where(x => x.Value == FileOperation.Remove).Select(x => x.Key))
{
var directory = GetDirectoryName(fileAndOperation.Key);
switch (fileAndOperation.Value)
var directory = GetDirectoryName(removedFilePath);
if (directory != null)
{
case FileOperation.Remove:
directoriesWithRemovedFiles.Add(directory);
break;
default:
directoriesBlockedForRemoval.Add(directory);
break;
directoriesWithRemovedFiles.Add(directory);
}
}
directoriesBlockedForRemoval.Add(null);
directoriesWithRemovedFiles.ExceptWith(directoriesBlockedForRemoval);
return directoriesWithRemovedFiles;
}
}