org.apache.maven.scm.provider

## Interface ScmProvider

All Known Implementing Classes:
  AbstractCvsScmProvider, AbstractGitScmProvider, AbstractScmProvider, AbstractSvnScmProvider, AccuRevScmProvider, BazaarScmProvider, ClearCaseScmProvider, CvsExeScmProvider, CvsJavaScmProvider, GitExeScmProvider, HgScmProvider, LocalScmProvider, PerforceScmProvider, ScmProviderStub, StarteamScmProvider, SvnExeScmProvider, SynergyScmProvider, TfsScmProvider

    public interface ScmProvider

Author:
  Emmanuel Venisse

### Field Summary

Fields
`static String` `ROLE`

### Method Summary

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

### Field Detail

#### ROLE

    static final String ROLE

### Method Detail

#### getScmType

    String getScmType()

#### addListener

    void addListener(ScmLogger logger)

Add a logger listener.

Parameters:
  `logger` - The logger

#### requiresEditMode

    boolean requiresEditMode()

#### makeProviderScmRepository

    ScmProviderRepository makeProviderScmRepository(String scmSpecificUrl,
                                                    char delimiter)
                                             throws ScmRepositoryException

Throws:
  `ScmRepositoryException`

#### makeProviderScmRepository

    ScmProviderRepository makeProviderScmRepository(File path)
                                             throws ScmRepositoryException,
                                                    UnknownRepositoryStructure

Throws:
  `ScmRepositoryException`
  `UnknownRepositoryStructure`

#### validateScmUrl

    List<String> validateScmUrl(String scmSpecificUrl,
                                char delimiter)

Validate the scm url.

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

#### getScmSpecificFilename

    String getScmSpecificFilename()

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

Returns:
  the scm reserved file name

#### validateTagName

    boolean validateTagName(String tag)

Check if this tag is valid for this SCM provider.

Parameters:
  `tag` - tag name to check
Returns:
  true if tag is valid

#### sanitizeTagName

    String sanitizeTagName(String tag)

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

Parameters:
  `tag` - input tag name
Returns:
  sanitized tag name

#### 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 files 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 files that have been added
Throws:
  `ScmException` - if any

#### add

    AddScmResult add(ScmRepository repository,
                     ScmFileSet fileSet,
                     CommandParameters commandParameters)
              throws ScmException

Adds the given files to the source control system

Parameters:
  `repository` - the source control system
  `fileSet` - the files to be added
  `commandParameters` - `CommandParameters`
Returns:
  an `AddScmResult` that contains the files that have been added
Throws:
  `ScmException` - if any

#### branch

    BranchScmResult branch(ScmRepository repository,
                           ScmFileSet fileSet,
                           String branchName)
                    throws ScmException

Deprecated. use `#branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)`
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:
Throws:
  `ScmException` - if any

#### branch

    BranchScmResult branch(ScmRepository repository,
                           ScmFileSet fileSet,
                           String branchName,
                           String message)
                    throws ScmException

Deprecated. use `#branch(ScmRepository, ScmFileSet, String, String, ScmBranchParameters)`
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:
Throws:
  `ScmException` - if any

#### branch

    BranchScmResult branch(ScmRepository repository,
                           ScmFileSet fileSet,
                           String branchName,
                           ScmBranchParameters scmBranchParameters)
                    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:
Throws:
  `ScmException` - if any
Since:
  1.3

#### changeLog

    ChangeLogScmResult changeLog(ScmRepository repository,
                                 ScmFileSet fileSet,
                                 Date startDate,
                                 Date endDate,
                                 int numDays,
                                 String branch)
                          throws ScmException

Deprecated. you must use `changeLog(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, java.util.Date, java.util.Date, int, org.apache.maven.scm.ScmBranch)`
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 name
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)
                                      throws ScmException

Deprecated. use `changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)` instead
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,
                                             String branch,
                                             String datePattern)
                                      throws ScmException

