pull

package
v0.0.0-...-d5aab6d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 19, 2024 License: MIT Imports: 51 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
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")
)
View Source
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.

View Source
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

func InitializePullRequests(ctx context.Context)

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

func IsErrDismissRequestOnClosedPR(err error) bool

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
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL