コード例 #1
0
 private static bool MaybeDirectoryCreation(PathChangeEntry entry)
 {
     if (entry.ChangeKind == PathChangeKind.Created)
     {
         return(entry.PathKind == PathKind.Directory ||
                entry.PathKind == PathKind.FileOrDirectory ||
                entry.PathKind == PathKind.FileAndDirectory);
     }
     return(false);
 }
コード例 #2
0
        private bool IncludeChange(PathChangeEntry change)
        {
            var path       = change.Path;
            var changeType = change.Kind;

            // Ignore changes for files that have been created then deleted
            if (changeType == PathChangeKind.None)
            {
                return(false);
            }

            // Creation/changes to a directory entry are irrelevant (we will get notifications
            // for files inside the directory is anything relevant occured.)
            if (path.DirectoryExists)
            {
                if (changeType == PathChangeKind.Changed || changeType == PathChangeKind.Created)
                {
                    return(false);
                }
            }

            return(true);
        }
コード例 #3
0
        private bool PathIsExcluded(PathChangeEntry change)
        {
            var path    = change.Path;
            var project = _projectDiscovery.GetProject(path);

            if (project == null)
            {
                return(true);
            }

            // If path is root itself, it is never excluded.
            if (path == project.RootPath)
            {
                return(false);
            }

            // Split relative part into list of name components.
            var split        = PathHelpers.SplitPrefix(path.Value, project.RootPath.Value);
            var relativePath = split.Suffix;
            var names        = relativePath.Split(Path.DirectorySeparatorChar);

            // Check each relative path from root path to full path.
            var pathToItem = new RelativePath();

            foreach (var item in names)
            {
                var relativePathToItem = pathToItem.CreateChild(item);

                bool exclude;
                // For the last component, we might not if it is a file or directory.
                // Check depending on the change kind.
                if (item == names.Last())
                {
                    if (change.Kind == PathChangeKind.Deleted)
                    {
                        exclude = false;
                    }
                    else
                    {
                        var info = _fileSystem.GetFileInfoSnapshot(path);
                        if (info.IsFile)
                        {
                            exclude = !project.FileFilter.Include(relativePathToItem);
                        }
                        else if (info.IsDirectory)
                        {
                            exclude = !project.DirectoryFilter.Include(relativePathToItem);
                        }
                        else
                        {
                            // We don't know... Be conservative.
                            exclude = false;
                        }
                    }
                }
                else
                {
                    exclude = !project.DirectoryFilter.Include(relativePathToItem);
                }

                if (exclude)
                {
                    return(true);
                }

                pathToItem = relativePathToItem;
            }
            return(false);
        }
コード例 #4
0
 private static bool IsProjectFileChange(PathChangeEntry change)
 {
     return
         (SystemPathComparer.Instance.StringComparer.Equals(change.Path.FileName, ConfigurationFileNames.ProjectFileNameObsolete) ||
          SystemPathComparer.Instance.StringComparer.Equals(change.Path.FileName, ConfigurationFileNames.ProjectFileName));
 }
コード例 #5
0
        private bool IncludeChange(PathChangeEntry change)
        {
            var path = change.Path;
              var changeType = change.Kind;

              // Ignore changes for files that have been created then deleted
              if (changeType == PathChangeKind.None)
            return false;

              // Creation/changes to a directory entry are irrelevant (we will get notifications
              // for files inside the directory is anything relevant occured.)
              if (path.DirectoryExists) {
            if (changeType == PathChangeKind.Changed || changeType == PathChangeKind.Created)
              return false;
              }

              return true;
        }