Package org.apache.maven.scm.provider

## Class AbstractScmProvider

- java.lang.Object
- - org.apache.maven.scm.provider.AbstractScmProvider

All Implemented Interfaces:
  `ScmProvider`

Direct Known Subclasses:
  `AbstractCvsScmProvider`, `AbstractGitScmProvider`, `AbstractSvnScmProvider`, `AccuRevScmProvider`, `BazaarScmProvider`, `ClearCaseScmProvider`, `HgScmProvider`, `LocalScmProvider`, `PerforceScmProvider`, `StarteamScmProvider`, `SynergyScmProvider`, `TfsScmProvider`

    public abstract class AbstractScmProvider
    extends java.lang.Object
    implements ScmProvider

Author:
  Trygve Laugstøl, Emmanuel Venisse, Olivier Lamy

### Field Summary

### Fields inherited from interface org.apache.maven.scm.provider.ScmProvider

`ROLE`

### Constructor Summary

Constructors
`AbstractScmProvider()`

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`AddScmResult` `add​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`AddScmResult` `add​(ScmRepository repository, ScmFileSet fileSet)` Adds the given files to the source control system
`AddScmResult` `add​(ScmRepository repository, ScmFileSet fileSet, java.lang.String message)` Adds the given files to the source control system
`AddScmResult` `add​(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters)` Adds the given files to the source control system
`void` `addListener​(ScmLogger logger)` Add a logger listener.
`BlameScmResult` `blame​(BlameScmRequest blameScmRequest)`
`protected BlameScmResult` `blame​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`BlameScmResult` `blame​(ScmRepository repository, ScmFileSet fileSet, java.lang.String filename)` Returns the blame of specified file
`protected BranchScmResult` `branch​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`BranchScmResult` `branch​(ScmRepository repository, ScmFileSet fileSet, java.lang.String branchName)` Branch (or label in some systems) will create a branch of the source file with a certain branch name
`BranchScmResult` `branch​(ScmRepository repository, ScmFileSet fileSet, java.lang.String branchName, java.lang.String message)` Branch (or label in some systems) will create a branch of the source file with a certain branch name
`BranchScmResult` `branch​(ScmRepository repository, ScmFileSet fileSet, java.lang.String branchName, ScmBranchParameters scmBranchParameters)` Branch (or label in some systems) will create a branch of the source file with a certain branch name
`protected ChangeLogScmResult` `changelog​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`ChangeLogScmResult` `changeLog​(ChangeLogScmRequest request)` Returns the changes that have happend in the source control system in a certain period of time.
`ChangeLogScmResult` `changeLog​(ScmRepository repository, ScmFileSet fileSet, java.lang.String startTag, java.lang.String endTag)` Deprecated.
`ChangeLogScmResult` `changeLog​(ScmRepository repository, ScmFileSet fileSet, java.lang.String startTag, java.lang.String endTag, java.lang.String datePattern)` Deprecated.
`ChangeLogScmResult` `changeLog​(ScmRepository repository, ScmFileSet fileSet, java.util.Date startDate, java.util.Date endDate, int numDays, java.lang.String branch)` Deprecated.
`ChangeLogScmResult` `changeLog​(ScmRepository repository, ScmFileSet fileSet, java.util.Date startDate, java.util.Date endDate, int numDays, java.lang.String branch, java.lang.String datePattern)` Deprecated.
`ChangeLogScmResult` `changeLog​(ScmRepository repository, ScmFileSet fileSet, java.util.Date startDate, java.util.Date endDate, int numDays, ScmBranch branch)` Returns the changes that have happend in the source control system in a certain period of time.
`ChangeLogScmResult` `changeLog​(ScmRepository repository, ScmFileSet fileSet, java.util.Date startDate, java.util.Date endDate, int numDays, ScmBranch branch, java.lang.String datePattern)` Returns the changes that have happend in the source control system in a certain period of time.
`ChangeLogScmResult` `changeLog​(ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion)` Returns the changes that have happend in the source control system between two tags.
`ChangeLogScmResult` `changeLog​(ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion, java.lang.String datePattern)` Returns the changes that have happend in the source control system between two tags.
`protected CheckInScmResult` `checkin​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`CheckInScmResult` `checkIn​(ScmRepository repository, ScmFileSet fileSet, java.lang.String message)` Save the changes you have done into the repository.
`CheckInScmResult` `checkIn​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag, java.lang.String message)` Deprecated.
`CheckInScmResult` `checkIn​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, java.lang.String message)` Save the changes you have done into the repository.
`protected CheckOutScmResult` `checkout​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`CheckOutScmResult` `checkOut​(ScmRepository repository, ScmFileSet fileSet)` Create a copy of the repository on your local machine
`CheckOutScmResult` `checkOut​(ScmRepository repository, ScmFileSet fileSet, boolean recursive)` Create a copy of the repository on your local machine.
`CheckOutScmResult` `checkOut​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag)` Deprecated.
`CheckOutScmResult` `checkOut​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag, boolean recursive)` Deprecated.
`CheckOutScmResult` `checkOut​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion)` Create a copy of the repository on your local machine
`CheckOutScmResult` `checkOut​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, boolean recursive)` Create a copy of the repository on your local machine.
`CheckOutScmResult` `checkOut​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, CommandParameters commandParameters)` Create a copy of the repository on your local machine.
`protected DiffScmResult` `diff​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`DiffScmResult` `diff​(ScmRepository repository, ScmFileSet fileSet, java.lang.String startRevision, java.lang.String endRevision)` Deprecated.
`DiffScmResult` `diff​(ScmRepository repository, ScmFileSet fileSet, ScmVersion startVersion, ScmVersion endVersion)` Create a diff between two branch/tag/revision.
`protected EditScmResult` `edit​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`EditScmResult` `edit​(ScmRepository repository, ScmFileSet fileSet)` Make a file editable.
`protected ExportScmResult` `export​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`ExportScmResult` `export​(ScmRepository repository, ScmFileSet fileSet)` Create an exported copy of the repository on your local machine
`ExportScmResult` `export​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag)` Deprecated.
`ExportScmResult` `export​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag, java.lang.String outputDirectory)` Deprecated.
`ExportScmResult` `export​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion)` Create an exported copy of the repository on your local machine
`ExportScmResult` `export​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, java.lang.String outputDirectory)` Create an exported copy of the repository on your local machine
`ScmLogger` `getLogger()`
`java.lang.String` `getScmSpecificFilename()` Returns the scm reserved file name where the SCM stores information like 'CVS', '.svn'.
`InfoScmResult` `info​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`protected ListScmResult` `list​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)` List each element (files and directories) of fileSet as they exist in the repository.
`ListScmResult` `list​(ScmRepository repository, ScmFileSet fileSet, boolean recursive, java.lang.String tag)` List each element (files and directories) of fileSet as they exist in the repository.
`ListScmResult` `list​(ScmRepository repository, ScmFileSet fileSet, boolean recursive, ScmVersion scmVersion)` List each element (files and directories) of fileSet as they exist in the repository.
`protected LoginScmResult` `login​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`ScmProviderRepository` `makeProviderScmRepository​(java.io.File path)`
`protected MkdirScmResult` `mkdir​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)` Create directory/directories in the repository.
`MkdirScmResult` `mkdir​(ScmRepository repository, ScmFileSet fileSet, java.lang.String message, boolean createInLocal)` Create directory/directories in the repository.
`RemoteInfoScmResult` `remoteInfo​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`protected RemoveScmResult` `remove​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`RemoveScmResult` `remove​(ScmRepository repository, ScmFileSet fileSet, java.lang.String message)` Removes the given files from the source control system
`boolean` `requiresEditMode()`
`java.lang.String` `sanitizeTagName​(java.lang.String tag)` Given a tag name, make it suitable for this SCM provider.
`protected StatusScmResult` `status​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`StatusScmResult` `status​(ScmRepository repository, ScmFileSet fileSet)` Returns the status of the files in the source control system.
`protected TagScmResult` `tag​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`TagScmResult` `tag​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tagName)` Tag (or label in some systems) will tag the source file with a certain tag
`TagScmResult` `tag​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tagName, java.lang.String message)` Tag (or label in some systems) will tag the source file with a certain tag
`TagScmResult` `tag​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tagName, ScmTagParameters scmTagParameters)` Tag (or label in some systems) will tag the source file with a certain tag
`protected UnEditScmResult` `unedit​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`UnEditScmResult` `unedit​(ScmRepository repository, ScmFileSet fileSet)` Make a file no longer editable.
`UntagScmResult` `untag​(ScmRepository repository, ScmFileSet fileSet, CommandParameters parameters)` Deletes a tag.
`protected UpdateScmResult` `update​(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)`
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet)` Updates the copy on the local machine with the changes in the repository
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, boolean runChangelog)` Updates the copy on the local machine with the changes in the repository
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag)` Deprecated.
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag, boolean runChangelog)` Deprecated.
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag, java.lang.String datePattern)` Deprecated.
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag, java.util.Date lastUpdate)` Deprecated.
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, java.lang.String tag, java.util.Date lastUpdate, java.lang.String datePattern)` Deprecated.
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion)` Updates the copy on the local machine with the changes in the repository
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, boolean runChangelog)` Updates the copy on the local machine with the changes in the repository
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, java.lang.String datePattern)` Updates the copy on the local machine with the changes in the repository
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, java.util.Date lastUpdate)` Updates the copy on the local machine with the changes in the repository
`UpdateScmResult` `update​(ScmRepository repository, ScmFileSet fileSet, ScmVersion scmVersion, java.util.Date lastUpdate, java.lang.String datePattern)` Updates the copy on the local machine with the changes in the repository
`java.util.List<java.lang.String>` `validateScmUrl​(java.lang.String scmSpecificUrl, char delimiter)` Validate the scm url.
`boolean` `validateTagName​(java.lang.String tag)` Check if this tag is valid for this SCM provider.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.maven.scm.provider.ScmProvider

`getScmType, makeProviderScmRepository`

### Constructor Detail

#### AbstractScmProvider

    public AbstractScmProvider()

### Method Detail

#### getScmSpecificFilename

    public java.lang.String getScmSpecificFilename()

Returns the scm reserved file name where the SCM stores information like 'CVS', '.svn'.

Specified by:
  `getScmSpecificFilename` in interface `ScmProvider`
Returns:
  the scm reserved file name

#### sanitizeTagName

    public java.lang.String sanitizeTagName​(java.lang.String tag)

Given a tag name, make it suitable for this SCM provider. For example, CVS converts "." into "_"

Specified by:
  `sanitizeTagName` in interface `ScmProvider`
Parameters:
  `tag` - input tag name
Returns:
  sanitized tag name

#### validateTagName

    public boolean validateTagName​(java.lang.String tag)

Check if this tag is valid for this SCM provider.

Specified by:
  `validateTagName` in interface `ScmProvider`
Parameters:
  `tag` - tag name to check
Returns:
  true if tag is valid

#### validateScmUrl

    public java.util.List<java.lang.String> validateScmUrl​(java.lang.String scmSpecificUrl,
                                                           char delimiter)

Validate the scm url.

Specified by:
  `validateScmUrl` in interface `ScmProvider`
Parameters:
  `scmSpecificUrl` - The SCM url
  `delimiter` - The delimiter used in the SCM url
Returns:
  Returns a list of messages if the validation failed

#### requiresEditMode

    public boolean requiresEditMode()

Specified by:
  `requiresEditMode` in interface `ScmProvider`

#### add

    public AddScmResult add​(ScmRepository repository,
                            ScmFileSet fileSet)
                     throws ScmException

Adds the given files to the source control system

Specified by:
  `add` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files to be added
Returns:
  an `AddScmResult` that contains the files that have been added
Throws:
  `ScmException` - if any

#### add

    public AddScmResult add​(ScmRepository repository,
                            ScmFileSet fileSet,
                            java.lang.String message)
                     throws ScmException

Adds the given files to the source control system

Specified by:
  `add` in interface `ScmProvider`
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 files that have been added
Throws:
  `ScmException` - if any

#### add

    public AddScmResult add​(ScmRepository repository,
                            ScmFileSet fileSet,
                            CommandParameters parameters)
                     throws ScmException

Description copied from interface: `ScmProvider`
Adds the given files to the source control system

Specified by:
  `add` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files to be added
  `parameters` - `CommandParameters`
Returns:
  an `AddScmResult` that contains the files that have been added
Throws:
  `ScmException` - if any

#### add

    public AddScmResult add​(ScmProviderRepository repository,
                            ScmFileSet fileSet,
                            CommandParameters parameters)
                     throws ScmException

Throws:
  `ScmException`

#### branch

    public BranchScmResult branch​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String branchName)
                           throws ScmException

Branch (or label in some systems) will create a branch of the source file with a certain branch name

Specified by:
  `branch` in interface `ScmProvider`
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:
Throws:
  `ScmException` - if any

#### branch

    public BranchScmResult branch​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String branchName,
                                  java.lang.String message)
                           throws ScmException

Branch (or label in some systems) will create a branch of the source file with a certain branch name

Specified by:
  `branch` in interface `ScmProvider`
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:
Throws:
  `ScmException` - if any

#### branch

    public BranchScmResult branch​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String branchName,
                                  ScmBranchParameters scmBranchParameters)
                           throws ScmException

Description copied from interface: `ScmProvider`
Branch (or label in some systems) will create a branch of the source file with a certain branch name

Specified by:
  `branch` in interface `ScmProvider`
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:
Throws:
  `ScmException` - if any

#### branch

    protected BranchScmResult branch​(ScmProviderRepository repository,
                                     ScmFileSet fileSet,
                                     CommandParameters parameters)
                              throws ScmException

Throws:
  `ScmException`

#### changeLog

    public ChangeLogScmResult changeLog​(ScmRepository repository,
                                        ScmFileSet fileSet,
                                        java.util.Date startDate,
                                        java.util.Date endDate,
                                        int numDays,
                                        java.lang.String branch)
                                 throws ScmException

Deprecated.
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

Specified by:
  `changeLog` in interface `ScmProvider`
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 name
Returns:
  The SCM result of the changelog command
Throws:
  `ScmException` - if any

#### changeLog

    public ChangeLogScmResult changeLog​(ScmRepository repository,
                                        ScmFileSet fileSet,
                                        java.util.Date startDate,
                                        java.util.Date endDate,
                                        int numDays,
                                        java.lang.String branch,
                                        java.lang.String datePattern)
                                 throws ScmException

Deprecated.
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

Specified by:
  `changeLog` in interface `ScmProvider`
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 name
  `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

    public ChangeLogScmResult changeLog​(ScmRepository repository,
                                        ScmFileSet fileSet,
                                        java.util.Date startDate,
                                        java.util.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

Specified by:
  `changeLog` in interface `ScmProvider`
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

    public ChangeLogScmResult changeLog​(ScmRepository repository,
                                        ScmFileSet fileSet,
                                        java.util.Date startDate,
                                        java.util.Date endDate,
                                        int numDays,
                                        ScmBranch branch,
                                        java.lang.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

Specified by:
  `changeLog` in interface `ScmProvider`
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

    public ChangeLogScmResult changeLog​(ChangeLogScmRequest request)
                                 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

Specified by:
  `changeLog` in interface `ScmProvider`
Parameters:
  `request` - request wrapping detailed parameters for the changelog command
Returns:
  The SCM result of the changelog command
Throws:
  `ScmException` - if any

#### changeLog

    public ChangeLogScmResult changeLog​(ScmRepository repository,
                                        ScmFileSet fileSet,
                                        java.lang.String startTag,
                                        java.lang.String endTag)
                                 throws ScmException

Deprecated.
Returns the changes that have happend in the source control system between two tags. This can be adding, removing, updating, ... of files

Specified by:
  `changeLog` in interface `ScmProvider`
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.
  `startTag` - the start tag
  `endTag` - the end tag
Returns:
  The SCM result of the changelog command
Throws:
  `ScmException` - if any

#### changeLog

    public ChangeLogScmResult changeLog​(ScmRepository repository,
                                        ScmFileSet fileSet,
                                        java.lang.String startTag,
                                        java.lang.String endTag,
                                        java.lang.String datePattern)
                                 throws ScmException

Deprecated.
Returns the changes that have happend in the source control system between two tags. This can be adding, removing, updating, ... of files

Specified by:
  `changeLog` in interface `ScmProvider`
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.
  `startTag` - the start tag
  `endTag` - the end tag
  `datePattern` - the date pattern use in changelog output returned by scm tool
Returns:
Throws:
  `ScmException` - if any

#### changeLog

    public 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

Specified by:
  `changeLog` in interface `ScmProvider`
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

    public ChangeLogScmResult changeLog​(ScmRepository repository,
                                        ScmFileSet fileSet,
                                        ScmVersion startVersion,
                                        ScmVersion endVersion,
                                        java.lang.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

Specified by:
  `changeLog` in interface `ScmProvider`
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 revision
  `endVersion` - the end revision
  `datePattern` - the date pattern use in changelog output returned by scm tool
Returns:
Throws:
  `ScmException` - if any

#### changelog

    protected ChangeLogScmResult changelog​(ScmProviderRepository repository,
                                           ScmFileSet fileSet,
                                           CommandParameters parameters)
                                    throws ScmException

Throws:
  `ScmException`

#### checkIn

    public CheckInScmResult checkIn​(ScmRepository repository,
                                    ScmFileSet fileSet,
                                    java.lang.String tag,
                                    java.lang.String message)
                             throws ScmException

Deprecated.
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.

Specified by:
  `checkIn` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files to check in (sometimes called commit)
  `tag` - tag or revision
  `message` - a string that is a comment on the changes that where done
Returns:
Throws:
  `ScmException` - if any

#### checkIn

    public CheckInScmResult checkIn​(ScmRepository repository,
                                    ScmFileSet fileSet,
                                    java.lang.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.

Specified by:
  `checkIn` in interface `ScmProvider`
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:
Throws:
  `ScmException` - if any

#### checkIn

    public CheckInScmResult checkIn​(ScmRepository repository,
                                    ScmFileSet fileSet,
                                    ScmVersion scmVersion,
                                    java.lang.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.

Specified by:
  `checkIn` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files to check in (sometimes called commit)
  `scmVersion` - branch/tag/revision
  `message` - a string that is a comment on the changes that where done
Returns:
Throws:
  `ScmException` - if any

#### checkin

    protected CheckInScmResult checkin​(ScmProviderRepository repository,
                                       ScmFileSet fileSet,
                                       CommandParameters parameters)
                                throws ScmException

Throws:
  `ScmException`

#### checkOut

    public CheckOutScmResult checkOut​(ScmRepository repository,
                                      ScmFileSet fileSet,
                                      java.lang.String tag)
                               throws ScmException

Deprecated.
Create a copy of the repository on your local machine

Specified by:
  `checkOut` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `tag` - get the version defined by the tag
Returns:
Throws:
  `ScmException` - if any

#### checkOut

    public CheckOutScmResult checkOut​(ScmRepository repository,
                                      ScmFileSet fileSet,
                                      java.lang.String tag,
                                      boolean recursive)
                               throws ScmException

Deprecated.
Create a copy of the repository on your local machine.

Specified by:
  `checkOut` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `tag` - tag or revision
  `recursive` - whether to check out recursively
Returns:
Throws:
  `ScmException` - if any

#### checkOut

    public CheckOutScmResult checkOut​(ScmRepository repository,
                                      ScmFileSet fileSet)
                               throws ScmException

Create a copy of the repository on your local machine

Specified by:
  `checkOut` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
Returns:
Throws:
  `ScmException` - if any

#### checkOut

    public CheckOutScmResult checkOut​(ScmRepository repository,
                                      ScmFileSet fileSet,
                                      ScmVersion scmVersion)
                               throws ScmException

Create a copy of the repository on your local machine

Specified by:
  `checkOut` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `scmVersion` - get the version defined by the revision, branch or tag
Returns:
Throws:
  `ScmException` - if any

#### checkOut

    public CheckOutScmResult checkOut​(ScmRepository repository,
                                      ScmFileSet fileSet,
                                      boolean recursive)
                               throws ScmException

Create a copy of the repository on your local machine.

Specified by:
  `checkOut` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `recursive` - whether to check out recursively
Returns:
Throws:
  `ScmException` - if any

#### checkOut

    public CheckOutScmResult checkOut​(ScmRepository repository,
                                      ScmFileSet fileSet,
                                      ScmVersion scmVersion,
                                      boolean recursive)
                               throws ScmException

Create a copy of the repository on your local machine.

Specified by:
  `checkOut` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `scmVersion` - get the version defined by the revision, branch or tag
  `recursive` - whether to check out recursively
Returns:
Throws:
  `ScmException` - if any

#### checkOut

    public CheckOutScmResult checkOut​(ScmRepository repository,
                                      ScmFileSet fileSet,
                                      ScmVersion scmVersion,
                                      CommandParameters commandParameters)
                               throws ScmException

Description copied from interface: `ScmProvider`
Create a copy of the repository on your local machine.

Specified by:
  `checkOut` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `scmVersion` - get the version defined by the revision, branch or tag
  `commandParameters` - parameters
Returns:
Throws:
  `ScmException` - if any

#### checkout

    protected CheckOutScmResult checkout​(ScmProviderRepository repository,
                                         ScmFileSet fileSet,
                                         CommandParameters parameters)
                                  throws ScmException

Throws:
  `ScmException`

#### diff

    public DiffScmResult diff​(ScmRepository repository,
                              ScmFileSet fileSet,
                              java.lang.String startRevision,
                              java.lang.String endRevision)
                       throws ScmException

Deprecated.
Create a diff between two branch/tag/revision.

Specified by:
  `diff` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `startRevision` - the start revision
  `endRevision` - the end revision
Returns:
Throws:
  `ScmException` - if any

#### diff

    public DiffScmResult diff​(ScmRepository repository,
                              ScmFileSet fileSet,
                              ScmVersion startVersion,
                              ScmVersion endVersion)
                       throws ScmException

Create a diff between two branch/tag/revision.

Specified by:
  `diff` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `startVersion` - the start branch/tag/revision
  `endVersion` - the end branch/tag/revision
Returns:
Throws:
  `ScmException` - if any

#### diff

    protected DiffScmResult diff​(ScmProviderRepository repository,
                                 ScmFileSet fileSet,
                                 CommandParameters parameters)
                          throws ScmException

Throws:
  `ScmException`

#### edit

    public 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 not read-only anymore before you can edit them. This can also mean that no other user in the system can make the file not read-only anymore.

Specified by:
  `edit` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files to make editable
Returns:
Throws:
  `ScmException` - if any

#### edit

    protected EditScmResult edit​(ScmProviderRepository repository,
                                 ScmFileSet fileSet,
                                 CommandParameters parameters)
                          throws ScmException

Throws:
  `ScmException`

#### export

    public ExportScmResult export​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String tag)
                           throws ScmException

Deprecated.
Create an exported copy of the repository on your local machine

Specified by:
  `export` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `tag` - get the version defined by the tag
Returns:
Throws:
  `ScmException` - if any

#### export

    public ExportScmResult export​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String tag,
                                  java.lang.String outputDirectory)
                           throws ScmException

Deprecated.
Create an exported copy of the repository on your local machine

Specified by:
  `export` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `tag` - get the version defined by the tag
  `outputDirectory` - the directory where the export will be stored
Returns:
Throws:
  `ScmException` - if any

#### export

    public ExportScmResult export​(ScmRepository repository,
                                  ScmFileSet fileSet)
                           throws ScmException

Create an exported copy of the repository on your local machine

Specified by:
  `export` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
Returns:
Throws:
  `ScmException` - if any

#### export

    public ExportScmResult export​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  ScmVersion scmVersion)
                           throws ScmException

Create an exported copy of the repository on your local machine

Specified by:
  `export` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `scmVersion` - get the version defined by the branch/tag/revision
Returns:
Throws:
  `ScmException` - if any

#### export

    public ExportScmResult export​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  ScmVersion scmVersion,
                                  java.lang.String outputDirectory)
                           throws ScmException

Create an exported copy of the repository on your local machine

Specified by:
  `export` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `scmVersion` - get the version defined by the branch/tag/revision
  `outputDirectory` - the directory where the export will be stored
Returns:
Throws:
  `ScmException` - if any

#### export

    protected ExportScmResult export​(ScmProviderRepository repository,
                                     ScmFileSet fileSet,
                                     CommandParameters parameters)
                              throws ScmException

Throws:
  `ScmException`

#### list

    public ListScmResult list​(ScmRepository repository,
                              ScmFileSet fileSet,
                              boolean recursive,
                              java.lang.String tag)
                       throws ScmException

List each element (files and directories) of fileSet as they exist in the repository.

Specified by:
  `list` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files to list
  `recursive` - descend recursively
  `tag` - use the version defined by the tag
Returns:
  the list of files in the repository
Throws:
  `ScmException`

#### list

    public ListScmResult list​(ScmRepository repository,
                              ScmFileSet fileSet,
                              boolean recursive,
                              ScmVersion scmVersion)
                       throws ScmException

List each element (files and directories) of fileSet as they exist in the repository.

Specified by:
  `list` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files to list
  `recursive` - descend recursively
  `scmVersion` - use the version defined by the branch/tag/revision
Returns:
  the list of files in the repository
Throws:
  `ScmException` - if any

#### list

    protected ListScmResult list​(ScmProviderRepository repository,
                                 ScmFileSet fileSet,
                                 CommandParameters parameters)
                          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
  `parameters` -
Returns:
  The list of files in the repository
Throws:
  `NoSuchCommandScmException` - unless overriden by subclass
  `ScmException` - if any

#### mkdir

    public MkdirScmResult mkdir​(ScmRepository repository,
                                ScmFileSet fileSet,
                                java.lang.String message,
                                boolean createInLocal)
                         throws ScmException

Create directory/directories in the repository.

Specified by:
  `mkdir` in interface `ScmProvider`
Returns:
Throws:
  `ScmException`

#### mkdir

    protected MkdirScmResult mkdir​(ScmProviderRepository repository,
                                   ScmFileSet fileSet,
                                   CommandParameters parameters)
                            throws ScmException

Create directory/directories in the repository.

Parameters:
  `repository` -
  `fileSet` -
  `parameters` -
Returns:
Throws:
  `ScmException`

#### login

    protected LoginScmResult login​(ScmProviderRepository repository,
                                   ScmFileSet fileSet,
                                   CommandParameters parameters)
                            throws ScmException

Throws:
  `ScmException`

#### remove

    public RemoveScmResult remove​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String message)
                           throws ScmException