Deprecated. use `changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)` instead
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 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

    ChangeLogScmResult changeLog(ScmRepository repository,
                                 ScmFileSet fileSet,
                                 Date startDate,
                                 Date endDate,
                                 int numDays,
                                 ScmBranch branch,
                                 String datePattern)
                          throws ScmException

Deprecated. use `changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)` instead
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,
                                             String startTag,
                                             String endTag)
                                      throws ScmException

Deprecated. use `changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)` instead
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.
  `startTag` - the start tag
  `endTag` - the end tag
Returns:
  The SCM result of the changelog command
Throws:
  `ScmException` - if any

#### changeLog

    @Deprecated
    ChangeLogScmResult changeLog(ScmRepository repository,
                                             ScmFileSet fileSet,
                                             ScmVersion startVersion,
                                             ScmVersion endVersion)
                                      throws ScmException

Deprecated. use `changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)` instead
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,
                                             String startTag,
                                             String endTag,
                                             String datePattern)
                                      throws ScmException

Deprecated. use `changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)` instead
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.
  `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

    @Deprecated
    ChangeLogScmResult changeLog(ScmRepository repository,
                                             ScmFileSet fileSet,
                                             ScmVersion startRevision,
                                             ScmVersion endRevision,
                                             String datePattern)
                                      throws ScmException

Deprecated. use `changeLog(org.apache.maven.scm.command.changelog.ChangeLogScmRequest)` instead
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:
Throws:
  `ScmException` - if any

#### checkIn

    CheckInScmResult checkIn(ScmRepository repository,
                             ScmFileSet fileSet,
                             String tag,
                             String message)
                      throws ScmException

Deprecated. you must use `checkIn(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)`
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)
  `tag` - tag or revision
  `message` - a string that is a comment on the changes that where done
Returns:
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:
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:
Throws:
  `ScmException` - if any

#### checkOut

    CheckOutScmResult checkOut(ScmRepository repository,
                               ScmFileSet fileSet,
                               String tag)
                        throws ScmException

Deprecated. you must use `checkOut(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)`
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
  `tag` - get the version defined by the tag
Returns:
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:
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:
Throws:
  `ScmException` - if any

#### checkOut

    CheckOutScmResult checkOut(ScmRepository scmRepository,
                               ScmFileSet scmFileSet,
                               String tag,
                               boolean recursive)
                        throws ScmException

Deprecated. you must use `checkOut(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, boolean)`
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
  `tag` - tag or revision
  `recursive` - whether to check out recursively
Returns:
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:
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:
Throws:
  `ScmException` - if any

#### diff

    DiffScmResult diff(ScmRepository scmRepository,
                       ScmFileSet scmFileSet,
                       String startRevision,
                       String endRevision)
                throws ScmException

Deprecated. you must use `diff(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, org.apache.maven.scm.ScmVersion)`
Create a diff between two branch/tag/revision.

Parameters:
  `scmRepository` - the source control system
  `scmFileSet` - the files are copied to the `ScmFileSet.getBasedir()` location
  `startRevision` - the start revision
  `endRevision` - the end revision
Returns:
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:
Throws:
  `ScmException` - if any

#### export

    ExportScmResult export(ScmRepository repository,
                           ScmFileSet fileSet,
                           String tag)
                    throws ScmException

Deprecated. you must use `export(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)`
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
  `tag` - get the version defined by the tag
Returns:
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:
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:
Throws:
  `ScmException` - if any

#### export

    ExportScmResult export(ScmRepository repository,
                           ScmFileSet fileSet,
                           String tag,
                           String outputDirectory)
                    throws ScmException

Deprecated. you must use `export(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)`
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
  `tag` - get the version defined by the tag
  `outputDirectory` - the directory where the export will be stored
Returns:
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:
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` -
Returns:
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:
Throws:
  `ScmException` - if any

#### tag

    TagScmResult tag(ScmRepository repository,
                     ScmFileSet fileSet,
                     String tagName)
              throws ScmException

