@@ -113,6 +113,30 @@ const (
113113 PullRequestFlowAGit
114114)
115115
116+ var PullRequestFlowMap map [PullRequestFlow ]string = map [PullRequestFlow ]string {
117+ PullRequestFlowGithub : "github" ,
118+ PullRequestFlowAGit : "agit" ,
119+ }
120+ var PullRequestFlowTypeUnknown error = errors .New ("Unknown pull request type" )
121+
122+ func PullRequestFlowFromString (strtype string ) (PullRequestFlow , error ) {
123+ for k , v := range PullRequestFlowMap {
124+ if v == strtype {
125+ return k , nil
126+ }
127+ }
128+
129+ return 0 , PullRequestFlowTypeUnknown
130+ }
131+
132+ func PullRequestFlowTypeToString (flow PullRequestFlow ) string {
133+ v , ok := PullRequestFlowMap [flow ]
134+ if ok {
135+ return v
136+ }
137+ return ""
138+ }
139+
116140// PullRequest represents relation between pull request and repositories.
117141type PullRequest struct {
118142 ID int64 `xorm:"pk autoincr"`
@@ -462,6 +486,18 @@ func (pr *PullRequest) IsFromFork() bool {
462486 return pr .HeadRepoID != pr .BaseRepoID
463487}
464488
489+ func (pr * PullRequest ) ConvertToAgitPullRequest (ctx context.Context , doer * user_model.User ) (err error ) {
490+ if pr .IsAgitFlow () {
491+ return nil
492+ }
493+
494+ pr .Flow = PullRequestFlowAGit
495+ pr .HeadRepoID = pr .BaseRepoID
496+ pr .HeadBranch = doer .LowerName + "/" + pr .HeadBranch
497+
498+ return pr .UpdateColsIfNotMerged (ctx , "flow" , "head_repo_id" , "head_branch" )
499+ }
500+
465501// NewPullRequest creates new pull request with labels for repository.
466502func NewPullRequest (ctx context.Context , repo * repo_model.Repository , issue * Issue , labelIDs []int64 , uuids []string , pr * PullRequest ) (err error ) {
467503 ctx , committer , err := db .TxContext (ctx )
0 commit comments