Removes the given files from the source control system

Specified by:
  `remove` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files to be removed
Returns:
Throws:
  `ScmException` - if any

#### remove

    protected RemoveScmResult remove​(ScmProviderRepository repository,
                                     ScmFileSet fileSet,
                                     CommandParameters parameters)
                              throws ScmException

Throws:
  `ScmException`

#### status

    public 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.

Specified by:
  `status` in interface `ScmProvider`
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:
Throws:
  `ScmException` - if any

#### status

    protected StatusScmResult status​(ScmProviderRepository repository,
                                     ScmFileSet fileSet,
                                     CommandParameters parameters)
                              throws ScmException

Throws:
  `ScmException`

#### tag

    public TagScmResult tag​(ScmRepository repository,
                            ScmFileSet fileSet,
                            java.lang.String tagName)
                     throws ScmException

Tag (or label in some systems) will tag the source file with a certain tag

Specified by:
  `tag` in interface `ScmProvider`
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:
Throws:
  `ScmException` - if any

#### tag

    public TagScmResult tag​(ScmRepository repository,
                            ScmFileSet fileSet,
                            java.lang.String tagName,
                            java.lang.String message)
                     throws ScmException

Tag (or label in some systems) will tag the source file with a certain tag

Specified by:
  `tag` in interface `ScmProvider`
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:
Throws:
  `ScmException` - if any

