private boolean ensureNoLocalModifications()
      throws ComponentLookupException, ScmException, MojoExecutionException {

    if (!Boolean.getBoolean("sesat.mojo.localModifications.ignore")) {

      final ScmManager scmManager = (ScmManager) container.lookup(ScmManager.ROLE);

      loadPomProject();

      final StatusScmResult result =
          scmManager.status(
              scmManager.makeScmRepository(project.getScm().getDeveloperConnection()),
              new ScmFileSet(pomProject.getBasedir()));

      if (!result.isSuccess()) {

        getLog().error(result.getCommandOutput());
        throw new MojoExecutionException("Failed to ensure checkout has no modifications");
      }

      if (0 < result.getChangedFiles().size()) {

        throw new MojoExecutionException(
            "Your checkout has local modifications. "
                + "Server deploy can *only* be done with a clean workbench.");
      }

      return result.isSuccess() && 0 == result.getChangedFiles().size();
    }
    return true; // sesat.mojo.localModifications.ignore
  }
 /**
  * Creates the provider instance to access the given repository.
  *
  * @param repository the repository to access with the provider to be created.
  * @return the provider to access the given repository.
  * @throws ScmException if the provider cannot be created.
  */
 private ScmProvider createScmProvider(final ScmRepository repository) throws ScmException {
   try {
     final ScmProvider provider = scmManager.getProviderByRepository(repository);
     return provider;
   } catch (final NoSuchScmProviderException e) {
     throw new ScmException("Cannot create SCM provider.", e);
   }
 }
  private void tagDeploy() throws ComponentLookupException, ScmException {

    final ScmManager scmManager = (ScmManager) container.lookup(ScmManager.ROLE);
    final String date = new SimpleDateFormat("yyyyMMddHHmm").format(now);

    loadPomProject();

    final TagScmResult result =
        scmManager.tag(
            scmManager.makeScmRepository(project.getScm().getDeveloperConnection()),
            new ScmFileSet(pomProject.getBasedir()), // TODO server-side copy
            profile + "-deployments/" + date + "-" + project.getArtifactId(),
            "sesat " + profile + " deployment");

    if (!result.isSuccess()) {
      throw new ScmException(result.getCommandOutput());
    }
  }