Interface ScmManager

All Known Implementing Classes:
AbstractScmManager, BasicScmManager, DefaultScmManager, ScmManagerStub

public interface ScmManager
  • Method Details

    • makeScmRepository

      Generate a ScmRepository from an SCM URL.
      Parameters:
      scmUrl - the scm url
      Returns:
      the scm repository (never null)
      Throws:
      NoSuchScmProviderException - if the provider doesn't exist
      ScmRepositoryException - if an error occurs in the scm repository construction
    • makeProviderScmRepository

      Generate a ScmRepository for a specific provider and a given checkout (working) directory
      Parameters:
      providerType -
      path - the checkout (working) directory
      Returns:
      the SCM repository (never null)
      Throws:
      ScmRepositoryException - if the provider does not recognize the directory
      UnknownRepositoryStructure - if the provider does not support this way of generating a ScmRepository
      NoSuchScmProviderException - if the given provider type does not have a provider implementation bound
    • makeProviderScmRepository

      Optional<ScmRepository> makeProviderScmRepository(File path)
      Generate a ScmRepository for a given checkout (working) directory. Determines a suitable SCM provider for the directory by looking for SCM specific metadata files.
      Parameters:
      path - the checkout (working) directory
      Returns:
      the ScmRepository or empty if no suitable provider found
      Since:
      2.2.1
    • validateScmRepository

      List<String> validateScmRepository(String scmUrl)
      Validate a SCM URL.
      Parameters:
      scmUrl - the SCM URL to validate
      Returns:
      List of String objects with the messages returned by the SCM provider
    • getProviderByUrl

    • getProviderByType

      ScmProvider getProviderByType(String providerType) throws NoSuchScmProviderException
      Returns the default provider registered for this providerType or a specific implementation if the 'maven.scm.provider.providerType.implementation' system property is defined. For example: maven.scm.provider.git.implementation=git.
      Parameters:
      providerType - the provider type (git, svn...)
      Returns:
      the scm provider
      Throws:
      NoSuchScmProviderException - if the provider doesn't exist
    • getProviderByRepository

      ScmProvider getProviderByRepository(ScmRepository repository) throws NoSuchScmProviderException
      Throws:
      NoSuchScmProviderException
    • setScmProvider

      void setScmProvider(String providerType, ScmProvider provider)
      Set a provider to be used for a type of SCM. If there was already a designed provider for that type it will be replaced.
      Parameters:
      providerType - the type of SCM, e.g. svn, git
      provider - the provider that will be used for that SCM type
    • setScmProviderImplementation

      void setScmProviderImplementation(String providerType, String providerImplementation)
      Set the provider implementation.
      Parameters:
      providerType - the provider type, e.g. git
      providerImplementation - the provider implementation (the role-hint of the provider), e.g. git, svn
    • add

      AddScmResult add(ScmRepository repository, ScmFileSet fileSet) throws ScmException
      Adds the given files to the source control system.
      Parameters:
      repository - the source control system
      fileSet - the files to be added
      Returns:
      an AddScmResult that contains the file paths (relative to fileSet.getBasedir()) that have been added
      Throws:
      ScmException - if any
    • add

      AddScmResult add(ScmRepository repository, ScmFileSet fileSet, String message) throws ScmException
      Adds the given files to the source control system.
      Parameters:
      repository - the source control system
      fileSet - the files to be added
      message - a string that is a comment on the new added file
      Returns:
      an AddScmResult that contains the file paths (relative to fileSet.getBasedir()) that have been added
      Throws:
      ScmException - if any
    • branch

      BranchScmResult branch(ScmRepository repository, ScmFileSet fileSet, String branchName) throws ScmException
      Branch (or label in some systems) will create a branch of the source file with a certain branch name.
      Parameters:
      repository - the source control system
      fileSet - the files to branch. Implementations can also give the changes from the ScmFileSet.getBasedir() downwards.
      branchName - the branch name to apply to the files
      Returns:
      TODO
      Throws:
      ScmException - if any
    • branch

      BranchScmResult branch(ScmRepository repository, ScmFileSet fileSet, String branchName, String message) throws ScmException
      Branch (or label in some systems) will create a branch of the source file with a certain branch name.
      Parameters:
      repository - the source control system
      fileSet - the files to branch. Implementations can also give the changes from the ScmFileSet.getBasedir() downwards.
      branchName - the branch name to apply to the files
      message - the commit message used for the tag creation
      Returns:
      TODO
      Throws:
      ScmException - if any
    • changeLog

      @Deprecated ChangeLogScmResult changeLog(ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, ScmBranch branch) throws ScmException
      Returns the changes that have happend in the source control system in a certain period of time. This can be adding, removing, updating, ... of files.
      Parameters:
      repository - the source control system
      fileSet - the files to know the changes about. Implementations can also give the changes from the ScmFileSet.getBasedir() downwards.
      startDate - the start date of the period
      endDate - the end date of the period
      numDays - the number days before the current time if startdate and enddate are null
      branch - the branch/tag
      Returns:
      the SCM result of the changelog command
      Throws:
      ScmException - if any
    • changeLog

      @Deprecated ChangeLogScmResult changeLog(ScmRepository repository, ScmFileSet fileSet, Date startDate, Date endDate, int numDays, ScmBranch branch, String datePattern) throws ScmException
      Returns the changes that have happend in the source control system in a certain period of time. This can be adding, removing, updating, ... of files.
      Parameters:
      repository - the source control system
      fileSet - the files to know the changes about. Implementations can also give the changes from the ScmFileSet.getBasedir() downwards.
      startDate - the start date of the period
      endDate - the end date of the period
      numDays - the number days before the current time if startdate and enddate are null
      branch - the branch/tag
      datePattern - the date pattern use in changelog output returned by scm tool
      Returns:
      the SCM result of the changelog command
      Throws:
      ScmException - if any
    • changeLog

      ChangeLogScmResult changeLog(ChangeLogScmRequest scmRequest) throws ScmException
      Returns the changes that have happend in the source control system in a certain period of time. This can be adding, removing, updating, ... of files.
      Parameters:
      scmRequest - request wrapping detailed parameters for the changelog command
      Returns:
      the SCM result of the changelog command
      Throws:
      ScmException - if any
      Since:
      1.8
    • changeLog

      @Deprecated ChangeLogScmResult changeLog(ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion) throws ScmException
      Returns the changes that have happend in the source control system between two tags. This can be adding, removing, updating, ... of files.
      Parameters:
      repository - the source control system
      fileSet - the files to know the changes about. Implementations can also give the changes from the ScmFileSet.getBasedir() downwards.
      startVersion - the start branch/tag/revision
      endVersion - the end branch/tag/revision
      Returns:
      the SCM result of the changelog command
      Throws:
      ScmException - if any
    • changeLog

      @Deprecated ChangeLogScmResult changeLog(ScmRepository repository, ScmFileSet fileSet, ScmVersion startRevision, ScmVersion endRevision, String datePattern) throws ScmException
      Returns the changes that have happend in the source control system between two tags. This can be adding, removing, updating, ... of files.
      Parameters:
      repository - the source control system
      fileSet - the files to know the changes about. Implementations can also give the changes from the ScmFileSet.getBasedir() downwards.
      startRevision - the start revision
      endRevision - the end revision
      datePattern - the date pattern use in changelog output returned by scm tool
      Returns:
      TODO
      Throws:
      ScmException - if any
    • checkIn

      CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, String message) throws ScmException
      Save the changes you have done into the repository. This will create a new version of the file or directory in the repository.

      When the fileSet has no entries, the fileSet.getBasedir() is recursively committed. When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet are committed.

      Parameters:
      repository - the source control system
      fileSet - the files to check in (sometimes called commit)
      message - a string that is a comment on the changes that where done
      Returns:
      a CheckInScmResult that contains the file paths (relative to fileSet.getBasedir()) that have been checked in
      Throws:
      ScmException - if any
    • checkIn

      CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, CommandParameters commandParameters) throws ScmException
      Save the changes you have done into the repository. This will create a new version of the file or directory in the repository.

      When the fileSet has no entries, the fileSet.getBasedir() is recursively committed. When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet are committed.

      Parameters:
      repository - the source control system
      fileSet - the files to check in (sometimes called commit)
      commandParameters - parameters for the command, such as commit message and whether to sign the commit. CommandParameters
      Returns:
      a CheckInScmResult that contains the file paths (relative to fileSet.getBasedir()) that have been checked in
      Throws:
      ScmException - if any
    • checkIn

      CheckInScmResult checkIn(ScmRepository repository, ScmFileSet fileSet, ScmVersion revision, String message) throws ScmException
      Save the changes you have done into the repository. This will create a new version of the file or directory in the repository.

      When the fileSet has no entries, the fileSet.getBasedir() is recursively committed. When the fileSet has entries, the commit is non-recursive and only the elements in the fileSet are committed.

      Parameters:
      repository - the source control system
      fileSet - the files to check in (sometimes called commit)
      revision - branch/tag/revision
      message - a string that is a comment on the changes that where done
      Returns:
      a CheckInScmResult that contains the file paths (relative to fileSet.getBasedir()) that have been checked in
      Throws:
      ScmException - if any
    • checkOut

      CheckOutScmResult checkOut(ScmRepository repository, ScmFileSet fileSet) throws ScmException
      Create a copy of the repository on your local machine.
      Parameters:
      repository - the source control system
      fileSet - the files are copied to the ScmFileSet.getBasedir() location
      Returns:
      TODO
      Throws:
      ScmException - if any
    • checkOut

      CheckOutScmResult checkOut(ScmRepository repository, ScmFileSet fileSet, ScmVersion version) throws ScmException
      Create a copy of the repository on your local machine.
      Parameters:
      repository - the source control system
      fileSet - the files are copied to the ScmFileSet.getBasedir() location
      version - get the version defined by the revision, branch or tag
      Returns:
      TODO
      Throws:
      ScmException - if any
    • checkOut

      CheckOutScmResult checkOut(ScmRepository scmRepository, ScmFileSet scmFileSet, boolean recursive) throws ScmException
      Create a copy of the repository on your local machine.
      Parameters:
      scmRepository - the source control system
      scmFileSet - the files are copied to the ScmFileSet.getBasedir() location
      recursive - whether to check out recursively
      Returns:
      TODO
      Throws:
      ScmException - if any
    • checkOut

      CheckOutScmResult checkOut(ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion version, boolean recursive) throws ScmException
      Create a copy of the repository on your local machine.
      Parameters:
      scmRepository - the source control system
      scmFileSet - the files are copied to the ScmFileSet.getBasedir() location
      version - get the version defined by the revision, branch or tag
      recursive - whether to check out recursively
      Returns:
      TODO
      Throws:
      ScmException - if any
    • diff

      DiffScmResult diff(ScmRepository scmRepository, ScmFileSet scmFileSet, ScmVersion startVersion, ScmVersion endVersion) throws ScmException
      Create a diff between two branch/tag/revision.
      Parameters:
      scmRepository - the source control system
      scmFileSet - the files are copied to the ScmFileSet.getBasedir() location
      startVersion - the start branch/tag/revision
      endVersion - the end branch/tag/revision
      Returns:
      TODO
      Throws:
      ScmException - if any
    • edit

      EditScmResult edit(ScmRepository repository, ScmFileSet fileSet) throws ScmException
      Make a file editable. This is used in source control systems where you look at read-only files, and you need to make them writable before you can edit them. This can also mean that no other user in the system can make the file writable.
      Parameters:
      repository - the source control system
      fileSet - the files to make editable
      Returns:
      TODO
      Throws:
      ScmException - if any
    • export

      ExportScmResult export(ScmRepository repository, ScmFileSet fileSet) throws ScmException
      Create an exported copy of the repository on your local machine.
      Parameters:
      repository - the source control system
      fileSet - the files are copied to the ScmFileSet.getBasedir() location
      Returns:
      TODO
      Throws:
      ScmException - if any
    • export

      ExportScmResult export(ScmRepository repository, ScmFileSet fileSet, ScmVersion version) throws ScmException
      Create an exported copy of the repository on your local machine.
      Parameters:
      repository - the source control system
      fileSet - the files are copied to the ScmFileSet.getBasedir() location
      version - get the version defined by the branch/tag/revision
      Returns:
      TODO
      Throws:
      ScmException - if any
    • export

      ExportScmResult export(ScmRepository repository, ScmFileSet fileSet, String outputDirectory) throws ScmException
      Create an exported copy of the repository on your local machine.
      Parameters:
      repository - the source control system
      fileSet - the files are copied to the ScmFileSet.getBasedir() location
      outputDirectory - the directory where the export will be stored
      Returns:
      TODO
      Throws:
      ScmException - if any
    • export

      ExportScmResult export(ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String outputDirectory) throws ScmException
      Create an exported copy of the repository on your local machine.
      Parameters:
      repository - the source control system
      fileSet - the files are copied to the ScmFileSet.getBasedir() location
      version - get the version defined by the branch/tag/revision
      outputDirectory - the directory where the export will be stored
      Returns:
      TODO
      Throws:
      ScmException - if any
    • list

      ListScmResult list(ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion version) throws ScmException
      List each element (files and directories) of fileSet as they exist in the repository.
      Parameters:
      repository - the source control system
      fileSet - the files to list
      recursive - descend recursively
      version - use the version defined by the branch/tag/revision
      Returns:
      the list of files in the repository
      Throws:
      ScmException - if any
    • mkdir

      MkdirScmResult mkdir(ScmRepository repository, ScmFileSet fileSet, String message, boolean createInLocal) throws ScmException
      Create new directory/directories in the repository.
      Parameters:
      repository - TODO
      fileSet - TODO
      message - TODO
      createInLocal - TODO
      Returns:
      TODO
      Throws:
      ScmException - if any
    • remove

      RemoveScmResult remove(ScmRepository repository, ScmFileSet fileSet, String message) throws ScmException
      Removes the given files from the source control system.
      Parameters:
      repository - the source control system
      fileSet - the files to be removed
      message - TODO
      Returns:
      a RemoveScmResult that contains the file paths (relative to fileSet.getBasedir()) that have been removed
      Throws:
      ScmException - if any
    • status

      StatusScmResult status(ScmRepository repository, ScmFileSet fileSet) throws ScmException
      Returns the status of the files in the source control system. The state of each file can be one of the ScmFileStatus flags.
      Parameters:
      repository - the source control system
      fileSet - the files to know the status about. Implementations can also give the changes from the ScmFileSet.getBasedir() downwards.
      Returns:
      TODO
      Throws:
      ScmException - if any
    • tag

      TagScmResult tag(ScmRepository repository, ScmFileSet fileSet, String tagName) throws ScmException
      Tag (or label in some systems) will tag the source file with a certain tag.
      Parameters:
      repository - the source control system
      fileSet - the files to tag. Implementations can also give the changes from the ScmFileSet.getBasedir() downwards.
      tagName - the tag name to apply to the files
      Returns:
      TODO
      Throws:
      ScmException - if any
    • tag

      TagScmResult tag(ScmRepository repository, ScmFileSet fileSet, String tagName, String message) throws ScmException
      Tag (or label in some systems) will tag the source file with a certain tag.
      Parameters:
      repository - the source control system
      fileSet - the files to tag. Implementations can also give the changes from the ScmFileSet.getBasedir() downwards.
      tagName - the tag name to apply to the files
      message - the commit message used for the tag creation
      Returns:
      TODO
      Throws:
      ScmException - if any
    • unedit

      UnEditScmResult unedit(ScmRepository repository, ScmFileSet fileSet) throws ScmException
      Make a file no longer editable. This is the conterpart of edit(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet). It makes the file read-only again.
      Parameters:
      repository - the source control system
      fileSet - the files to make uneditable
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, ScmVersion version) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      version - use the version defined by the branch/tag/revision
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, boolean runChangelog) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      runChangelog - run the changelog command after the update
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, ScmVersion version, boolean runChangelog) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      version - use the version defined by the branch/tag/revision
      runChangelog - run the changelog command after the update
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, String datePattern) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      datePattern - the date pattern use in changelog output returned by scm tool
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, ScmVersion version, String datePattern) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      version - use the version defined by the branch/tag/revision
      datePattern - the date pattern use in changelog output returned by scm tool
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, Date lastUpdate) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      lastUpdate - TODO
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      version - use the version defined by the branch/tag/revision
      lastUpdate - TODO
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, Date lastUpdate, String datePattern) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      lastUpdate - date of last update
      datePattern - the date pattern use in changelog output returned by scm tool
      Returns:
      TODO
      Throws:
      ScmException - if any
    • update

      UpdateScmResult update(ScmRepository repository, ScmFileSet fileSet, ScmVersion version, Date lastUpdate, String datePattern) throws ScmException
      Updates the copy on the local machine with the changes in the repository.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      version - use the version defined by the branch/tag/revision
      lastUpdate - date of last update
      datePattern - the date pattern use in changelog output returned by scm tool
      Returns:
      TODO
      Throws:
      ScmException - if any
    • blame

      BlameScmResult blame(ScmRepository repository, ScmFileSet fileSet, String filename) throws ScmException
      Returns the blame of specified file.
      Parameters:
      repository - the source control system
      fileSet - location of your local copy
      filename - file
      Returns:
      blame for specified file
      Throws:
      ScmException - if any
      Since:
      1.4
    • blame

      BlameScmResult blame(BlameScmRequest blameScmRequest) throws ScmException
      Parameters:
      blameScmRequest - TODO
      Returns:
      blame for specified file
      Throws:
      ScmException - if any
      Since:
      1.4