#### tag

    public TagScmResult tag​(ScmRepository repository,
                            ScmFileSet fileSet,
                            java.lang.String tagName,
                            ScmTagParameters scmTagParameters)
                     throws ScmException

Tag (or label in some systems) will tag the source file with a certain tag

Specified by:
  `tag` in interface `ScmProvider`
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
  `scmTagParameters` - bean to pass some paramters for tagging `ScmTagParameters`
Returns:
Throws:
  `ScmException` - if any

#### tag

    protected TagScmResult tag​(ScmProviderRepository repository,
                               ScmFileSet fileSet,
                               CommandParameters parameters)
                        throws ScmException

Throws:
  `ScmException`

#### unedit

    public UnEditScmResult unedit​(ScmRepository repository,
                                  ScmFileSet fileSet)
                           throws ScmException

Make a file no longer editable. This is the conterpart of `ScmProvider.edit( org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet)`. It makes the file read-only again.

Specified by:
  `unedit` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - the files to make uneditable
Returns:
Throws:
  `ScmException` - if any

#### unedit

    protected UnEditScmResult unedit​(ScmProviderRepository repository,
                                     ScmFileSet fileSet,
                                     CommandParameters parameters)
                              throws ScmException

Throws:
  `ScmException`

#### untag

    public UntagScmResult untag​(ScmRepository repository,
                                ScmFileSet fileSet,
                                CommandParameters parameters)
                         throws ScmException

