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.
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 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Retrieves blame (also sometimes referred to as annotations) for a file at a given revision.
| |||||||||||
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
paramters to the provided callback. | |||||||||||
Retrieves a
page of commits matching the specified parameters . | |||||||||||
Creates and initializes the repository, performing any initial configuration that is appropriate for 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 . | |||||||||||
Forks the working repository and stores the new fork in the provided
fork repository. | |||||||||||
Streams
refs for all of the heads in the repository. | |||||||||||
Merges the specified
fromCommitId into the specified toBranch . | |||||||||||
Streams the raw content of the given file after performing a best effort detection of its
MIME type.
| |||||||||||
Resolves the specified
refId , which may be a:
If a hash is provided, it will be resolved to the branch or tag it is the tip of. | |||||||||||
Streams
tags ordered either alphabetically or by modification and optionally filtered. | |||||||||||
Streams all of the commits in the repository, traversed in topological order.
| |||||||||||
Sets the default branch for the repository to the specified branch.
|
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
orderparameters | parameters describing desired order and filter text |
---|---|
pageRequest | describes the set of branches to return |
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 paramters
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 |
---|
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 |
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 |
---|
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:
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 |
---|
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
orderparameters | 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
orderparameters | 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 |
---|
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 |