Skip to content

Commit c2277dd

Browse files
committed
feat: open issue do not create merge request, close would do this.
1 parent cf9773c commit c2277dd

File tree

1 file changed

+53
-38
lines changed

1 file changed

+53
-38
lines changed

internal/flow_impl.go

+53-38
Original file line numberDiff line numberDiff line change
@@ -200,33 +200,18 @@ func (f flowImpl) FeatureBeginIssue(featureBranchName string, title, desc string
200200

201201
// create issue branch
202202
issueBranchName := genIssueBranchName(milestone.Title, issue.IID)
203-
issueBranch, err := f.createBranch(issueBranchName, featureBranch.BranchName, milestone.MilestoneID, issue.IID)
203+
_, err = f.createBranch(issueBranchName, featureBranch.BranchName, milestone.MilestoneID, issue.IID)
204204
if err != nil {
205-
return err
206-
}
207-
208-
// create mr
209-
targetBranch := featureBranch.BranchName
210-
mrTitle := genMRTitle(issueBranchName, targetBranch)
211-
mr, err := f.createMergeRequest(mrTitle, desc, milestone.MilestoneID, issue.IID, issueBranchName, targetBranch)
212-
if err != nil {
213-
return nil
205+
return errors.Wrap(err, "create branch failed")
214206
}
215-
log.
216-
WithFields(log.Fields{
217-
"issue_branch": issueBranch.WebURL,
218-
"merge_request": mr.WebURL,
219-
}).
220-
Debug("create issue finished")
221207

222208
f.printAndOpenBrowser("Open Issue", issue.WebURL)
223209

224210
return nil
225211
}
226212

227-
// TODO(@yeqown): issue merge request should be called here, rather than FeatureBeginIssue
228-
func (f flowImpl) FeatureFinishIssue(featureBranchName, issueBranchName string) (err error) {
229-
var milestoneID = 0
213+
// DONE(@yeqown): issue merge request should be called here, rather than FeatureBeginIssue
214+
func (f flowImpl) FeatureFinishIssue(featureBranchName, issueBranchName string) error {
230215

231216
// DONE(@yeqown): if issueBranchName is empty, make current branch name as default.
232217
if issueBranchName == "" {
@@ -235,13 +220,20 @@ func (f flowImpl) FeatureFinishIssue(featureBranchName, issueBranchName string)
235220
if issueBranchName == "" {
236221
return errors.New("issue branch could not be empty")
237222
}
223+
224+
var (
225+
milestoneID = 0
226+
issueIID = 0
227+
)
228+
// locate issue branch.
238229
if b, err := f.repo.QueryBranch(&repository.BranchDO{
239230
ProjectID: f.ctx.Project.ID,
240231
BranchName: issueBranchName,
241232
}); err != nil {
242233
return errors.Wrapf(err, "locate issue branch(%s) failed", issueBranchName)
243234
} else {
244235
milestoneID = b.MilestoneID
236+
issueIID = b.IssueIID
245237
}
246238

247239
// DONE(@yeqown) get feature branch name from issueBranchName
@@ -252,43 +244,66 @@ func (f flowImpl) FeatureFinishIssue(featureBranchName, issueBranchName string)
252244
return errors.New("feature branch could not be empty")
253245
}
254246
featureBranchName = genFeatureBranchName(featureBranchName)
255-
256-
if _, err = f.repo.QueryBranch(&repository.BranchDO{
257-
ProjectID: f.ctx.Project.ID,
258-
BranchName: featureBranchName,
259-
MilestoneID: milestoneID,
260-
}); err != nil {
261-
return errors.Wrapf(err, "locate feature branch(%s) failed", featureBranchName)
262-
}
247+
//if _, err := f.repo.QueryBranch(&repository.BranchDO{
248+
// ProjectID: f.ctx.Project.ID,
249+
// BranchName: featureBranchName,
250+
// MilestoneID: milestoneID,
251+
//}); err != nil {
252+
// return errors.Wrapf(err, "locate feature branch(%s) failed", featureBranchName)
253+
//}
263254

264255
// locate MR
265256
mr, err := f.repo.QueryMergeRequest(&repository.MergeRequestDO{
266257
ProjectID: f.ctx.Project.ID,
258+
IssueIID: issueIID,
267259
MilestoneID: milestoneID,
268260
SourceBranch: issueBranchName,
269261
TargetBranch: featureBranchName,
270262
})
271-
if err != nil {
263+
if err != nil && !repository.IsErrNotFound(err) {
272264
log.
273265
WithFields(log.Fields{
274-
"projectID": f.ctx.Project.ID,
275-
"milestoneID": milestoneID,
276-
"error": err,
266+
"projectID": f.ctx.Project.ID,
267+
"issueIID": issueIID,
268+
"milestoneID": milestoneID,
269+
"sourceBranch": issueBranchName,
270+
"targetBranch": featureBranchName,
277271
}).
278-
Error("locate MR failed")
272+
Errorf("locate MR failed: %v", err)
279273
return errors.Wrap(err, "locate MR failed")
280274
}
281275

276+
// got merge request from local
277+
if mr != nil {
278+
log.
279+
WithFields(log.Fields{
280+
"featureBranch": featureBranchName,
281+
"issueBranch": issueBranchName,
282+
"mergeRequestURL": mr.WebURL,
283+
}).
284+
Debug("issue info")
285+
286+
f.printAndOpenBrowser("Issue Merge Request", mr.WebURL)
287+
return nil
288+
}
289+
290+
// not hit, so create one
291+
title := genMRTitle(issueBranchName, featureBranchName)
292+
desc := ""
293+
result, err := f.createMergeRequest(title, desc, milestoneID, issueIID, issueBranchName, featureBranchName)
294+
if err != nil {
295+
return errors.Wrap(err, "create issue merge request failed")
296+
}
297+
282298
log.
283299
WithFields(log.Fields{
284-
"feature_branch": featureBranchName,
285-
"issue_branch": issueBranchName,
286-
"project_name": f.ctx.Project.Name,
287-
"merge_request_url": mr.WebURL,
300+
"issueBranchName": issueBranchName,
301+
"featureBranchName": featureBranchName,
302+
"mergeRequestURL": result.WebURL,
288303
}).
289-
Debug("issue info")
304+
Debug("create issue merge request finished")
290305

291-
f.printAndOpenBrowser("Issue Merge Request", mr.WebURL)
306+
f.printAndOpenBrowser("Issue Merge Request", result.WebURL)
292307

293308
return nil
294309
}

0 commit comments

Comments
 (0)