Deletes a tag.

Specified by:
  `untag` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - a fileset with the relevant working directory as basedir
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String tag)
                           throws ScmException

Deprecated.
Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `tag` - use the version defined by the tag
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String tag,
                                  boolean runChangelog)
                           throws ScmException

Deprecated.
Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `tag` - use the version defined by the tag
  `runChangelog` - Run the changelog command after the update
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet)
                           throws ScmException

Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  ScmVersion scmVersion)
                           throws ScmException

Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `scmVersion` - use the version defined by the branch/tag/revision
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  boolean runChangelog)
                           throws ScmException

Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `runChangelog` - Run the changelog command after the update
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  ScmVersion scmVersion,
                                  boolean runChangelog)
                           throws ScmException

Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `scmVersion` - use the version defined by the branch/tag/revision
  `runChangelog` - Run the changelog command after the update
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String tag,
                                  java.lang.String datePattern)
                           throws ScmException

Deprecated.
Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `tag` - use the version defined by the tag
  `datePattern` - the date pattern use in changelog output returned by scm tool
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  ScmVersion scmVersion,
                                  java.lang.String datePattern)
                           throws ScmException

Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `scmVersion` - use the version defined by the branch/tag/revision
  `datePattern` - the date pattern use in changelog output returned by scm tool
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String tag,
                                  java.util.Date lastUpdate)
                           throws ScmException

