/// <summary> /// GitHub does not allow empty directories to be checked in (nor directories that only contain empty directories, i.e. recursively-empty directories). /// Thus many times there are recursively empty unversioned diretories that will be flagged as an uncommitted change, but should not be considered as uncommitted simply because they can't be committed! /// </summary> public static IEnumerable <SvnStringPathStatus> GetUncommittedChangesWithGitHubExceptions(this SvnCommand svnCommand, DirectoryPath directoryPath) { var allUncommittedStatuses = svnCommand.GetAllUncommittedChanges(directoryPath); foreach (var uncommittedStatus in allUncommittedStatuses) { // Unless it's an unversioned, recursively empty directory! var isUnversioned = uncommittedStatus.ItemStatus == ItemStatus.Unversioned; if (isUnversioned) { // Is the path a directory? var isDirectory = PathUtilities.IsDirectory(uncommittedStatus.Path); if (isDirectory) { // Is the directory recursively empty? var isDirectoryRecursivelyEmpty = PathUtilities.IsDirectoryRecursivelyEmpty(uncommittedStatus.Path); if (isDirectoryRecursivelyEmpty) { continue; // Nothing to see here. } } } yield return(uncommittedStatus); } }