private void processCheckoutDir()

in agent/src/jetbrains/buildServer/swabra/Swabra.java [222:271]


  private void processCheckoutDir(@NotNull final File dir) {
    final String previousBuildTypeId = myPropertiesProcessor.getPreviousBuildTypeId(dir);
    final SwabraPropertiesProcessor.DirectoryState directoryState = getAndCleanDirectoryState(dir);

    if (myRunningBuild.isCleanBuild() || !dir.isDirectory()) {
      myLogger.message("Clean build. No need to clean up in checkout directory ", false);
      return;
    }

    switch (directoryState) {
      case STRICT_CLEAN:
        // do nothing
        return;
      case CLEAN:
        if (mySettings.isStrict()) {
          reportCleanCheckoutDetected(previousBuildTypeId);
          cleanupCheckoutDir("Checkout directory may contain newly created, modified or deleted files", myRunningBuild);
        }
        return;
      case DIRTY:
        if (mySettings.isStrict()) {
          reportCleanCheckoutDetected(previousBuildTypeId);
          cleanupCheckoutDir("Checkout directory contains newly created, modified or deleted files", myRunningBuild);
        } else if (mySettings.isCleanupBeforeBuild()) {
          myLogger.debug("Checkout directory cleanup is performed before build");
          collectFilesInCheckoutDir(dir);
        } else {
          myLogger.warn("Checkout directory contains modified or deleted files.");
          myLogger.message("Clean checkout not enforced - \"Force clean checkout if cannot restore clean directory state\" is unchecked", true);
        }
        return;
      case PENDING:
        if (mySettings.isStrict()) {
          reportCleanCheckoutDetected(previousBuildTypeId);
          cleanupCheckoutDir("Checkout directory snapshot may contain information about newly created, modified or deleted files", myRunningBuild);
        } else{
          myLogger.debug("Checkout directory cleanup is performed before build");
          collectFilesInCheckoutDir(dir);
        }
        return;
      case STRICT_PENDING:
        myLogger.debug("Checkout directory cleanup is performed before build");
        collectFilesInCheckoutDir(dir);
        return;
      case UNKNOWN:
      default:
        reportCleanCheckoutDetected(previousBuildTypeId);
        cleanupCheckoutDir("Checkout directory state is unknown", myRunningBuild);
    }
  }