Deprecated.
Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `tag` - use the version defined by the tag
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  ScmVersion scmVersion,
                                  java.util.Date lastUpdate)
                           throws ScmException

Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `scmVersion` - use the version defined by the branch/tag/revision
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  java.lang.String tag,
                                  java.util.Date lastUpdate,
                                  java.lang.String datePattern)
                           throws ScmException

Deprecated.
Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `tag` - use the version defined by the tag
  `lastUpdate` - Date of last update
  `datePattern` - the date pattern use in changelog output returned by scm tool
Returns:
Throws:
  `ScmException` - if any

#### update

    public UpdateScmResult update​(ScmRepository repository,
                                  ScmFileSet fileSet,
                                  ScmVersion scmVersion,
                                  java.util.Date lastUpdate,
                                  java.lang.String datePattern)
                           throws ScmException

Updates the copy on the local machine with the changes in the repository

Specified by:
  `update` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `scmVersion` - 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:
Throws:
  `ScmException` - if any

#### update

    protected UpdateScmResult update​(ScmProviderRepository repository,
                                     ScmFileSet fileSet,
                                     CommandParameters parameters)
                              throws ScmException

Throws:
  `ScmException`

#### blame

    public BlameScmResult blame​(ScmRepository repository,
                                ScmFileSet fileSet,
                                java.lang.String filename)
                         throws ScmException

