| com.atlassian.bitbucket.scm.ScmCommandFactory |
Creates commands which provide basic SCM functionality such as creating repositories, retrieving
commits and viewing diffs. Each method accepts a set of CommandParameters which are used to control the
command's behaviour and output.
In general, commands fall into two categories:
PageRequest describing the page of output that should be returned and return
an object graph when the command is executedVoid (usually null) when the
command is executedMost of the commands on this factory are required, and any SCM used with the system must support them. However, the following commands are optional:
Thefeatures for the optional commands should be checked with the
ScmService prior to use.
Warning: All of the optional commands on this factory will be removed in 5.0. Callers should
update their code to use ScmExtendedCommandFactory instead. From 5.0, only required commands
will be provided by this factory.
Note: The repository against which created commands will operate was specified when the factory
was retrieved from the ScmService, and cannot be changed.
Plugin developers: This is probably not the interface you want to use. The API provides services whose functionality is backed by the SCM. Using those services automatically chooses the correct SCM based on the repository, and provides a more stable, compatible API. In general, the functionality of this command factory is exposed by:
The documentation for each method on this interface includes a link to the API service method or methods which expose it.| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
This method is deprecated.
in 4.6 to note that the return type will change to
Command<Page<Blame>> in 5.0.
| |||||||||||
Retrieves a page of
changesets given a set of commit IDs, where each changeset includes the first page of changes
between a requested commit and its first parent. | |||||||||||
Retrieves
details for the specified commit. | |||||||||||
Streams commits which match the provided
parameters to the provided callback. | |||||||||||
Retrieves a
page of commits matching the specified parameters. | |||||||||||
This method is deprecated.
in 4.6 for removal without replacement in 5.0. Creating repositories should be done
using the
RepositoryService, which creates the repository in
the database as well as in the SCM.
| |||||||||||
Resolves the default branch for the specified repository.
| |||||||||||
Streams a diff between two
commits. | |||||||||||
Streams the
tree nodes (files, subdirectories and submodules) in the specified
directory. | |||||||||||
Streams the contents of the
specified file. | |||||||||||
This method is deprecated.
in 4.6 for removal without replacement in 5.0. Forking repositories should be done
using the
RepositoryService, which creates the forked repository
in the database as well as in the SCM.
| |||||||||||
Streams
refs for all of the heads in the repository. | |||||||||||
This method is deprecated.
in 4.6 for removal in 5.0. Use
merge(MergeCommandParameters) instead.
| |||||||||||
Streams the raw content of the given file after performing a best effort detection of its
MIME type.
| |||||||||||
This method is deprecated.
in 4.6 for removal in 5.0. Use
resolveRef(ResolveRefCommandParameters) instead.
| |||||||||||
Resolves refs from the ref IDs provided on
parameters, which may be one of
Callers can specify on the parameters whether a provided ID is expected to resolve to a
branch, tag,
or a ref of unknown type. | |||||||||||
Streams
tags ordered either alphabetically or by modification and optionally filtered. | |||||||||||
Streams all of the commits in the repository, traversed in topological order.
| |||||||||||
This method is deprecated.
in 4.6 for removal in 5.0. Use
updateDefaultBranch(UpdateDefaultBranchCommandParameters) instead.
| |||||||||||
This method is deprecated.
in 4.6 to note that the return type will change to Command<Page<Blame>> in 5.0.
Retrieves blame (also sometimes referred to as annotations) for a file at a given revision.
This command is paged somewhat differently than others, in that it does not return a Page and instead
returns a List. The PageRequest provided determines the lines in the file for which blame is
calculated, and only lines within the scope of the page request will be returned. However, because adjacent
lines may be spanned by a single author, the number
of distinct Blame objects returned will frequently be less than the limit.
| parameters | parameters describing the file and revision used to calculate blame |
|---|---|
| pageRequest | describes the set of lines in the file to calculate blame for |
Blame for the specified file and
revision for the requested set of linesRetrieves a page of branches ordered either alphabetically or by modification and
optionally filtered.
When no explicit order is requested, the default ordering depends on whether a filter was provided:
alphabetical ordermodification order| parameters | parameters describing desired order and filter text |
|---|---|
| pageRequest | describes the set of branches to return |
Retrieves a Command which, when executed, will stream branches ordered either
alphabetically or by modification and optionally filtered.
When no explicit order is requested, the default ordering depends on whether a filter was provided:
alphabetical ordermodification order| parameters | parameters describing desired order and filter text |
|---|---|
| callback | the callback to receive streamed branches |
Retrieves a page of changes describing the modifications made between two
revisions, optionally filtered by path.
If no explicit "since" revision is specified, it defaults to the
parent of the "until" revision. If the "until" revision specifies
a merge commit (a commit with multiple parents), no changes will be returned.
Note: Some changes, such as copies and moves,
affect more than one path. When filtering by path, if both paths are not available the change's type may not
be correctly detected by some SCMs.
| parameters | parameters describing the revisions to compare and paths to filter by |
|---|---|
| pageRequest | describes the set of changes to return |
Retrieves a Command which, when executed, will stream changes describing modifications
made between two revisions, optionally filtered by path.
If no explicit "since" revision is specified, it defaults to the
parent of the "until" revision. If the "until" revision specifies
a merge commit (a commit with multiple parents), no changes will be returned.
Note: Some changes, such as copies and moves,
affect more than one path. When filtering by path, if both paths are not available the change's type may not
be correctly detected by some SCMs.
| parameters | parameters describing the revisions to compare and paths to filter by |
|---|---|
| callback | the callback to receive streamed commits |
Retrieves a page of changesets given a set of commit IDs, where each changeset includes the first page of changes
between a requested commit and its first parent.
| parameters | parameters describing the changesets to retrieve |
|---|---|
| pageRequest | describes the page of changesets to retrieve |
Retrieves details for the specified commit.
If a path is provided, the Changeset returned may not
be for the specified commit. Instead, that commit is used as
a starting point and details for the first commit in its ancestry which affects that path are returned.
| parameters | parameters describing the commit to retrieve details for |
|---|
Streams commits which match the provided parameters to the provided callback.
| parameters | parameters describing the commits to retrieve |
|---|---|
| callback | a callback to receive the streamed commits |
| UnsupportedOperationException | if a secondary
repository is provided an cross-
repository operations are not supported |
|---|
Retrieves a page of commits matching the specified parameters.
If the SCM supports cross-repository operations, a secondary repository
may be provided. Otherwise, it must be omitted or match the target repository.
| parameters | parameters describing which commits to retrieve |
|---|---|
| pageRequest | describes the set of commits to return |
| UnsupportedOperationException | if a secondary
repository was provided and the underlying SCM does not support
cross-repository operations |
|---|
This method is deprecated.
in 4.6 for removal without replacement in 5.0. Creating repositories should be done
using the RepositoryService, which creates the repository in
the database as well as in the SCM.
Creates and initializes the repository, performing any initial configuration that is appropriate for the SCM.
Note: This command may be called exactly once for any repository. Subsequent executions will fail; they will not reinitialise the repository.
Resolves the default branch for the specified repository.
The returned command may throw NoDefaultBranchException, when executed, if the specified repository does not have a resolvable default branch.
This might happen, for example, on a new repository with no commits, or if the only commits to a repository have
been to a branch other than the default branch.
| NoDefaultBranchException | if the repository does not have a resolvable default branch |
|---|
Streams a diff between two commits.
| parameters | parameters describing the diff to stream |
|---|---|
| callback | the callback to receive the streamed diff |
Streams the tree nodes (files, subdirectories and submodules) in the specified
directory.
| parameters | parameters providing the directory to stream and the revision to stream it for |
|---|---|
| callback | the callback to receive the streamed nodes |
| pageRequest | describes the set of nodes to stream |
Streams the contents of the specified file.
| parameters | parameters describing the file to stream and the revision to stream it for |
|---|---|
| callback | the callback to receive the streamed content |
| pageRequest | describes the set of lines in the file to stream |
This method is deprecated.
in 4.6 for removal without replacement in 5.0. Forking repositories should be done
using the RepositoryService, which creates the forked repository
in the database as well as in the SCM.
Forks the working repository and stores the new fork in the provided fork repository.
This operation is optional and may not be supported by all SCM implementations. Such implementations will throw
an UnsupportedOperationException.
| fork | the forked repository |
|---|
| UnsupportedOperationException | if the underlying SCM does not support forking repositories |
|---|
Streams refs for all of the heads in the repository. The exact definition of "heads" is an
SCM-specific detail, but it will generally include all branches and tags in the repository.
Note: This method is not exposed via the service API. It is only available directly on the SCM API.
| callback | the ref callback that will be called for each head |
|---|
This method is deprecated.
in 4.6 for removal in 5.0. Use merge(MergeCommandParameters) instead.
Merges the specified fromCommitId into the specified toBranch.
The provided fromCommitId may be:
toBranch, as the parameter name suggests, must be a branch name, either fully
qualified or short; using a hash (full or short) is not supported.
If the SCM supports cross-repository merges, a different from repository may
be provided. Otherwise, it must be omitted or match the target repository.
This operation is optional and may not be supported by all SCM implementations. Such implementations will throw
an UnsupportedOperationException.
Note: This method is not exposed via the service API. It is only available directly on the SCM API.
| UnsupportedOperationException | if the underlying SCM does not support merging branches, or if a
cross-repository merge was requested and the SCM doesn't support
cross-repository merges |
|---|
Streams the raw content of the given file after performing a best effort detection of its
MIME type. That MIME type will be used to retrieve an OutputStream from the provided supplier,
and the file's raw content will then be written to the returned stream.
| parameters | parameters used to specify the path and version of the file to stream |
|---|---|
| outputSupplier | the supplier which, when given a content type, will provide an output stream |
Resolves the specified refId, which may be a:
refId should be resolved to a specific type, that type should be set to allow the SCM to restrict its search.
If a hash is provided, it will be resolved to the branch or tag it is the tip of. If it is not the tip of
any branch or tag, it will resolve to null. If a type
was specified, the hash will only be resolved against that type.
When a hash is provided and resolves to multiple branches, tags or a combination of both, it is left to the SCM implementation to determine the result. SCM implementors are encouraged to choose a tag over a branch, and to return the "first" branch or tag, ordered alphabetically, but this is not enforced.
| parameters | parameters describing the ref to resolve |
|---|
This method is deprecated.
in 4.6 for removal in 5.0. Use resolveRef(ResolveRefCommandParameters) instead.
Resolves the specified refId, which may be a:
null.
When a hash is provided and resolves to multiple branches, tags or a combination of both, it is left to the SCM implementation to determine the result. SCM implementors are encouraged to choose a tag over a branch, and to return the "first" branch or tag, ordered alphabetically, but this is not enforced.
| refId | the ref ID to resolve, which may be a branch or tag name or a commit hash |
|---|
Resolves refs from the ref IDs provided on parameters, which may be one of
parameters whether a provided ID is expected to resolve to a
branch, tag,
or a ref of unknown type.
If hashes are provided, they will be resolved to branches or tags they are the tip of. If they are not the tip of
any branch or tag, they will resolve to null and will not be included in the returned map.
When a hash is provided and resolves to multiple branches, tags or a combination of both, it is left to the SCM implementation to determine the result. SCM implementors are encouraged to choose a tag over a branch, and to return the "first" branch or tag, ordered alphabetically, but this is not enforced.
| parameters | describes the ref IDs to resolve |
|---|
Retrieves a page of tags ordered either alphabetically or by modification and
optionally filtered.
When no explicit order is requested, the default ordering depends on whether a filter was provided:
alphabetical ordermodification order| parameters | parameters describing desired order and filter text |
|---|---|
| pageRequest | describes the set of tags to return |
Streams tags ordered either alphabetically or by modification and optionally filtered.
When no explicit order is requested, the default ordering depends on whether a filter was provided:
alphabetical ordermodification order| parameters | parameters describing desired order and filter text |
|---|---|
| callback | a callback to receive the streamed commits |
Streams all of the commits in the repository, traversed in topological order.
| callback | the callback to receive the streamed commits |
|---|
Retrieves the type for the specified path
at the requested revision, if the path is present. Note that the same path might have different types between
revisions but the root entry ("", "\" or "/") will always be a directory.
| parameters | parameters describing the path to check, and the revision to check it for |
|---|
This method is deprecated.
in 4.6 for removal in 5.0. Use updateDefaultBranch(UpdateDefaultBranchCommandParameters) instead.
Sets the default branch for the repository to the specified branch.
This operation is optional and may not be supported by all SCM implementations. Such implementations will throw
an UnsupportedOperationException.
| branchName | the branch to make the default |
|---|
| IllegalArgumentException | if the provided branchName is null or blank |
|---|---|
| UnsupportedOperationException | if the underlying SCM does not support setting the default branch |