Deprecated. use `tag(ScmRepository, ScmFileSet, String, ScmTagParameters)`
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:
Throws:
  `ScmException` - if any

#### tag

    TagScmResult tag(ScmRepository repository,
                     ScmFileSet fileSet,
                     String tagName,
                     String message)
              throws ScmException

Deprecated. use `tag(ScmRepository, ScmFileSet, String, ScmTagParameters)`
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:
Throws:
  `ScmException` - if any

#### tag

    TagScmResult tag(ScmRepository repository,
                     ScmFileSet fileSet,
                     String tagName,
                     ScmTagParameters scmTagParameters)
              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
  `scmTagParameters` - bean to pass some paramters for tagging `ScmTagParameters`
Returns:
Throws:
  `ScmException` - if any
Since:
  1.2

#### 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:
Throws:
  `ScmException` - if any

#### update

    UpdateScmResult update(ScmRepository repository,
                           ScmFileSet fileSet,
                           String tag)
                    throws ScmException

Deprecated. you must use `update(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion)`
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
  `tag` - use the version defined by the tag
Returns:
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:
Throws:
  `ScmException` - if any

#### update

    UpdateScmResult update(ScmRepository repository,
                           ScmFileSet fileSet,
                           String tag,
                           boolean runChangelog)
                    throws ScmException

Deprecated. you must use `update(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, boolean)`
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
  `tag` - use the version defined by the tag
  `runChangelog` - Run the changelog command after the update
Returns:
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:
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:
Throws:
  `ScmException` - if any

#### update

    UpdateScmResult update(ScmRepository repository,
                           ScmFileSet fileSet,
                           String tag,
                           String datePattern)
                    throws ScmException

Deprecated. you must use `update(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, String)`
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
  `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

    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:
Throws:
  `ScmException` - if any

#### update

    UpdateScmResult update(ScmRepository repository,
                           ScmFileSet fileSet,
                           String tag,
                           Date lastUpdate)
                    throws ScmException

Deprecated. you must use `update(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date)`
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
  `tag` - use the version defined by the tag
  `lastUpdate` -
Returns:
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` -
Returns:
Throws:
  `ScmException` - if any

#### update

    UpdateScmResult update(ScmRepository repository,
                           ScmFileSet fileSet,
                           String tag,
                           Date lastUpdate,
                           String datePattern)
                    throws ScmException

Deprecated. you must use `update(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, org.apache.maven.scm.ScmVersion, java.util.Date, String)`
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
  `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

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

Parameters:
  `repository` - the source control system
  `fileSet` - the files to make editable
Returns:
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:
Throws:
  `ScmException` - if any

#### list

    ListScmResult list(ScmRepository repository,
                       ScmFileSet fileSet,
                       boolean recursive,
                       String tag)
                throws ScmException

Deprecated. you must use `list(org.apache.maven.scm.repository.ScmRepository, org.apache.maven.scm.ScmFileSet, boolean, org.apache.maven.scm.ScmVersion)`
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
  `tag` - use the version defined by the tag
Returns:
  the list of files in the repository
Throws:
  `ScmException`

#### 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

#### blame

    BlameScmResult blame(ScmRepository repository,
                         ScmFileSet fileSet,
                         String filename)
                  throws ScmException

Deprecated. use blame with `BlameScmRequest` parameter
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`
Since:
  1.4

#### blame

    BlameScmResult blame(BlameScmRequest blameScmRequest)
                  throws ScmException

Parameters:
  `blameScmRequest` -
Returns:
  blame for the file specified in the request
Throws:
  `ScmException`
Since:
  1.8

#### mkdir

    MkdirScmResult mkdir(ScmRepository repository,
                         ScmFileSet fileSet,
                         String message,
                         boolean createInLocal)
                  throws ScmException

Create directory/directories in the repository.

Parameters:
  `repository` -
  `fileSet` -
  `createInLocal` -
  `message` -
Returns:
Throws:
  `ScmException`

#### info

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

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`
Since:
  1.5

#### remoteInfo

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

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`
Since:
  1.6