Returns the blame of specified file

Specified by:
  `blame` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `filename` - file
Returns:
  blame for specified file
Throws:
  `ScmException`

#### blame

    protected BlameScmResult blame​(ScmProviderRepository repository,
                                   ScmFileSet fileSet,
                                   CommandParameters parameters)
                            throws ScmException

Throws:
  `ScmException`

#### blame

    public BlameScmResult blame​(BlameScmRequest blameScmRequest)
                         throws ScmException

Specified by:
  `blame` in interface `ScmProvider`
Returns:
  blame for the file specified in the request
Throws:
  `ScmException`

#### info

    public InfoScmResult info​(ScmProviderRepository repository,
                              ScmFileSet fileSet,
                              CommandParameters parameters)
                       throws ScmException

Specified by:
  `info` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - location of your local copy
  `parameters` - some parameters (not use currently but for future use)
Returns:
  if the scm implementation doesn't support "info" result will `null`
Throws:
  `ScmException`

#### remoteInfo

    public RemoteInfoScmResult remoteInfo​(ScmProviderRepository repository,
                                          ScmFileSet fileSet,
                                          CommandParameters parameters)
                                   throws ScmException

Specified by:
  `remoteInfo` in interface `ScmProvider`
Parameters:
  `repository` - the source control system
  `fileSet` - not use currently but for future use
  `parameters` - some parameters (not use currently but for future use)
Returns:
  if the scm implementation doesn't support "info" result will `null`
Throws:
  `ScmException`

#### addListener

    public void addListener​(ScmLogger logger)

Add a logger listener.

Specified by:
  `addListener` in interface `ScmProvider`
Parameters:
  `logger` - The logger

#### getLogger

    public ScmLogger getLogger()

#### makeProviderScmRepository

    public ScmProviderRepository makeProviderScmRepository​(java.io.File path)
                                                    throws ScmRepositoryException,
                                                           UnknownRepositoryStructure

Specified by:
  `makeProviderScmRepository` in interface `ScmProvider`
Throws:
  `ScmRepositoryException`
  `UnknownRepositoryStructure`