Documentation ¶
Index ¶
- Variables
- func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string, isSync bool, ...)
- func AddToTaskQueue(ctx context.Context, pr *issues_model.PullRequest)
- func AttemptThreeWayMerge(ctx context.Context, gitPath string, gitRepo *git.Repository, ...) (bool, []string, error)
- func ChangeTargetBranch(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, ...) (err error)
- func CheckFileProtection(repo *git.Repository, branchName, oldCommitID, newCommitID string, ...) ([]string, error)
- func CheckPRsForBaseBranch(ctx context.Context, baseRepo *repo_model.Repository, baseBranchName string) error
- func CheckPullBranchProtections(ctx context.Context, pr *issues_model.PullRequest, ...) (err error)
- func CheckPullMergeable(stdCtx context.Context, doer *user_model.User, perm *access_model.Permission, ...) error
- func CheckUnprotectedFiles(repo *git.Repository, branchName, oldCommitID, newCommitID string, ...) (bool, error)
- func CloseBranchPulls(ctx context.Context, doer *user_model.User, repoID int64, branch string) error
- func CloseRepoBranchesPulls(ctx context.Context, doer *user_model.User, repo *repo_model.Repository) error
- func CreateCodeComment(ctx context.Context, doer *user_model.User, gitRepo *git.Repository, ...) (*issues_model.Comment, error)
- func CreatePushPullComment(ctx context.Context, pusher *user_model.User, pr *issues_model.PullRequest, ...) (comment *issues_model.Comment, err error)
- func DismissApprovalReviews(ctx context.Context, doer *user_model.User, pull *issues_model.PullRequest) error
- func DismissReview(ctx context.Context, reviewID, repoID int64, message string, ...) (comment *issues_model.Comment, err error)
- func DownloadDiffOrPatch(ctx context.Context, pr *issues_model.PullRequest, w io.Writer, ...) error
- func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issues_model.PullRequest, ...) (message, body string, err error)
- func GetDiverging(ctx context.Context, pr *issues_model.PullRequest) (*git.DivergeObject, error)
- func GetIssuesAllCommitStatus(ctx context.Context, issues issues_model.IssueList) (map[int64][]*git_model.CommitStatus, map[int64]*git_model.CommitStatus, error)
- func GetIssuesLastCommitStatus(ctx context.Context, issues issues_model.IssueList) (map[int64]*git_model.CommitStatus, error)
- func GetPullRequestCommitStatusState(ctx context.Context, pr *issues_model.PullRequest) (structs.CommitStatusState, error)
- func GetReviewerTeams(ctx context.Context, repo *repo_model.Repository) ([]*organization.Team, error)
- func GetReviewers(ctx context.Context, repo *repo_model.Repository, doerID, posterID int64) ([]*user_model.User, error)
- func GetSquashMergeCommitMessages(ctx context.Context, pr *issues_model.PullRequest) string
- func Init() error
- func InitializePullRequests(ctx context.Context)
- func InvalidateCodeComments(ctx context.Context, prs issues_model.PullRequestList, doer *user_model.User, ...) error
- func IsCommitStatusContextSuccess(commitStatuses []*git_model.CommitStatus, requiredContexts []string) bool
- func IsErrDismissRequestOnClosedPR(err error) bool
- func IsHeadEqualWithBranch(ctx context.Context, pr *issues_model.PullRequest, branchName string) (bool, error)
- func IsPullCommitStatusPass(ctx context.Context, pr *issues_model.PullRequest) (bool, error)
- func IsUserAllowedToMerge(ctx context.Context, pr *issues_model.PullRequest, p access_model.Permission, ...) (bool, error)
- func IsUserAllowedToUpdate(ctx context.Context, pull *issues_model.PullRequest, user *user_model.User) (mergeAllowed, rebaseAllowed bool, err error)
- func LFSPush(ctx context.Context, tmpBasePath, mergeHeadSHA, mergeBaseSHA string, ...) error
- func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, ...) error
- func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus, requiredContexts []string) structs.CommitStatusState
- func MergedManually(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, ...) error
- func NewPullRequest(ctx context.Context, opts *NewPullRequestOptions) error
- func PushToBaseRepo(ctx context.Context, pr *issues_model.PullRequest) (err error)
- func RetargetBranchPulls(ctx context.Context, doer *user_model.User, repoID int64, ...) error
- func RetargetChildrenOnMerge(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest) error
- func SetAllowEdits(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest, ...) error
- func SubmitReview(ctx context.Context, doer *user_model.User, gitRepo *git.Repository, ...) (*issues_model.Review, *issues_model.Comment, error)
- func TestPatch(pr *issues_model.PullRequest) error
- func Update(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, ...) error
- func UpdatePullsRefs(ctx context.Context, repo *repo_model.Repository, ...)
- func UpdateRef(ctx context.Context, pr *issues_model.PullRequest) (err error)
- type CommitInfo
- type ErrDismissRequestOnClosedPR
- type MergeCheckType
- type NewPullRequestOptions
Constants ¶
This section is empty.
Variables ¶
var ( ErrIsClosed = errors.New("pull is closed") ErrUserNotAllowedToMerge = models.ErrDisallowedToMerge{} ErrHasMerged = errors.New("has already been merged") ErrIsWorkInProgress = errors.New("work in progress PRs cannot be merged") ErrIsChecking = errors.New("cannot merge while conflict checking is in progress") ErrNotMergeableState = errors.New("not in mergeable state") ErrDependenciesLeft = errors.New("is blocked by an open dependency") )
var ErrSubmitReviewOnClosedPR = errors.New("can't submit review for a closed or merged PR")
ErrSubmitReviewOnClosedPR represents an error when an user tries to submit an approve or reject review associated to a closed or merged PR.
var ErrUserHasNoPermissionForAction = errors.New("user not allowed to do this action")
Functions ¶
func AddTestPullRequestTask ¶
func AddTestPullRequestTask(doer *user_model.User, repoID int64, branch string, isSync bool, oldCommitID, newCommitID string)
AddTestPullRequestTask adds new test tasks by given head/base repository and head/base branch, and generate new patch for testing as needed.
func AddToTaskQueue ¶
func AddToTaskQueue(ctx context.Context, pr *issues_model.PullRequest)
AddToTaskQueue adds itself to pull request test task queue.
func AttemptThreeWayMerge ¶
func AttemptThreeWayMerge(ctx context.Context, gitPath string, gitRepo *git.Repository, base, ours, theirs, description string) (bool, []string, error)
AttemptThreeWayMerge will attempt to three way merge using git read-tree and then follow the git merge-one-file algorithm to attempt to resolve basic conflicts
func ChangeTargetBranch ¶
func ChangeTargetBranch(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, targetBranch string) (err error)
ChangeTargetBranch changes the target branch of this pull request, as the given user.
func CheckFileProtection ¶
func CheckFileProtection(repo *git.Repository, branchName, oldCommitID, newCommitID string, patterns []glob.Glob, limit int, env []string) ([]string, error)
CheckFileProtection check file Protection
func CheckPRsForBaseBranch ¶
func CheckPRsForBaseBranch(ctx context.Context, baseRepo *repo_model.Repository, baseBranchName string) error
CheckPRsForBaseBranch check all pulls with baseBrannch
func CheckPullBranchProtections ¶
func CheckPullBranchProtections(ctx context.Context, pr *issues_model.PullRequest, skipProtectedFilesCheck bool) (err error)
CheckPullBranchProtections checks whether the PR is ready to be merged (reviews and status checks)
func CheckPullMergeable ¶
func CheckPullMergeable(stdCtx context.Context, doer *user_model.User, perm *access_model.Permission, pr *issues_model.PullRequest, mergeCheckType MergeCheckType, adminForceMerge bool) error
CheckPullMergeable check if the pull mergeable based on all conditions (branch protection, merge options, ...)
func CheckUnprotectedFiles ¶
func CheckUnprotectedFiles(repo *git.Repository, branchName, oldCommitID, newCommitID string, patterns []glob.Glob, env []string) (bool, error)
CheckUnprotectedFiles check if the commit only touches unprotected files
func CloseBranchPulls ¶
func CloseBranchPulls(ctx context.Context, doer *user_model.User, repoID int64, branch string) error
CloseBranchPulls close all the pull requests who's head branch is the branch
func CloseRepoBranchesPulls ¶
func CloseRepoBranchesPulls(ctx context.Context, doer *user_model.User, repo *repo_model.Repository) error
CloseRepoBranchesPulls close all pull requests which head branches are in the given repository, but only whose base repo is not in the given repository
func CreateCodeComment ¶
func CreateCodeComment(ctx context.Context, doer *user_model.User, gitRepo *git.Repository, issue *issues_model.Issue, line int64, content, treePath string, pendingReview bool, replyReviewID int64, latestCommitID string, attachments []string) (*issues_model.Comment, error)
CreateCodeComment creates a comment on the code line
func CreatePushPullComment ¶
func CreatePushPullComment(ctx context.Context, pusher *user_model.User, pr *issues_model.PullRequest, oldCommitID, newCommitID string) (comment *issues_model.Comment, err error)
CreatePushPullComment create push code to pull base comment
func DismissApprovalReviews ¶
func DismissApprovalReviews(ctx context.Context, doer *user_model.User, pull *issues_model.PullRequest) error
DismissApprovalReviews dismiss all approval reviews because of new commits
func DismissReview ¶
func DismissReview(ctx context.Context, reviewID, repoID int64, message string, doer *user_model.User, isDismiss, dismissPriors bool) (comment *issues_model.Comment, err error)
DismissReview dismissing stale review by repo admin
func DownloadDiffOrPatch ¶
func DownloadDiffOrPatch(ctx context.Context, pr *issues_model.PullRequest, w io.Writer, patch, binary bool) error
DownloadDiffOrPatch will write the patch for the pr to the writer
func GetDefaultMergeMessage ¶
func GetDefaultMergeMessage(ctx context.Context, baseGitRepo *git.Repository, pr *issues_model.PullRequest, mergeStyle repo_model.MergeStyle) (message, body string, err error)
GetDefaultMergeMessage returns default message used when merging pull request
func GetDiverging ¶
func GetDiverging(ctx context.Context, pr *issues_model.PullRequest) (*git.DivergeObject, error)
GetDiverging determines how many commits a PR is ahead or behind the PR base branch
func GetIssuesAllCommitStatus ¶
func GetIssuesAllCommitStatus(ctx context.Context, issues issues_model.IssueList) (map[int64][]*git_model.CommitStatus, map[int64]*git_model.CommitStatus, error)
GetIssuesAllCommitStatus returns a map of issue ID to a list of all statuses for the most recent commit as well as a map of issue ID to only the commit's latest status
func GetIssuesLastCommitStatus ¶
func GetIssuesLastCommitStatus(ctx context.Context, issues issues_model.IssueList) (map[int64]*git_model.CommitStatus, error)
GetIssuesLastCommitStatus returns a map of issue ID to the most recent commit's latest status
func GetPullRequestCommitStatusState ¶
func GetPullRequestCommitStatusState(ctx context.Context, pr *issues_model.PullRequest) (structs.CommitStatusState, error)
GetPullRequestCommitStatusState returns pull request merged commit status state
func GetReviewerTeams ¶
func GetReviewerTeams(ctx context.Context, repo *repo_model.Repository) ([]*organization.Team, error)
GetReviewerTeams get all teams can be requested to review
func GetReviewers ¶
func GetReviewers(ctx context.Context, repo *repo_model.Repository, doerID, posterID int64) ([]*user_model.User, error)
GetReviewers get all users can be requested to review: - Poster should not be listed - For collaborator, all users that have read access or higher to the repository. - For repository under organization, users under the teams which have read permission or higher of pull request unit - Owner will be listed if it's not an organization, not the poster and not in the list of reviewers
func GetSquashMergeCommitMessages ¶
func GetSquashMergeCommitMessages(ctx context.Context, pr *issues_model.PullRequest) string
GetSquashMergeCommitMessages returns the commit messages between head and merge base (if there is one)
func Init ¶
func Init() error
Init runs the task queue to test all the checking status pull requests
func InitializePullRequests ¶
InitializePullRequests checks and tests untested patches of pull requests.
func InvalidateCodeComments ¶
func InvalidateCodeComments(ctx context.Context, prs issues_model.PullRequestList, doer *user_model.User, repo *git.Repository, branch string) error
InvalidateCodeComments will lookup the prs for code comments which got invalidated by change
func IsCommitStatusContextSuccess ¶
func IsCommitStatusContextSuccess(commitStatuses []*git_model.CommitStatus, requiredContexts []string) bool
IsCommitStatusContextSuccess returns true if all required status check contexts succeed.
func IsErrDismissRequestOnClosedPR ¶
IsErrDismissRequestOnClosedPR checks if an error is an ErrDismissRequestOnClosedPR.
func IsHeadEqualWithBranch ¶
func IsHeadEqualWithBranch(ctx context.Context, pr *issues_model.PullRequest, branchName string) (bool, error)
IsHeadEqualWithBranch returns if the commits of branchName are available in pull request head
func IsPullCommitStatusPass ¶
func IsPullCommitStatusPass(ctx context.Context, pr *issues_model.PullRequest) (bool, error)
IsPullCommitStatusPass returns if all required status checks PASS
func IsUserAllowedToMerge ¶
func IsUserAllowedToMerge(ctx context.Context, pr *issues_model.PullRequest, p access_model.Permission, user *user_model.User) (bool, error)
IsUserAllowedToMerge check if user is allowed to merge PR with given permissions and branch protections
func IsUserAllowedToUpdate ¶
func IsUserAllowedToUpdate(ctx context.Context, pull *issues_model.PullRequest, user *user_model.User) (mergeAllowed, rebaseAllowed bool, err error)
IsUserAllowedToUpdate check if user is allowed to update PR with given permissions and branch protections
func LFSPush ¶
func LFSPush(ctx context.Context, tmpBasePath, mergeHeadSHA, mergeBaseSHA string, pr *issues_model.PullRequest) error
LFSPush pushes lfs objects referred to in new commits in the head repository from the base repository
func Merge ¶
func Merge(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, baseGitRepo *git.Repository, mergeStyle repo_model.MergeStyle, expectedHeadCommitID, message string, wasAutoMerged bool) error
Merge merges pull request to base repository. Caller should check PR is ready to be merged (review and status checks)
func MergeRequiredContextsCommitStatus ¶
func MergeRequiredContextsCommitStatus(commitStatuses []*git_model.CommitStatus, requiredContexts []string) structs.CommitStatusState
MergeRequiredContextsCommitStatus returns a commit status state for given required contexts
func MergedManually ¶
func MergedManually(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, baseGitRepo *git.Repository, commitID string) error
MergedManually mark pr as merged manually
func NewPullRequest ¶
func NewPullRequest(ctx context.Context, opts *NewPullRequestOptions) error
NewPullRequest creates new pull request with labels for repository.
func PushToBaseRepo ¶
func PushToBaseRepo(ctx context.Context, pr *issues_model.PullRequest) (err error)
PushToBaseRepo pushes commits from branches of head repository to corresponding branches of base repository. FIXME: Only push branches that are actually updates?
func RetargetBranchPulls ¶
func RetargetBranchPulls(ctx context.Context, doer *user_model.User, repoID int64, branch, targetBranch string) error
RetargetBranchPulls change target branch for all pull requests whose base branch is the branch Both branch and targetBranch must be in the same repo (for security reasons)
func RetargetChildrenOnMerge ¶
func RetargetChildrenOnMerge(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest) error
RetargetChildrenOnMerge retarget children pull requests on merge if possible
func SetAllowEdits ¶
func SetAllowEdits(ctx context.Context, doer *user_model.User, pr *issues_model.PullRequest, allow bool) error
SetAllowEdits allow edits from maintainers to PRs
func SubmitReview ¶
func SubmitReview(ctx context.Context, doer *user_model.User, gitRepo *git.Repository, issue *issues_model.Issue, reviewType issues_model.ReviewType, content, commitID string, attachmentUUIDs []string) (*issues_model.Review, *issues_model.Comment, error)
SubmitReview creates a review out of the existing pending review or creates a new one if no pending review exist
func TestPatch ¶
func TestPatch(pr *issues_model.PullRequest) error
TestPatch will test whether a simple patch will apply
func Update ¶
func Update(ctx context.Context, pr *issues_model.PullRequest, doer *user_model.User, message string, rebase bool) error
Update updates pull request with base branch.
func UpdatePullsRefs ¶
func UpdatePullsRefs(ctx context.Context, repo *repo_model.Repository, update *repo_module.PushUpdateOptions)
UpdatePullsRefs update all the PRs head file pointers like /refs/pull/1/head so that it will be dependent by other operations
func UpdateRef ¶
func UpdateRef(ctx context.Context, pr *issues_model.PullRequest) (err error)
UpdateRef update refs/pull/id/head directly for agit flow pull request
Types ¶
type CommitInfo ¶
type CommitInfo struct { Summary string `json:"summary"` CommitterOrAuthorName string `json:"committer_or_author_name"` ID string `json:"id"` ShortSha string `json:"short_sha"` Time string `json:"time"` }
func GetPullCommits ¶
func GetPullCommits(ctx *gitea_context.Context, issue *issues_model.Issue) ([]CommitInfo, string, error)
GetPullCommits returns all commits on given pull request and the last review commit sha Attention: The last review commit sha must be from the latest review whose commit id is not empty. So the type of the latest review cannot be "ReviewTypeRequest".
type ErrDismissRequestOnClosedPR ¶
type ErrDismissRequestOnClosedPR struct{}
ErrDismissRequestOnClosedPR represents an error when an user tries to dismiss a review associated to a closed or merged PR.
func (ErrDismissRequestOnClosedPR) Error ¶
func (err ErrDismissRequestOnClosedPR) Error() string
func (ErrDismissRequestOnClosedPR) Unwrap ¶
func (err ErrDismissRequestOnClosedPR) Unwrap() error
type MergeCheckType ¶
type MergeCheckType int
const ( MergeCheckTypeGeneral MergeCheckType = iota // general merge checks for "merge", "rebase", "squash", etc MergeCheckTypeManually // Manually Merged button (mark a PR as merged manually) MergeCheckTypeAuto // Auto Merge (Scheduled Merge) After Checks Succeed )
type NewPullRequestOptions ¶
type NewPullRequestOptions struct { Repo *repo_model.Repository Issue *issues_model.Issue LabelIDs []int64 AttachmentUUIDs []string PullRequest *issues_model.PullRequest AssigneeIDs []int64 Reviewers []*user_model.User TeamReviewers []*organization.Team }