private void analyzeWritableFiles()

in src/com/intellij/vssSupport/VssChangeProvider.java [249:284]


  private void analyzeWritableFiles( FilePath filePath, List<String> writableFiles )
  {
    final HashSet<String> newFiles = new HashSet<>();

    if( writableFiles.size() == 0 )
      return;
    
    if( writableFiles.size() < PER_FILE_DIFF_MARGIN )
    {
      LOG.info( "-- ChangeProvider - Analyzing writable files on per-file basis" );
      analyzeWritableFilesByStatus( writableFiles, newFiles, filesChanged, filesHijacked, filesObsolete );
    }
    else
    {
      LOG.info( "-- ChangeProvider - Analyzing writable files on the base of \"Directory\" command" );
      analyzeWritableFilesByDirectory( filePath, writableFiles, newFiles, filesChanged, filesHijacked );
    }

    //  For each new file check whether some subfolders structure above it
    //  is also new.
    if( isBatchUpdate )
    {
      final List<String> newFolders = new ArrayList<>();
      final HashSet<String> processedFolders = new HashSet<>();
      for( String file : newFiles )
      {
        if (progress != null) {
          progress.checkCanceled();
        }
        if( !isPathUnderProcessedFolders( processedFolders, file ))
          analyzeParentFolderStructureForPresence( file, newFolders, processedFolders );
      }
      filesNew.addAll( newFolders );
    }
    filesNew.addAll( newFiles );
  }