com.atlassian.bitbucket.pull.PullRequestService |
A service for the management of pull requests and their comments.
About pull request IDs: Each pull request has two repositories associated with it: The repository commits will be
merged from
, and the repository they will be merged
to
. Pull request ID
s are scoped to the target
repository,
and each method accepting a repository ID, unless otherwise documented, expects the ID of that repository. Also note
that pull request IDs start from 1 in each target repository; they are not globally unique.
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Adds the user specified by 'username' as
REVIEWER to the provided PR. | |||||||||||
Verifies if the current user can delete the specified
pull request . | |||||||||||
Retrieves a flag indicating whether the specified pull request can be
merged
by the system or must be manually merged by a user. | |||||||||||
Counts the number of pull requests which match the specified search criteria.
| |||||||||||
Counts the number of pull requests containing a specified commit which match the given
search criteria . | |||||||||||
Counts the number of commits a pull request has.
| |||||||||||
Counts the number of tasks in a pull request.
| |||||||||||
This method is deprecated.
in 5.13 for removal in 6.0. Use
create(PullRequestCreateRequest) instead.
| |||||||||||
Creates a pull request from the supplied details.
| |||||||||||
Declines a pull request.
| |||||||||||
Deletes the specified pull request, removing all activities and comments.
| |||||||||||
Deletes the
merge configuration for the specified scope. | |||||||||||
Retrieves a page of the activities for a given pull request.
| |||||||||||
Retrieves the specified activities of the given pull request.
| |||||||||||
Retrieves the page of activities that start with an entity (given its type and id) for the given pull request.
| |||||||||||
Retrieves a pull request by its ID, within the specified repository.
| |||||||||||
Retrieves a page of the commits for a given pull request.
| |||||||||||
Retrieves the
merge configuration for the specified source. | |||||||||||
Retrieves a page of the participants for a given pull request.
| |||||||||||
Merges a pull request.
| |||||||||||
Removes a
REVIEWER from a pull request. | |||||||||||
Reopens a pull request.
| |||||||||||
Finds a single page of pull requests depending on the
request passed in. | |||||||||||
Finds a single page of pull request activities depending on the
request
passed in. | |||||||||||
Finds a single page of pull requests containing a specified commit which match the given
search criteria . | |||||||||||
Finds a single page of @{link Task tasks} belonging to this pull request depending on the
request passed in. | |||||||||||
Finds
users who have participated in pull requests based on the provided
search request . | |||||||||||
Sets the
merge configuration for the specified source, setting the
default strategy and the complete set of enabled strategies. | |||||||||||
Allows a user to update their participation status in a pull request.
| |||||||||||
Streams commits for the specified pull request.
| |||||||||||
Streams the
Diff for the specified file path within the PullRequest to the provided
DiffContentCallback . | |||||||||||
This method is deprecated.
in 5.10 for removal in 6.0. Use com.atlassian.bitbucket.watcher.WatcherService#unwatch(Watchable) instead
| |||||||||||
Updates a pull request's title, description, and participants.
| |||||||||||
This method is deprecated.
in 5.10 for removal in 6.0. Use com.atlassian.bitbucket.watcher.WatcherService#watch(Watchable) instead
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From interface
com.atlassian.bitbucket.pull.PullRequestSupplier
|
Adds the user specified by 'username' as REVIEWER
to the provided PR.
If the user is already a reviewer this method has no effect.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
username | the username for the user to be added as a reviewer |
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|---|
UnmodifiablePullRequestRoleException | if the participant is already assigned the
AUTHOR role. |
InvalidPullRequestParticipantException | if the user cannot be made a reviewer because they have insufficient access to the repository |
IllegalPullRequestStateException | if the pull request is either MERGED
or DECLINED |
Verifies if the current user can delete the specified pull request
.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
true
if the current user has sufficient permissions to delete(PullRequestDeleteRequest)
delete} the provided pull request, otherwise false
. Note that the required permissions may vary depending
on the role of the user in the pull request.Retrieves a flag indicating whether the specified pull request can be merged
by the system or must be manually merged by a user.
Even if this method returns true
, there are still a variety of reasons for which merging may fail,
including but not limited to:
Note: If the specified pull request is declined
or
MERGED
, this method will always return false
.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
MergeRequestCheck
s may have raisedIllegalPullRequestStateException | if the pull request is not open |
---|
Counts the number of pull requests which match the specified search criteria.
request | the search criteria to use |
---|
Counts the number of pull requests containing a specified commit which match the given
search criteria
.
Similar to count(PullRequestSearchRequest)
, if the request doesn't limit the search to a repository
that the user has access to, the count may include pull requests the user can't see.
request | the search request to use |
---|
Counts the number of commits a pull request has.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|
Counts the number of tasks in a pull request.
searchRequest | the search criteria to use |
---|
TaskCount
object containing the number of tasks in each stateNoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|
This method is deprecated.
in 5.13 for removal in 6.0. Use create(PullRequestCreateRequest)
instead.
Creates a pull request from the supplied repository and branch to the supplied repository and branch with the given title and description.
Events raised:
title | the title of the pull request |
---|---|
description | the optional description of the pull request |
reviewers | the set of usernames of the users to add as a reviewer |
fromRepository | the repository from which the changes come |
fromBranchId | the branch of the fromRepository from which the changes come |
toRepository | the repository changes are to be merged to |
toBranchId | the branch of the toRepository to which changes are merged |
DuplicatePullRequestException | if there is already an open pull request with identical to and from repositories and branches |
---|---|
EmptyPullRequestException | if the to branch is up-to-date with all of the changes on the from branch, resulting in a pull request with nothing to merge |
InvalidPullRequestTargetException | if the from or to repositories are not the same or if the from and to branches are the same |
InvalidPullRequestReviewersException | if one or more of the reviewers could not be added |
PullRequestOpenCanceledException | if opening the pull request is canceled by an event listener |
NoSuchCommitException | if the the from or to branches do not exist |
Creates a pull request from the supplied details.
Events raised:
request | the details for the new pull request |
---|
DuplicatePullRequestException | if there is already an open pull request with identical to and from repositories and branches |
---|---|
EmptyPullRequestException | if the to branch is up-to-date with all of the changes on the from branch, resulting in a pull request with nothing to merge |
InvalidPullRequestTargetException | if the from or to repositories are not the same or if the from and to branches are the same |
InvalidPullRequestReviewersException | if one or more of the reviewers could not be added |
PullRequestOpenCanceledException | if opening the pull request is canceled by an event listener |
NoSuchCommitException | if the the from or to branches do not exist |
Declines a pull request. The pull request must be open or an exception is thrown. The expected version of the pull request must be supplied to ensure the client is not operating on stale information.
request | details for declining a pull request |
---|
IllegalPullRequestStateException | if the pull request is not open |
---|---|
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
PullRequestOutOfDateException | if the version of the specified pull request does not match the expected version |
Deletes the specified pull request, removing all activities and comments.
The from
and to
refs are not deleted
with the pull request, to prevent accidental data loss. However, other SCM-specific data such as cached
merges or special refs to provide access to pull request state will be deleted along with the pull request.
request | details for deleting a pull request |
---|
AuthorisationException | if the current user does not have permission to delete the pull request |
---|---|
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
PullRequestDeletionDisabledException | if deletion has
been disabled |
Deletes the merge configuration
for the specified scope.
Repositories inherit their merge configuration from the nearest configured scope. For example, deleting a repository's merge config may cause it to inherit project or global configuration rather than reverting to the SCM's defaults.
request | describes which merge configuration is to be deleted |
---|
Retrieves a page of the activities for a given pull request.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
pageRequest | the request specifying the start and limit of the page |
Retrieves the specified activities of the given pull request.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
activityIds | the activity IDs that should be retrieved |
Retrieves the page of activities that start with an entity (given its type and id) for the given pull request.
Entity types currently accepted:
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
fromType | the type of the entity to search for |
fromId | ID of the entity to search for - either a comment ID or activity ID |
pageRequest | the request specifying the limit of the page. Note: the start property is ignored. |
NoSuchEntityException | if the activity can't be found. |
---|
Retrieves a pull request by its ID, within the specified repository.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
Retrieves a page of the commits for a given pull request.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
pageRequest | the request specifying the start and limit of the page |
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|
Retrieves the merge configuration
for the specified source. All of
the supported merge strategies
are returned, but only
enabled
strategies can be specified when merging
pull requests. At least one strategy, the default
, is guaranteed to be enabled.
For cross-repository
pull requests, the configuration for the
target repository
controls how the pull request can be merged.
Merge configuration can be applied at 3 different levels, listed from most specific to most generic:
Repository
Project
and SCM
SCM
defaults
for the appropriate SCM are returned.
SCMs are not required to support merge strategies. Plugins should check support
for the MERGE_STRATEGIES
feature prior to calling
this method. If the SCM does not support merge strategies, an exception will be thrown.
request | a request describing the repository, project-and-SCM or SCM to retrieve configuration for |
---|
to
the specified repository,
repositories within the specified project, or repositories of the specified SCMAuthorisationException | if the requesting user does not have access to the source they're retrieving merge configuration for |
---|---|
FeatureUnsupportedScmException | if the SCM does not support merge strategies |
Retrieves a page of the participants for a given pull request.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
pageRequest | the request specifying the start and limit of the page |
Merges a pull request. The pull request must be open or an exception is thrown. The expected version of the pull request must be supplied to ensure the client is not operating on stale information.
request | details for merging the pull request, specifying the pull request to merge, the expected version, and, optionally, a commit message and additional context |
---|
IllegalPullRequestStateException | if the pull request is not open |
---|---|
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
PullRequestMergeVetoedException | if the merge was canceled by an event listener or hook |
PullRequestOutOfDateException | if the version of the specified pull request does not match the expected version |
Removes a REVIEWER
from a pull request.
If the user is the AUTHOR
of the pull request this method will throw
IllegalPullRequestStateException
; the author may not be removed.
If the user has no activity
items associated with them in the
pull request they will be completely removed. Otherwise they will be made a PARTICIPANT
instead.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
username | the reviewer's user name |
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|---|
UnmodifiablePullRequestRoleException | if the user is the AUTHOR of the PR |
IllegalPullRequestStateException | if the pull request is either MERGED
or DECLINED |
Reopens a pull request. The pull request must be declined or an exception is thrown. The expected version of the pull request must be supplied to ensure the client is not operating on stale information.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
version | the expected version of the pull request |
DuplicatePullRequestException | if a pull request with the same source and target refs already exists |
---|---|
IllegalPullRequestStateException | if the pull request is not declined |
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
PullRequestOutOfDateException | if the version of the specified pull request does not match the expected version |
Finds a single page of pull requests depending on the request
passed in.
If the request specifies that the results should be sorted by participant status
then only one participant may be specified in the request
request | the search criteria to use |
---|---|
pageRequest | the request specifying the start and limit of the search |
IllegalPullRequestSearchRequestException | if PARTICIPANT_STATUS order
was requested but getParticipants() is empty or contains more than one participant (since 4.4)
|
---|
Finds a single page of pull request activities depending on the request
passed in.
request | the search criteria to use |
---|---|
pageRequest | the request specifying the start and limit of the search |
Finds a single page of pull requests containing a specified commit which match the given
search criteria
.
request | the search request to use |
---|---|
pageRequest | the request specifying the start and limit of the search |
Finds a single page of @{link Task tasks} belonging to this pull request depending on the
request
passed in.
searchRequest | the search criteria to use |
---|---|
pageRequest | the request specifying the start and limit of the search |
Finds users
who have participated in pull requests based on the provided
search request
.
searchRequest | the search criteria to use |
---|---|
pageRequest | the request specifying the start and limit of the search |
Sets the merge configuration
for the specified source, setting the
default strategy and the complete set of enabled strategies. Any enabled strategy may be requested
when merging a pull request, and the specified default must be enabled. The enabled strategies
are verified against the SCM to ensure they are all supported.
For cross-repository
pull requests, the configuration for the
target repository
controls how the pull request can be merged.
Merge configuration can be applied at 3 different levels, listed from most specific to most generic, and can only be updated by administrators:
Repository
REPO_ADMIN
permissionProject
and SCM
PROJECT_ADMIN
permissionSCM
global ADMIN
permission
SCMs are not required to support merge strategies. Plugins should check support
for the MERGE_STRATEGIES
feature prior to calling
this method. If the SCM does not support merge strategies, an exception will be thrown.
request | a request describing the repository, project-and-SCM or SCM to set configuration for, the default strategy to use and the set of strategies that should be enabled |
---|
ArgumentValidationException | if the default merge strategy is not enabled, or if any of the enabled strategies are not supported by the associated SCM |
---|---|
AuthorisationException | if the updating user does not have the required administrator permission |
FeatureUnsupportedScmException | if the SCM does not support merge strategies |
Allows a user to update their participation status in a pull request.
If they aren't already a participant of the pull request they are made one first. A non-reviewer may not
set their status to UNAPPROVED
.
A user may only update their status if a pull request is OPEN
.
This operation has no effect if the user already has their status set to the provided value.
Authors may not have their status changed.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
status | the participant status to set for the current user |
InvalidPullRequestParticipantException | if the user cannot be made a participant because they have insufficient privileges to read the repository |
---|---|
IllegalPullRequestStateException | if the pull request is not open |
Streams changes
for the specified PullRequest
to the provided ChangeCallback
.
Note: Internal hard limits are applied to the number of changes
which will be returned. When
changes are truncated for exceeding those limits, it will be signalled to the callback.
request | the repository, pull request and other properties describing the changes to stream |
---|---|
callback | the callback to receive changes |
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|
Streams commits for the specified pull request.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
callback | the request specifying the start and limit of the page |
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|
Streams the Diff
for the specified file path
within the PullRequest
to the provided
DiffContentCallback
. Comment anchors will be offered
to the callback prior to streaming the diff, allowing them to be merged into the diff output as desired.
If the Change
indicated the path
being diffed was moved/renamed
or
copied
, the srcPath
should also be provided. Failure to
provide both paths may result in an incorrect diff in some SCMs.
Note: Internal hard limits are applied to the diff being streamed, limiting the number of lines that can be returned. When a diff is truncated for exceeding those limits, it will be signalled to the callback.
request | the repository, pull request, path and other properties describing the diff to stream |
---|---|
callback | the callback to receive the streamed Diff |
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|
This method is deprecated.
in 5.10 for removal in 6.0. Use com.atlassian.bitbucket.watcher.WatcherService#unwatch(Watchable) instead
Removes the current user as a watcher of the given pull request.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
Updates a pull request's title, description, and participants.
This method will fire:
PullRequestUpdatedEvent
to inform listeners that the title or description have changedPullRequestReviewersUpdatedEvent
to inform listeners of any reviewers assigned or unassigned from this rolePullRequestParticipantsAddedEvent
to inform listeners of any users who have participated in the pull request for the first timePullRequestRescopedEvent
to inform listeners the the destination branch has been updated and rescope has occurredrequest | details for updating a pull request, including a title, description and reviewers. |
---|
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|---|
PullRequestOutOfDateException | if the version of the specified pull request does not match the expected version |
InvalidPullRequestReviewersException | if one or more of the reviewers could not be added |
DuplicatePullRequestException | if there is already an open pull request with an identical to branch |
InvalidPullRequestTargetException | if the from and new to branch are the same |
EmptyPullRequestException | if the new destination branch up-to-date is up-to-date with all of the changes from the from branch, resulting in a pull request with nothing to merge |
IllegalPullRequestStateException | if trying to update a merged pull request |
This method is deprecated.
in 5.10 for removal in 6.0. Use com.atlassian.bitbucket.watcher.WatcherService#watch(Watchable) instead
Adds the current user as a watcher of the given pull request.
repositoryId | the ID of the repository to which the pull request will be merged |
---|---|
pullRequestId | the ID of the pull request within the repository |
NoSuchPullRequestException | if no pull request with the specified ID can be found in the repository |
---|