detached e4b332d

#10 feat(proto): add MarkReady, mr:force-merge and ignore_checks, drop failing_checks_block

state
merged · e4b332d · fast-forward
branch
feat/mr-ready-merge-checks → main
opened
bnema ·
updated

Contract for ermite#22 and the merge check rules.

  • MergeRequestService.MarkReady: removes the draft prefix (mr:write), feature merge_requests.ready.
  • MergeMergeRequestRequest.ignore_checks (field 6): merge whatever the checks say, needs the new scope mr:force-merge (SCOPE_MR_FORCE_MERGE = 12), feature merge_requests.ignore_checks.
  • A merge without ignore_checks needs passing checks (none failed, queued or running; no checks is fine).
  • RepoSettings.failing_checks_block removed (field 2 reserved). Breaking (v0.x).

Release: tag v0.15.0 after merge; ermite then drops its local replace.

CommitSubjectAuthorDateSignatureStatus
e4b332dfix(proto): keep failing_checks_block as a deprecated field instead of removing itbriceGPG Verified
d1c609efeat(proto): add MarkReady, mr:force-merge and ignore_checks, drop failing_checks_blockbriceGPG Verified

Checks 4

9 files · +344 -135
4/4
M docs/services.md +1 -1
@@ -5,7 +5,7 @@
55 | `RepoService` | `ListRepos`, `GetRepo`, `CreateRepo`, `UpdateRepo` (field mask, merge settings), `DeleteRepo` |
66 | `GitService` | `ListRefs`, `GetTree`, `ListPaths`, `GetBlob` (streamed), `ListCommits`, `GetCommit` (structured diff), `ResolveRevision` |
77 | `TokenService` | `CreateToken` (secret shown once), `ListTokens`, `RevokeToken` |
8-| `MergeRequestService` | `CreateMergeRequest`, `ListMergeRequests`, `GetMergeRequest` (commits, diff, comments), `AddComment`, `EditComment`, `DeleteComment`, `ResolveComment`, `CloseMergeRequest`, `MergeMergeRequest` (modes fast-forward, squash, merge commit), `MarkRead`, `EnableAutoMerge`, `CancelAutoMerge` (merge by itself once a check passed on the head and all its runs are complete; setting `allow_auto_merge`, `MergeRequest.auto_merge`, events `MergeRequestAutoMergeEnabled` and `MergeRequestAutoMergeCancelled`, `MergeRequestMerged.auto`; feature `merge_requests.auto_merge`). Open merge requests carry `mergeability` (up to date, behind, conflict, or checking) and `Watch` publishes `MergeRequestMergeability` each time a result is settled for new branch tips (feature `merge_requests.mergeability`) |
8+| `MergeRequestService` | `CreateMergeRequest`, `ListMergeRequests`, `GetMergeRequest` (commits, diff, comments), `AddComment`, `EditComment`, `DeleteComment`, `ResolveComment`, `CloseMergeRequest`, `MarkReady`, `MergeMergeRequest` (modes fast-forward, squash, merge commit), `MarkRead`, `EnableAutoMerge`, `CancelAutoMerge` (merge by itself once a check passed on the head and all its runs are complete; setting `allow_auto_merge`, `MergeRequest.auto_merge`, events `MergeRequestAutoMergeEnabled` and `MergeRequestAutoMergeCancelled`, `MergeRequestMerged.auto`; feature `merge_requests.auto_merge`). Open merge requests carry `mergeability` (up to date, behind, conflict, or checking) and `Watch` publishes `MergeRequestMergeability` each time a result is settled for new branch tips (feature `merge_requests.mergeability`) |
99 | `IssueService` | `CreateIssue`, `ListIssues`, `GetIssue` (comments, merge requests naming the issue, `closed_by_merge_request`), `AddIssueComment`, `CloseIssue`, `ReopenIssue`; owner only: `ListPendingIssues`, `ApproveIssue`, `RejectIssue`. Features `issues`, `issues.links`. Issues share numbers with merge requests |
1010 | `SessionService` | `CreateLoginLink`, `SignOutEverywhere` (owner only) |
1111 | `EventService` | `Watch` (streamed, resumable). Topics `home`, `repo:<name>` and `owner` (owner rights only). Events 17–21: `issue_opened`, `issue_closed`, `issue_reopened`, `issue_commented`, and `issue_submitted` (only on `owner`, no content). Event 22: `merge_request_mergeability` |
@@ -5,7 +5,7 @@
5 | `RepoService` | `ListRepos`, `GetRepo`, `CreateRepo`, `UpdateRepo` (field mask, merge settings), `DeleteRepo` |5 | `RepoService` | `ListRepos`, `GetRepo`, `CreateRepo`, `UpdateRepo` (field mask, merge settings), `DeleteRepo` |
6 | `GitService` | `ListRefs`, `GetTree`, `ListPaths`, `GetBlob` (streamed), `ListCommits`, `GetCommit` (structured diff), `ResolveRevision` |6 | `GitService` | `ListRefs`, `GetTree`, `ListPaths`, `GetBlob` (streamed), `ListCommits`, `GetCommit` (structured diff), `ResolveRevision` |
7 | `TokenService` | `CreateToken` (secret shown once), `ListTokens`, `RevokeToken` |7 | `TokenService` | `CreateToken` (secret shown once), `ListTokens`, `RevokeToken` |
8-| `MergeRequestService` | `CreateMergeRequest`, `ListMergeRequests`, `GetMergeRequest` (commits, diff, comments), `AddComment`, `EditComment`, `DeleteComment`, `ResolveComment`, `CloseMergeRequest`, `MergeMergeRequest` (modes fast-forward, squash, merge commit), `MarkRead`, `EnableAutoMerge`, `CancelAutoMerge` (merge by itself once a check passed on the head and all its runs are complete; setting `allow_auto_merge`, `MergeRequest.auto_merge`, events `MergeRequestAutoMergeEnabled` and `MergeRequestAutoMergeCancelled`, `MergeRequestMerged.auto`; feature `merge_requests.auto_merge`). Open merge requests carry `mergeability` (up to date, behind, conflict, or checking) and `Watch` publishes `MergeRequestMergeability` each time a result is settled for new branch tips (feature `merge_requests.mergeability`) |8+| `MergeRequestService` | `CreateMergeRequest`, `ListMergeRequests`, `GetMergeRequest` (commits, diff, comments), `AddComment`, `EditComment`, `DeleteComment`, `ResolveComment`, `CloseMergeRequest`, `MarkReady`, `MergeMergeRequest` (modes fast-forward, squash, merge commit), `MarkRead`, `EnableAutoMerge`, `CancelAutoMerge` (merge by itself once a check passed on the head and all its runs are complete; setting `allow_auto_merge`, `MergeRequest.auto_merge`, events `MergeRequestAutoMergeEnabled` and `MergeRequestAutoMergeCancelled`, `MergeRequestMerged.auto`; feature `merge_requests.auto_merge`). Open merge requests carry `mergeability` (up to date, behind, conflict, or checking) and `Watch` publishes `MergeRequestMergeability` each time a result is settled for new branch tips (feature `merge_requests.mergeability`) |
9 | `IssueService` | `CreateIssue`, `ListIssues`, `GetIssue` (comments, merge requests naming the issue, `closed_by_merge_request`), `AddIssueComment`, `CloseIssue`, `ReopenIssue`; owner only: `ListPendingIssues`, `ApproveIssue`, `RejectIssue`. Features `issues`, `issues.links`. Issues share numbers with merge requests |9 | `IssueService` | `CreateIssue`, `ListIssues`, `GetIssue` (comments, merge requests naming the issue, `closed_by_merge_request`), `AddIssueComment`, `CloseIssue`, `ReopenIssue`; owner only: `ListPendingIssues`, `ApproveIssue`, `RejectIssue`. Features `issues`, `issues.links`. Issues share numbers with merge requests |
10 | `SessionService` | `CreateLoginLink`, `SignOutEverywhere` (owner only) |10 | `SessionService` | `CreateLoginLink`, `SignOutEverywhere` (owner only) |
11 | `EventService` | `Watch` (streamed, resumable). Topics `home`, `repo:<name>` and `owner` (owner rights only). Events 17–21: `issue_opened`, `issue_closed`, `issue_reopened`, `issue_commented`, and `issue_submitted` (only on `owner`, no content). Event 22: `merge_request_mergeability` |11 | `EventService` | `Watch` (streamed, resumable). Topics `home`, `repo:<name>` and `owner` (owner rights only). Events 17–21: `issue_opened`, `issue_closed`, `issue_reopened`, `issue_commented`, and `issue_submitted` (only on `owner`, no content). Event 22: `merge_request_mergeability` |
M gen/ermite/ermiteconnect/merge_request.connect.go +57 -12
@@ -59,6 +59,9 @@ const (
5959 // MergeRequestServiceCloseMergeRequestProcedure is the fully-qualified name of the
6060 // MergeRequestService's CloseMergeRequest RPC.
6161 MergeRequestServiceCloseMergeRequestProcedure = "/ermite.MergeRequestService/CloseMergeRequest"
62+ // MergeRequestServiceMarkReadyProcedure is the fully-qualified name of the MergeRequestService's
63+ // MarkReady RPC.
64+ MergeRequestServiceMarkReadyProcedure = "/ermite.MergeRequestService/MarkReady"
6265 // MergeRequestServiceMergeMergeRequestProcedure is the fully-qualified name of the
6366 // MergeRequestService's MergeMergeRequest RPC.
6467 MergeRequestServiceMergeMergeRequestProcedure = "/ermite.MergeRequestService/MergeMergeRequest"
@@ -127,7 +130,16 @@ type MergeRequestServiceClient interface {
127130 // the mr:write scope. Fails with failed_precondition if the merge request
128131 // is not open. A closed merge request cannot be reopened: open a new one.
129132 CloseMergeRequest(context.Context, *connect.Request[ermite.CloseMergeRequestRequest]) (*connect.Response[ermite.CloseMergeRequestResponse], error)
130- // MergeMergeRequest merges an open merge request. Needs the mr:merge scope.
133+ // MarkReady removes the draft prefix ("WIP:" or "[WIP]") from the title so
134+ // the merge request can be merged. Needs the mr:write scope. Fails with
135+ // failed_precondition if the merge request is not open or is not a draft.
136+ // Publishes no event: there is none for a change of title. Needs the
137+ // "merge_requests.ready" feature.
138+ MarkReady(context.Context, *connect.Request[ermite.MarkReadyRequest]) (*connect.Response[ermite.MarkReadyResponse], error)
139+ // MergeMergeRequest merges an open merge request. Needs the mr:merge scope,
140+ // which merges only when the checks on the head allow it: none failed and
141+ // none queued or running (a head with no checks may be merged; success,
142+ // skipped and neutral pass). The mr:force-merge scope allows ignore_checks.
131143 // The caller passes the head it reviewed: the server merges only if the
132144 // source branch still points to it, so a push between review and merge is
133145 // never merged unseen. Fails with invalid_argument if head_id is empty or
@@ -137,17 +149,17 @@ type MergeRequestServiceClient interface {
137149 // ancestor of the head (rebase and push again, or merge with squash or
138150 // merge commit), if the mode is squash or merge commit and the head
139151 // conflicts with the target or shares no history with it (rebase and push
140- // again), if the mode is not allowed by RepoSettings, or if a check fails
141- // and RepoSettings.failing_checks_block is set. Merges of one
152+ // again), if the mode is not allowed by RepoSettings, or if a check failed or
153+ // has not finished, unless ignore_checks is set. Merges of one
142154 // repository run one at a time. Repeating a call that succeeded fails with
143155 // failed_precondition (not open). On success the server publishes
144156 // MergeRequestMerged then Pushed for the target branch.
145157 MergeMergeRequest(context.Context, *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error)
146158 // EnableAutoMerge asks the server to merge an open merge request by itself
147159 // once at least one check passed on its head, every run created on that head
148- // is complete, and the merge would be accepted whatever
149- // RepoSettings.failing_checks_block says. Needs the mr:merge scope and, for a
150- // token limited to branches, write access to the target branch
160+ // is complete, and no check failed. It does not take ignore_checks. Needs
161+ // the mr:merge scope and, for a token limited to branches, write access to
162+ // the target branch
151163 // (permission_denied otherwise). The server records the caller, the mode and
152164 // the head the caller saw; it merges as the caller, after resolving the caller
153165 // again, and cancels the auto-merge if the caller can no longer merge, if the
@@ -232,6 +244,12 @@ func NewMergeRequestServiceClient(httpClient connect.HTTPClient, baseURL string,
232244 connect.WithSchema(mergeRequestServiceMethods.ByName("CloseMergeRequest")),
233245 connect.WithClientOptions(opts...),
234246 ),
247+ markReady: connect.NewClient[ermite.MarkReadyRequest, ermite.MarkReadyResponse](
248+ httpClient,
249+ baseURL+MergeRequestServiceMarkReadyProcedure,
250+ connect.WithSchema(mergeRequestServiceMethods.ByName("MarkReady")),
251+ connect.WithClientOptions(opts...),
252+ ),
235253 mergeMergeRequest: connect.NewClient[ermite.MergeMergeRequestRequest, ermite.MergeMergeRequestResponse](
236254 httpClient,
237255 baseURL+MergeRequestServiceMergeMergeRequestProcedure,
@@ -269,6 +287,7 @@ type mergeRequestServiceClient struct {
269287 deleteComment *connect.Client[ermite.DeleteCommentRequest, ermite.DeleteCommentResponse]
270288 resolveComment *connect.Client[ermite.ResolveCommentRequest, ermite.ResolveCommentResponse]
271289 closeMergeRequest *connect.Client[ermite.CloseMergeRequestRequest, ermite.CloseMergeRequestResponse]
290+ markReady *connect.Client[ermite.MarkReadyRequest, ermite.MarkReadyResponse]
272291 mergeMergeRequest *connect.Client[ermite.MergeMergeRequestRequest, ermite.MergeMergeRequestResponse]
273292 enableAutoMerge *connect.Client[ermite.EnableAutoMergeRequest, ermite.EnableAutoMergeResponse]
274293 cancelAutoMerge *connect.Client[ermite.CancelAutoMergeRequest, ermite.CancelAutoMergeResponse]
@@ -315,6 +334,11 @@ func (c *mergeRequestServiceClient) CloseMergeRequest(ctx context.Context, req *
315334 return c.closeMergeRequest.CallUnary(ctx, req)
316335 }
317336
337+// MarkReady calls ermite.MergeRequestService.MarkReady.
338+func (c *mergeRequestServiceClient) MarkReady(ctx context.Context, req *connect.Request[ermite.MarkReadyRequest]) (*connect.Response[ermite.MarkReadyResponse], error) {
339+ return c.markReady.CallUnary(ctx, req)
340+}
341+
318342 // MergeMergeRequest calls ermite.MergeRequestService.MergeMergeRequest.
319343 func (c *mergeRequestServiceClient) MergeMergeRequest(ctx context.Context, req *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error) {
320344 return c.mergeMergeRequest.CallUnary(ctx, req)
@@ -389,7 +413,16 @@ type MergeRequestServiceHandler interface {
389413 // the mr:write scope. Fails with failed_precondition if the merge request
390414 // is not open. A closed merge request cannot be reopened: open a new one.
391415 CloseMergeRequest(context.Context, *connect.Request[ermite.CloseMergeRequestRequest]) (*connect.Response[ermite.CloseMergeRequestResponse], error)
392- // MergeMergeRequest merges an open merge request. Needs the mr:merge scope.
416+ // MarkReady removes the draft prefix ("WIP:" or "[WIP]") from the title so
417+ // the merge request can be merged. Needs the mr:write scope. Fails with
418+ // failed_precondition if the merge request is not open or is not a draft.
419+ // Publishes no event: there is none for a change of title. Needs the
420+ // "merge_requests.ready" feature.
421+ MarkReady(context.Context, *connect.Request[ermite.MarkReadyRequest]) (*connect.Response[ermite.MarkReadyResponse], error)
422+ // MergeMergeRequest merges an open merge request. Needs the mr:merge scope,
423+ // which merges only when the checks on the head allow it: none failed and
424+ // none queued or running (a head with no checks may be merged; success,
425+ // skipped and neutral pass). The mr:force-merge scope allows ignore_checks.
393426 // The caller passes the head it reviewed: the server merges only if the
394427 // source branch still points to it, so a push between review and merge is
395428 // never merged unseen. Fails with invalid_argument if head_id is empty or
@@ -399,17 +432,17 @@ type MergeRequestServiceHandler interface {
399432 // ancestor of the head (rebase and push again, or merge with squash or
400433 // merge commit), if the mode is squash or merge commit and the head
401434 // conflicts with the target or shares no history with it (rebase and push
402- // again), if the mode is not allowed by RepoSettings, or if a check fails
403- // and RepoSettings.failing_checks_block is set. Merges of one
435+ // again), if the mode is not allowed by RepoSettings, or if a check failed or
436+ // has not finished, unless ignore_checks is set. Merges of one
404437 // repository run one at a time. Repeating a call that succeeded fails with
405438 // failed_precondition (not open). On success the server publishes
406439 // MergeRequestMerged then Pushed for the target branch.
407440 MergeMergeRequest(context.Context, *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error)
408441 // EnableAutoMerge asks the server to merge an open merge request by itself
409442 // once at least one check passed on its head, every run created on that head
410- // is complete, and the merge would be accepted whatever
411- // RepoSettings.failing_checks_block says. Needs the mr:merge scope and, for a
412- // token limited to branches, write access to the target branch
443+ // is complete, and no check failed. It does not take ignore_checks. Needs
444+ // the mr:merge scope and, for a token limited to branches, write access to
445+ // the target branch
413446 // (permission_denied otherwise). The server records the caller, the mode and
414447 // the head the caller saw; it merges as the caller, after resolving the caller
415448 // again, and cancels the auto-merge if the caller can no longer merge, if the
@@ -490,6 +523,12 @@ func NewMergeRequestServiceHandler(svc MergeRequestServiceHandler, opts ...conne
490523 connect.WithSchema(mergeRequestServiceMethods.ByName("CloseMergeRequest")),
491524 connect.WithHandlerOptions(opts...),
492525 )
526+ mergeRequestServiceMarkReadyHandler := connect.NewUnaryHandler(
527+ MergeRequestServiceMarkReadyProcedure,
528+ svc.MarkReady,
529+ connect.WithSchema(mergeRequestServiceMethods.ByName("MarkReady")),
530+ connect.WithHandlerOptions(opts...),
531+ )
493532 mergeRequestServiceMergeMergeRequestHandler := connect.NewUnaryHandler(
494533 MergeRequestServiceMergeMergeRequestProcedure,
495534 svc.MergeMergeRequest,
@@ -532,6 +571,8 @@ func NewMergeRequestServiceHandler(svc MergeRequestServiceHandler, opts ...conne
532571 mergeRequestServiceResolveCommentHandler.ServeHTTP(w, r)
533572 case MergeRequestServiceCloseMergeRequestProcedure:
534573 mergeRequestServiceCloseMergeRequestHandler.ServeHTTP(w, r)
574+ case MergeRequestServiceMarkReadyProcedure:
575+ mergeRequestServiceMarkReadyHandler.ServeHTTP(w, r)
535576 case MergeRequestServiceMergeMergeRequestProcedure:
536577 mergeRequestServiceMergeMergeRequestHandler.ServeHTTP(w, r)
537578 case MergeRequestServiceEnableAutoMergeProcedure:
@@ -581,6 +622,10 @@ func (UnimplementedMergeRequestServiceHandler) CloseMergeRequest(context.Context
581622 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.MergeRequestService.CloseMergeRequest is not implemented"))
582623 }
583624
625+func (UnimplementedMergeRequestServiceHandler) MarkReady(context.Context, *connect.Request[ermite.MarkReadyRequest]) (*connect.Response[ermite.MarkReadyResponse], error) {
626+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.MergeRequestService.MarkReady is not implemented"))
627+}
628+
584629 func (UnimplementedMergeRequestServiceHandler) MergeMergeRequest(context.Context, *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error) {
585630 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.MergeRequestService.MergeMergeRequest is not implemented"))
586631 }
@@ -59,6 +59,9 @@ const (
59 // MergeRequestServiceCloseMergeRequestProcedure is the fully-qualified name of the59 // MergeRequestServiceCloseMergeRequestProcedure is the fully-qualified name of the
60 // MergeRequestService's CloseMergeRequest RPC.60 // MergeRequestService's CloseMergeRequest RPC.
61 MergeRequestServiceCloseMergeRequestProcedure = "/ermite.MergeRequestService/CloseMergeRequest"61 MergeRequestServiceCloseMergeRequestProcedure = "/ermite.MergeRequestService/CloseMergeRequest"
62+ // MergeRequestServiceMarkReadyProcedure is the fully-qualified name of the MergeRequestService's
63+ // MarkReady RPC.
64+ MergeRequestServiceMarkReadyProcedure = "/ermite.MergeRequestService/MarkReady"
62 // MergeRequestServiceMergeMergeRequestProcedure is the fully-qualified name of the65 // MergeRequestServiceMergeMergeRequestProcedure is the fully-qualified name of the
63 // MergeRequestService's MergeMergeRequest RPC.66 // MergeRequestService's MergeMergeRequest RPC.
64 MergeRequestServiceMergeMergeRequestProcedure = "/ermite.MergeRequestService/MergeMergeRequest"67 MergeRequestServiceMergeMergeRequestProcedure = "/ermite.MergeRequestService/MergeMergeRequest"
@@ -127,7 +130,16 @@ type MergeRequestServiceClient interface {
127 // the mr:write scope. Fails with failed_precondition if the merge request130 // the mr:write scope. Fails with failed_precondition if the merge request
128 // is not open. A closed merge request cannot be reopened: open a new one.131 // is not open. A closed merge request cannot be reopened: open a new one.
129 CloseMergeRequest(context.Context, *connect.Request[ermite.CloseMergeRequestRequest]) (*connect.Response[ermite.CloseMergeRequestResponse], error)132 CloseMergeRequest(context.Context, *connect.Request[ermite.CloseMergeRequestRequest]) (*connect.Response[ermite.CloseMergeRequestResponse], error)
130- // MergeMergeRequest merges an open merge request. Needs the mr:merge scope.133+ // MarkReady removes the draft prefix ("WIP:" or "[WIP]") from the title so
134+ // the merge request can be merged. Needs the mr:write scope. Fails with
135+ // failed_precondition if the merge request is not open or is not a draft.
136+ // Publishes no event: there is none for a change of title. Needs the
137+ // "merge_requests.ready" feature.
138+ MarkReady(context.Context, *connect.Request[ermite.MarkReadyRequest]) (*connect.Response[ermite.MarkReadyResponse], error)
139+ // MergeMergeRequest merges an open merge request. Needs the mr:merge scope,
140+ // which merges only when the checks on the head allow it: none failed and
141+ // none queued or running (a head with no checks may be merged; success,
142+ // skipped and neutral pass). The mr:force-merge scope allows ignore_checks.
131 // The caller passes the head it reviewed: the server merges only if the143 // The caller passes the head it reviewed: the server merges only if the
132 // source branch still points to it, so a push between review and merge is144 // source branch still points to it, so a push between review and merge is
133 // never merged unseen. Fails with invalid_argument if head_id is empty or145 // never merged unseen. Fails with invalid_argument if head_id is empty or
@@ -137,17 +149,17 @@ type MergeRequestServiceClient interface {
137 // ancestor of the head (rebase and push again, or merge with squash or149 // ancestor of the head (rebase and push again, or merge with squash or
138 // merge commit), if the mode is squash or merge commit and the head150 // merge commit), if the mode is squash or merge commit and the head
139 // conflicts with the target or shares no history with it (rebase and push151 // conflicts with the target or shares no history with it (rebase and push
140- // again), if the mode is not allowed by RepoSettings, or if a check fails152+ // again), if the mode is not allowed by RepoSettings, or if a check failed or
141- // and RepoSettings.failing_checks_block is set. Merges of one153+ // has not finished, unless ignore_checks is set. Merges of one
142 // repository run one at a time. Repeating a call that succeeded fails with154 // repository run one at a time. Repeating a call that succeeded fails with
143 // failed_precondition (not open). On success the server publishes155 // failed_precondition (not open). On success the server publishes
144 // MergeRequestMerged then Pushed for the target branch.156 // MergeRequestMerged then Pushed for the target branch.
145 MergeMergeRequest(context.Context, *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error)157 MergeMergeRequest(context.Context, *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error)
146 // EnableAutoMerge asks the server to merge an open merge request by itself158 // EnableAutoMerge asks the server to merge an open merge request by itself
147 // once at least one check passed on its head, every run created on that head159 // once at least one check passed on its head, every run created on that head
148- // is complete, and the merge would be accepted whatever160+ // is complete, and no check failed. It does not take ignore_checks. Needs
149- // RepoSettings.failing_checks_block says. Needs the mr:merge scope and, for a161+ // the mr:merge scope and, for a token limited to branches, write access to
150- // token limited to branches, write access to the target branch162+ // the target branch
151 // (permission_denied otherwise). The server records the caller, the mode and163 // (permission_denied otherwise). The server records the caller, the mode and
152 // the head the caller saw; it merges as the caller, after resolving the caller164 // the head the caller saw; it merges as the caller, after resolving the caller
153 // again, and cancels the auto-merge if the caller can no longer merge, if the165 // again, and cancels the auto-merge if the caller can no longer merge, if the
@@ -232,6 +244,12 @@ func NewMergeRequestServiceClient(httpClient connect.HTTPClient, baseURL string,
232 connect.WithSchema(mergeRequestServiceMethods.ByName("CloseMergeRequest")),244 connect.WithSchema(mergeRequestServiceMethods.ByName("CloseMergeRequest")),
233 connect.WithClientOptions(opts...),245 connect.WithClientOptions(opts...),
234 ),246 ),
247+ markReady: connect.NewClient[ermite.MarkReadyRequest, ermite.MarkReadyResponse](
248+ httpClient,
249+ baseURL+MergeRequestServiceMarkReadyProcedure,
250+ connect.WithSchema(mergeRequestServiceMethods.ByName("MarkReady")),
251+ connect.WithClientOptions(opts...),
252+ ),
235 mergeMergeRequest: connect.NewClient[ermite.MergeMergeRequestRequest, ermite.MergeMergeRequestResponse](253 mergeMergeRequest: connect.NewClient[ermite.MergeMergeRequestRequest, ermite.MergeMergeRequestResponse](
236 httpClient,254 httpClient,
237 baseURL+MergeRequestServiceMergeMergeRequestProcedure,255 baseURL+MergeRequestServiceMergeMergeRequestProcedure,
@@ -269,6 +287,7 @@ type mergeRequestServiceClient struct {
269 deleteComment *connect.Client[ermite.DeleteCommentRequest, ermite.DeleteCommentResponse]287 deleteComment *connect.Client[ermite.DeleteCommentRequest, ermite.DeleteCommentResponse]
270 resolveComment *connect.Client[ermite.ResolveCommentRequest, ermite.ResolveCommentResponse]288 resolveComment *connect.Client[ermite.ResolveCommentRequest, ermite.ResolveCommentResponse]
271 closeMergeRequest *connect.Client[ermite.CloseMergeRequestRequest, ermite.CloseMergeRequestResponse]289 closeMergeRequest *connect.Client[ermite.CloseMergeRequestRequest, ermite.CloseMergeRequestResponse]
290+ markReady *connect.Client[ermite.MarkReadyRequest, ermite.MarkReadyResponse]
272 mergeMergeRequest *connect.Client[ermite.MergeMergeRequestRequest, ermite.MergeMergeRequestResponse]291 mergeMergeRequest *connect.Client[ermite.MergeMergeRequestRequest, ermite.MergeMergeRequestResponse]
273 enableAutoMerge *connect.Client[ermite.EnableAutoMergeRequest, ermite.EnableAutoMergeResponse]292 enableAutoMerge *connect.Client[ermite.EnableAutoMergeRequest, ermite.EnableAutoMergeResponse]
274 cancelAutoMerge *connect.Client[ermite.CancelAutoMergeRequest, ermite.CancelAutoMergeResponse]293 cancelAutoMerge *connect.Client[ermite.CancelAutoMergeRequest, ermite.CancelAutoMergeResponse]
@@ -315,6 +334,11 @@ func (c *mergeRequestServiceClient) CloseMergeRequest(ctx context.Context, req *
315 return c.closeMergeRequest.CallUnary(ctx, req)334 return c.closeMergeRequest.CallUnary(ctx, req)
316 }335 }
317 336
337+// MarkReady calls ermite.MergeRequestService.MarkReady.
338+func (c *mergeRequestServiceClient) MarkReady(ctx context.Context, req *connect.Request[ermite.MarkReadyRequest]) (*connect.Response[ermite.MarkReadyResponse], error) {
339+ return c.markReady.CallUnary(ctx, req)
340+}
341+
318 // MergeMergeRequest calls ermite.MergeRequestService.MergeMergeRequest.342 // MergeMergeRequest calls ermite.MergeRequestService.MergeMergeRequest.
319 func (c *mergeRequestServiceClient) MergeMergeRequest(ctx context.Context, req *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error) {343 func (c *mergeRequestServiceClient) MergeMergeRequest(ctx context.Context, req *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error) {
320 return c.mergeMergeRequest.CallUnary(ctx, req)344 return c.mergeMergeRequest.CallUnary(ctx, req)
@@ -389,7 +413,16 @@ type MergeRequestServiceHandler interface {
389 // the mr:write scope. Fails with failed_precondition if the merge request413 // the mr:write scope. Fails with failed_precondition if the merge request
390 // is not open. A closed merge request cannot be reopened: open a new one.414 // is not open. A closed merge request cannot be reopened: open a new one.
391 CloseMergeRequest(context.Context, *connect.Request[ermite.CloseMergeRequestRequest]) (*connect.Response[ermite.CloseMergeRequestResponse], error)415 CloseMergeRequest(context.Context, *connect.Request[ermite.CloseMergeRequestRequest]) (*connect.Response[ermite.CloseMergeRequestResponse], error)
392- // MergeMergeRequest merges an open merge request. Needs the mr:merge scope.416+ // MarkReady removes the draft prefix ("WIP:" or "[WIP]") from the title so
417+ // the merge request can be merged. Needs the mr:write scope. Fails with
418+ // failed_precondition if the merge request is not open or is not a draft.
419+ // Publishes no event: there is none for a change of title. Needs the
420+ // "merge_requests.ready" feature.
421+ MarkReady(context.Context, *connect.Request[ermite.MarkReadyRequest]) (*connect.Response[ermite.MarkReadyResponse], error)
422+ // MergeMergeRequest merges an open merge request. Needs the mr:merge scope,
423+ // which merges only when the checks on the head allow it: none failed and
424+ // none queued or running (a head with no checks may be merged; success,
425+ // skipped and neutral pass). The mr:force-merge scope allows ignore_checks.
393 // The caller passes the head it reviewed: the server merges only if the426 // The caller passes the head it reviewed: the server merges only if the
394 // source branch still points to it, so a push between review and merge is427 // source branch still points to it, so a push between review and merge is
395 // never merged unseen. Fails with invalid_argument if head_id is empty or428 // never merged unseen. Fails with invalid_argument if head_id is empty or
@@ -399,17 +432,17 @@ type MergeRequestServiceHandler interface {
399 // ancestor of the head (rebase and push again, or merge with squash or432 // ancestor of the head (rebase and push again, or merge with squash or
400 // merge commit), if the mode is squash or merge commit and the head433 // merge commit), if the mode is squash or merge commit and the head
401 // conflicts with the target or shares no history with it (rebase and push434 // conflicts with the target or shares no history with it (rebase and push
402- // again), if the mode is not allowed by RepoSettings, or if a check fails435+ // again), if the mode is not allowed by RepoSettings, or if a check failed or
403- // and RepoSettings.failing_checks_block is set. Merges of one436+ // has not finished, unless ignore_checks is set. Merges of one
404 // repository run one at a time. Repeating a call that succeeded fails with437 // repository run one at a time. Repeating a call that succeeded fails with
405 // failed_precondition (not open). On success the server publishes438 // failed_precondition (not open). On success the server publishes
406 // MergeRequestMerged then Pushed for the target branch.439 // MergeRequestMerged then Pushed for the target branch.
407 MergeMergeRequest(context.Context, *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error)440 MergeMergeRequest(context.Context, *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error)
408 // EnableAutoMerge asks the server to merge an open merge request by itself441 // EnableAutoMerge asks the server to merge an open merge request by itself
409 // once at least one check passed on its head, every run created on that head442 // once at least one check passed on its head, every run created on that head
410- // is complete, and the merge would be accepted whatever443+ // is complete, and no check failed. It does not take ignore_checks. Needs
411- // RepoSettings.failing_checks_block says. Needs the mr:merge scope and, for a444+ // the mr:merge scope and, for a token limited to branches, write access to
412- // token limited to branches, write access to the target branch445+ // the target branch
413 // (permission_denied otherwise). The server records the caller, the mode and446 // (permission_denied otherwise). The server records the caller, the mode and
414 // the head the caller saw; it merges as the caller, after resolving the caller447 // the head the caller saw; it merges as the caller, after resolving the caller
415 // again, and cancels the auto-merge if the caller can no longer merge, if the448 // again, and cancels the auto-merge if the caller can no longer merge, if the
@@ -490,6 +523,12 @@ func NewMergeRequestServiceHandler(svc MergeRequestServiceHandler, opts ...conne
490 connect.WithSchema(mergeRequestServiceMethods.ByName("CloseMergeRequest")),523 connect.WithSchema(mergeRequestServiceMethods.ByName("CloseMergeRequest")),
491 connect.WithHandlerOptions(opts...),524 connect.WithHandlerOptions(opts...),
492 )525 )
526+ mergeRequestServiceMarkReadyHandler := connect.NewUnaryHandler(
527+ MergeRequestServiceMarkReadyProcedure,
528+ svc.MarkReady,
529+ connect.WithSchema(mergeRequestServiceMethods.ByName("MarkReady")),
530+ connect.WithHandlerOptions(opts...),
531+ )
493 mergeRequestServiceMergeMergeRequestHandler := connect.NewUnaryHandler(532 mergeRequestServiceMergeMergeRequestHandler := connect.NewUnaryHandler(
494 MergeRequestServiceMergeMergeRequestProcedure,533 MergeRequestServiceMergeMergeRequestProcedure,
495 svc.MergeMergeRequest,534 svc.MergeMergeRequest,
@@ -532,6 +571,8 @@ func NewMergeRequestServiceHandler(svc MergeRequestServiceHandler, opts ...conne
532 mergeRequestServiceResolveCommentHandler.ServeHTTP(w, r)571 mergeRequestServiceResolveCommentHandler.ServeHTTP(w, r)
533 case MergeRequestServiceCloseMergeRequestProcedure:572 case MergeRequestServiceCloseMergeRequestProcedure:
534 mergeRequestServiceCloseMergeRequestHandler.ServeHTTP(w, r)573 mergeRequestServiceCloseMergeRequestHandler.ServeHTTP(w, r)
574+ case MergeRequestServiceMarkReadyProcedure:
575+ mergeRequestServiceMarkReadyHandler.ServeHTTP(w, r)
535 case MergeRequestServiceMergeMergeRequestProcedure:576 case MergeRequestServiceMergeMergeRequestProcedure:
536 mergeRequestServiceMergeMergeRequestHandler.ServeHTTP(w, r)577 mergeRequestServiceMergeMergeRequestHandler.ServeHTTP(w, r)
537 case MergeRequestServiceEnableAutoMergeProcedure:578 case MergeRequestServiceEnableAutoMergeProcedure:
@@ -581,6 +622,10 @@ func (UnimplementedMergeRequestServiceHandler) CloseMergeRequest(context.Context
581 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.MergeRequestService.CloseMergeRequest is not implemented"))622 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.MergeRequestService.CloseMergeRequest is not implemented"))
582 }623 }
583 624
625+func (UnimplementedMergeRequestServiceHandler) MarkReady(context.Context, *connect.Request[ermite.MarkReadyRequest]) (*connect.Response[ermite.MarkReadyResponse], error) {
626+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.MergeRequestService.MarkReady is not implemented"))
627+}
628+
584 func (UnimplementedMergeRequestServiceHandler) MergeMergeRequest(context.Context, *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error) {629 func (UnimplementedMergeRequestServiceHandler) MergeMergeRequest(context.Context, *connect.Request[ermite.MergeMergeRequestRequest]) (*connect.Response[ermite.MergeMergeRequestResponse], error) {
585 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.MergeRequestService.MergeMergeRequest is not implemented"))630 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.MergeRequestService.MergeMergeRequest is not implemented"))
586 }631 }
M gen/ermite/merge_request.pb.go +217 -91
@@ -2017,6 +2017,108 @@ func (x *CloseMergeRequestResponse) GetMergeRequest() *MergeRequest {
20172017 return nil
20182018 }
20192019
2020+// MarkReadyRequest names the draft merge request to mark ready.
2021+type MarkReadyRequest struct {
2022+ state protoimpl.MessageState `protogen:"open.v1"`
2023+ // Repo is the repository name.
2024+ Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2025+ // Number is the merge request number.
2026+ Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2027+ unknownFields protoimpl.UnknownFields
2028+ sizeCache protoimpl.SizeCache
2029+}
2030+
2031+func (x *MarkReadyRequest) Reset() {
2032+ *x = MarkReadyRequest{}
2033+ mi := &file_ermite_merge_request_proto_msgTypes[21]
2034+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2035+ ms.StoreMessageInfo(mi)
2036+}
2037+
2038+func (x *MarkReadyRequest) String() string {
2039+ return protoimpl.X.MessageStringOf(x)
2040+}
2041+
2042+func (*MarkReadyRequest) ProtoMessage() {}
2043+
2044+func (x *MarkReadyRequest) ProtoReflect() protoreflect.Message {
2045+ mi := &file_ermite_merge_request_proto_msgTypes[21]
2046+ if x != nil {
2047+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2048+ if ms.LoadMessageInfo() == nil {
2049+ ms.StoreMessageInfo(mi)
2050+ }
2051+ return ms
2052+ }
2053+ return mi.MessageOf(x)
2054+}
2055+
2056+// Deprecated: Use MarkReadyRequest.ProtoReflect.Descriptor instead.
2057+func (*MarkReadyRequest) Descriptor() ([]byte, []int) {
2058+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}
2059+}
2060+
2061+func (x *MarkReadyRequest) GetRepo() string {
2062+ if x != nil {
2063+ return x.Repo
2064+ }
2065+ return ""
2066+}
2067+
2068+func (x *MarkReadyRequest) GetNumber() int64 {
2069+ if x != nil {
2070+ return x.Number
2071+ }
2072+ return 0
2073+}
2074+
2075+// MarkReadyResponse holds the merge request after marking it ready.
2076+type MarkReadyResponse struct {
2077+ state protoimpl.MessageState `protogen:"open.v1"`
2078+ // MergeRequest is the merge request with its title stripped of the draft
2079+ // prefix.
2080+ MergeRequest *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2081+ unknownFields protoimpl.UnknownFields
2082+ sizeCache protoimpl.SizeCache
2083+}
2084+
2085+func (x *MarkReadyResponse) Reset() {
2086+ *x = MarkReadyResponse{}
2087+ mi := &file_ermite_merge_request_proto_msgTypes[22]
2088+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2089+ ms.StoreMessageInfo(mi)
2090+}
2091+
2092+func (x *MarkReadyResponse) String() string {
2093+ return protoimpl.X.MessageStringOf(x)
2094+}
2095+
2096+func (*MarkReadyResponse) ProtoMessage() {}
2097+
2098+func (x *MarkReadyResponse) ProtoReflect() protoreflect.Message {
2099+ mi := &file_ermite_merge_request_proto_msgTypes[22]
2100+ if x != nil {
2101+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2102+ if ms.LoadMessageInfo() == nil {
2103+ ms.StoreMessageInfo(mi)
2104+ }
2105+ return ms
2106+ }
2107+ return mi.MessageOf(x)
2108+}
2109+
2110+// Deprecated: Use MarkReadyResponse.ProtoReflect.Descriptor instead.
2111+func (*MarkReadyResponse) Descriptor() ([]byte, []int) {
2112+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}
2113+}
2114+
2115+func (x *MarkReadyResponse) GetMergeRequest() *MergeRequest {
2116+ if x != nil {
2117+ return x.MergeRequest
2118+ }
2119+ return nil
2120+}
2121+
20202122 // MergeMergeRequestRequest describes the merge to perform.
20212123 type MergeMergeRequestRequest struct {
20222124 state protoimpl.MessageState `protogen:"open.v1"`
@@ -2037,13 +2139,18 @@ type MergeMergeRequestRequest struct {
20372139 // request. Servers without the "merge_requests.delete_branch" feature ignore
20382140 // it.
20392141 DeleteSourceBranch bool `protobuf:"varint,5,opt,name=delete_source_branch,json=deleteSourceBranch,proto3" json:"delete_source_branch,omitempty"`
2040- unknownFields protoimpl.UnknownFields
2041- sizeCache protoimpl.SizeCache
2142+ // IgnoreChecks merges whatever the checks say. Needs the mr:force-merge
2143+ // scope (permission_denied otherwise). Servers without the
2144+ // "merge_requests.ignore_checks" feature ignore it: check the feature
2145+ // before setting it.
2146+ IgnoreChecks bool `protobuf:"varint,6,opt,name=ignore_checks,json=ignoreChecks,proto3" json:"ignore_checks,omitempty"`
2147+ unknownFields protoimpl.UnknownFields
2148+ sizeCache protoimpl.SizeCache
20422149 }
20432150
20442151 func (x *MergeMergeRequestRequest) Reset() {
20452152 *x = MergeMergeRequestRequest{}
2046- mi := &file_ermite_merge_request_proto_msgTypes[21]
2153+ mi := &file_ermite_merge_request_proto_msgTypes[23]
20472154 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
20482155 ms.StoreMessageInfo(mi)
20492156 }
@@ -2055,7 +2162,7 @@ func (x *MergeMergeRequestRequest) String() string {
20552162 func (*MergeMergeRequestRequest) ProtoMessage() {}
20562163
20572164 func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
2058- mi := &file_ermite_merge_request_proto_msgTypes[21]
2165+ mi := &file_ermite_merge_request_proto_msgTypes[23]
20592166 if x != nil {
20602167 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
20612168 if ms.LoadMessageInfo() == nil {
@@ -2068,7 +2175,7 @@ func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
20682175
20692176 // Deprecated: Use MergeMergeRequestRequest.ProtoReflect.Descriptor instead.
20702177 func (*MergeMergeRequestRequest) Descriptor() ([]byte, []int) {
2071- return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}
2178+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}
20722179 }
20732180
20742181 func (x *MergeMergeRequestRequest) GetRepo() string {
@@ -2106,6 +2213,13 @@ func (x *MergeMergeRequestRequest) GetDeleteSourceBranch() bool {
21062213 return false
21072214 }
21082215
2216+func (x *MergeMergeRequestRequest) GetIgnoreChecks() bool {
2217+ if x != nil {
2218+ return x.IgnoreChecks
2219+ }
2220+ return false
2221+}
2222+
21092223 // MergeMergeRequestResponse holds the merged merge request.
21102224 type MergeMergeRequestResponse struct {
21112225 state protoimpl.MessageState `protogen:"open.v1"`
@@ -2125,7 +2239,7 @@ type MergeMergeRequestResponse struct {
21252239
21262240 func (x *MergeMergeRequestResponse) Reset() {
21272241 *x = MergeMergeRequestResponse{}
2128- mi := &file_ermite_merge_request_proto_msgTypes[22]
2242+ mi := &file_ermite_merge_request_proto_msgTypes[24]
21292243 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
21302244 ms.StoreMessageInfo(mi)
21312245 }
@@ -2137,7 +2251,7 @@ func (x *MergeMergeRequestResponse) String() string {
21372251 func (*MergeMergeRequestResponse) ProtoMessage() {}
21382252
21392253 func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
2140- mi := &file_ermite_merge_request_proto_msgTypes[22]
2254+ mi := &file_ermite_merge_request_proto_msgTypes[24]
21412255 if x != nil {
21422256 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
21432257 if ms.LoadMessageInfo() == nil {
@@ -2150,7 +2264,7 @@ func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
21502264
21512265 // Deprecated: Use MergeMergeRequestResponse.ProtoReflect.Descriptor instead.
21522266 func (*MergeMergeRequestResponse) Descriptor() ([]byte, []int) {
2153- return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}
2267+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}
21542268 }
21552269
21562270 func (x *MergeMergeRequestResponse) GetMergeRequest() *MergeRequest {
@@ -2188,7 +2302,7 @@ type EnableAutoMergeRequest struct {
21882302
21892303 func (x *EnableAutoMergeRequest) Reset() {
21902304 *x = EnableAutoMergeRequest{}
2191- mi := &file_ermite_merge_request_proto_msgTypes[23]
2305+ mi := &file_ermite_merge_request_proto_msgTypes[25]
21922306 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
21932307 ms.StoreMessageInfo(mi)
21942308 }
@@ -2200,7 +2314,7 @@ func (x *EnableAutoMergeRequest) String() string {
22002314 func (*EnableAutoMergeRequest) ProtoMessage() {}
22012315
22022316 func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
2203- mi := &file_ermite_merge_request_proto_msgTypes[23]
2317+ mi := &file_ermite_merge_request_proto_msgTypes[25]
22042318 if x != nil {
22052319 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
22062320 if ms.LoadMessageInfo() == nil {
@@ -2213,7 +2327,7 @@ func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
22132327
22142328 // Deprecated: Use EnableAutoMergeRequest.ProtoReflect.Descriptor instead.
22152329 func (*EnableAutoMergeRequest) Descriptor() ([]byte, []int) {
2216- return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}
2330+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}
22172331 }
22182332
22192333 func (x *EnableAutoMergeRequest) GetRepo() string {
@@ -2255,7 +2369,7 @@ type EnableAutoMergeResponse struct {
22552369
22562370 func (x *EnableAutoMergeResponse) Reset() {
22572371 *x = EnableAutoMergeResponse{}
2258- mi := &file_ermite_merge_request_proto_msgTypes[24]
2372+ mi := &file_ermite_merge_request_proto_msgTypes[26]
22592373 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
22602374 ms.StoreMessageInfo(mi)
22612375 }
@@ -2267,7 +2381,7 @@ func (x *EnableAutoMergeResponse) String() string {
22672381 func (*EnableAutoMergeResponse) ProtoMessage() {}
22682382
22692383 func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
2270- mi := &file_ermite_merge_request_proto_msgTypes[24]
2384+ mi := &file_ermite_merge_request_proto_msgTypes[26]
22712385 if x != nil {
22722386 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
22732387 if ms.LoadMessageInfo() == nil {
@@ -2280,7 +2394,7 @@ func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
22802394
22812395 // Deprecated: Use EnableAutoMergeResponse.ProtoReflect.Descriptor instead.
22822396 func (*EnableAutoMergeResponse) Descriptor() ([]byte, []int) {
2283- return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}
2397+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}
22842398 }
22852399
22862400 func (x *EnableAutoMergeResponse) GetMergeRequest() *MergeRequest {
@@ -2303,7 +2417,7 @@ type CancelAutoMergeRequest struct {
23032417
23042418 func (x *CancelAutoMergeRequest) Reset() {
23052419 *x = CancelAutoMergeRequest{}
2306- mi := &file_ermite_merge_request_proto_msgTypes[25]
2420+ mi := &file_ermite_merge_request_proto_msgTypes[27]
23072421 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
23082422 ms.StoreMessageInfo(mi)
23092423 }
@@ -2315,7 +2429,7 @@ func (x *CancelAutoMergeRequest) String() string {
23152429 func (*CancelAutoMergeRequest) ProtoMessage() {}
23162430
23172431 func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
2318- mi := &file_ermite_merge_request_proto_msgTypes[25]
2432+ mi := &file_ermite_merge_request_proto_msgTypes[27]
23192433 if x != nil {
23202434 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
23212435 if ms.LoadMessageInfo() == nil {
@@ -2328,7 +2442,7 @@ func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
23282442
23292443 // Deprecated: Use CancelAutoMergeRequest.ProtoReflect.Descriptor instead.
23302444 func (*CancelAutoMergeRequest) Descriptor() ([]byte, []int) {
2331- return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}
2445+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}
23322446 }
23332447
23342448 func (x *CancelAutoMergeRequest) GetRepo() string {
@@ -2356,7 +2470,7 @@ type CancelAutoMergeResponse struct {
23562470
23572471 func (x *CancelAutoMergeResponse) Reset() {
23582472 *x = CancelAutoMergeResponse{}
2359- mi := &file_ermite_merge_request_proto_msgTypes[26]
2473+ mi := &file_ermite_merge_request_proto_msgTypes[28]
23602474 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
23612475 ms.StoreMessageInfo(mi)
23622476 }
@@ -2368,7 +2482,7 @@ func (x *CancelAutoMergeResponse) String() string {
23682482 func (*CancelAutoMergeResponse) ProtoMessage() {}
23692483
23702484 func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
2371- mi := &file_ermite_merge_request_proto_msgTypes[26]
2485+ mi := &file_ermite_merge_request_proto_msgTypes[28]
23722486 if x != nil {
23732487 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
23742488 if ms.LoadMessageInfo() == nil {
@@ -2381,7 +2495,7 @@ func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
23812495
23822496 // Deprecated: Use CancelAutoMergeResponse.ProtoReflect.Descriptor instead.
23832497 func (*CancelAutoMergeResponse) Descriptor() ([]byte, []int) {
2384- return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}
2498+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}
23852499 }
23862500
23872501 func (x *CancelAutoMergeResponse) GetMergeRequest() *MergeRequest {
@@ -2408,7 +2522,7 @@ type MarkReadRequest struct {
24082522
24092523 func (x *MarkReadRequest) Reset() {
24102524 *x = MarkReadRequest{}
2411- mi := &file_ermite_merge_request_proto_msgTypes[27]
2525+ mi := &file_ermite_merge_request_proto_msgTypes[29]
24122526 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
24132527 ms.StoreMessageInfo(mi)
24142528 }
@@ -2420,7 +2534,7 @@ func (x *MarkReadRequest) String() string {
24202534 func (*MarkReadRequest) ProtoMessage() {}
24212535
24222536 func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
2423- mi := &file_ermite_merge_request_proto_msgTypes[27]
2537+ mi := &file_ermite_merge_request_proto_msgTypes[29]
24242538 if x != nil {
24252539 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
24262540 if ms.LoadMessageInfo() == nil {
@@ -2433,7 +2547,7 @@ func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
24332547
24342548 // Deprecated: Use MarkReadRequest.ProtoReflect.Descriptor instead.
24352549 func (*MarkReadRequest) Descriptor() ([]byte, []int) {
2436- return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}
2550+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{29}
24372551 }
24382552
24392553 func (x *MarkReadRequest) GetRepo() string {
@@ -2466,7 +2580,7 @@ type MarkReadResponse struct {
24662580
24672581 func (x *MarkReadResponse) Reset() {
24682582 *x = MarkReadResponse{}
2469- mi := &file_ermite_merge_request_proto_msgTypes[28]
2583+ mi := &file_ermite_merge_request_proto_msgTypes[30]
24702584 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
24712585 ms.StoreMessageInfo(mi)
24722586 }
@@ -2478,7 +2592,7 @@ func (x *MarkReadResponse) String() string {
24782592 func (*MarkReadResponse) ProtoMessage() {}
24792593
24802594 func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
2481- mi := &file_ermite_merge_request_proto_msgTypes[28]
2595+ mi := &file_ermite_merge_request_proto_msgTypes[30]
24822596 if x != nil {
24832597 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
24842598 if ms.LoadMessageInfo() == nil {
@@ -2491,7 +2605,7 @@ func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
24912605
24922606 // Deprecated: Use MarkReadResponse.ProtoReflect.Descriptor instead.
24932607 func (*MarkReadResponse) Descriptor() ([]byte, []int) {
2494- return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}
2608+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{30}
24952609 }
24962610
24972611 var File_ermite_merge_request_proto protoreflect.FileDescriptor
@@ -2641,13 +2755,19 @@ const file_ermite_merge_request_proto_rawDesc = "" +
26412755 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
26422756 "\x06number\x18\x02 \x01(\x03R\x06number\"V\n" +
26432757 "\x19CloseMergeRequestResponse\x129\n" +
2644- "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\xb8\x01\n" +
2758+ "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\">\n" +
2759+ "\x10MarkReadyRequest\x12\x12\n" +
2760+ "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2761+ "\x06number\x18\x02 \x01(\x03R\x06number\"N\n" +
2762+ "\x11MarkReadyResponse\x129\n" +
2763+ "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\xdd\x01\n" +
26452764 "\x18MergeMergeRequestRequest\x12\x12\n" +
26462765 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
26472766 "\x06number\x18\x02 \x01(\x03R\x06number\x12%\n" +
26482767 "\x04mode\x18\x03 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +
26492768 "\ahead_id\x18\x04 \x01(\tR\x06headId\x120\n" +
2650- "\x14delete_source_branch\x18\x05 \x01(\bR\x12deleteSourceBranch\"\x8a\x01\n" +
2769+ "\x14delete_source_branch\x18\x05 \x01(\bR\x12deleteSourceBranch\x12#\n" +
2770+ "\rignore_checks\x18\x06 \x01(\bR\fignoreChecks\"\x8a\x01\n" +
26512771 "\x19MergeMergeRequestResponse\x129\n" +
26522772 "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x122\n" +
26532773 "\x15source_branch_deleted\x18\x02 \x01(\bR\x13sourceBranchDeleted\"\x84\x01\n" +
@@ -2686,7 +2806,7 @@ const file_ermite_merge_request_proto_rawDesc = "" +
26862806 "\x1bMERGEABILITY_STATE_CHECKING\x10\x01\x12!\n" +
26872807 "\x1dMERGEABILITY_STATE_UP_TO_DATE\x10\x02\x12\x1d\n" +
26882808 "\x19MERGEABILITY_STATE_BEHIND\x10\x03\x12\x1f\n" +
2689- "\x1bMERGEABILITY_STATE_CONFLICT\x10\x042\xe7\a\n" +
2809+ "\x1bMERGEABILITY_STATE_CONFLICT\x10\x042\xa9\b\n" +
26902810 "\x13MergeRequestService\x12[\n" +
26912811 "\x12CreateMergeRequest\x12!.ermite.CreateMergeRequestRequest\x1a\".ermite.CreateMergeRequestResponse\x12X\n" +
26922812 "\x11ListMergeRequests\x12 .ermite.ListMergeRequestsRequest\x1a!.ermite.ListMergeRequestsResponse\x12R\n" +
@@ -2696,7 +2816,8 @@ const file_ermite_merge_request_proto_rawDesc = "" +
26962816 "\vEditComment\x12\x1a.ermite.EditCommentRequest\x1a\x1b.ermite.EditCommentResponse\x12L\n" +
26972817 "\rDeleteComment\x12\x1c.ermite.DeleteCommentRequest\x1a\x1d.ermite.DeleteCommentResponse\x12O\n" +
26982818 "\x0eResolveComment\x12\x1d.ermite.ResolveCommentRequest\x1a\x1e.ermite.ResolveCommentResponse\x12X\n" +
2699- "\x11CloseMergeRequest\x12 .ermite.CloseMergeRequestRequest\x1a!.ermite.CloseMergeRequestResponse\x12X\n" +
2819+ "\x11CloseMergeRequest\x12 .ermite.CloseMergeRequestRequest\x1a!.ermite.CloseMergeRequestResponse\x12@\n" +
2820+ "\tMarkReady\x12\x18.ermite.MarkReadyRequest\x1a\x19.ermite.MarkReadyResponse\x12X\n" +
27002821 "\x11MergeMergeRequest\x12 .ermite.MergeMergeRequestRequest\x1a!.ermite.MergeMergeRequestResponse\x12R\n" +
27012822 "\x0fEnableAutoMerge\x12\x1e.ermite.EnableAutoMergeRequest\x1a\x1f.ermite.EnableAutoMergeResponse\x12R\n" +
27022823 "\x0fCancelAutoMerge\x12\x1e.ermite.CancelAutoMergeRequest\x1a\x1f.ermite.CancelAutoMergeResponse\x12=\n" +
@@ -2717,7 +2838,7 @@ func file_ermite_merge_request_proto_rawDescGZIP() []byte {
27172838 }
27182839
27192840 var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
2720-var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
2841+var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
27212842 var file_ermite_merge_request_proto_goTypes = []any{
27222843 (MergeRequestState)(0), // 0: ermite.MergeRequestState
27232844 (DiffSide)(0), // 1: ermite.DiffSide
@@ -2744,44 +2865,46 @@ var file_ermite_merge_request_proto_goTypes = []any{
27442865 (*ResolveCommentResponse)(nil), // 22: ermite.ResolveCommentResponse
27452866 (*CloseMergeRequestRequest)(nil), // 23: ermite.CloseMergeRequestRequest
27462867 (*CloseMergeRequestResponse)(nil), // 24: ermite.CloseMergeRequestResponse
2747- (*MergeMergeRequestRequest)(nil), // 25: ermite.MergeMergeRequestRequest
2748- (*MergeMergeRequestResponse)(nil), // 26: ermite.MergeMergeRequestResponse
2749- (*EnableAutoMergeRequest)(nil), // 27: ermite.EnableAutoMergeRequest
2750- (*EnableAutoMergeResponse)(nil), // 28: ermite.EnableAutoMergeResponse
2751- (*CancelAutoMergeRequest)(nil), // 29: ermite.CancelAutoMergeRequest
2752- (*CancelAutoMergeResponse)(nil), // 30: ermite.CancelAutoMergeResponse
2753- (*MarkReadRequest)(nil), // 31: ermite.MarkReadRequest
2754- (*MarkReadResponse)(nil), // 32: ermite.MarkReadResponse
2755- (*timestamppb.Timestamp)(nil), // 33: google.protobuf.Timestamp
2756- (MergeMode)(0), // 34: ermite.MergeMode
2757- (*Commit)(nil), // 35: ermite.Commit
2758- (*DiffStats)(nil), // 36: ermite.DiffStats
2759- (*Diff)(nil), // 37: ermite.Diff
2868+ (*MarkReadyRequest)(nil), // 25: ermite.MarkReadyRequest
2869+ (*MarkReadyResponse)(nil), // 26: ermite.MarkReadyResponse
2870+ (*MergeMergeRequestRequest)(nil), // 27: ermite.MergeMergeRequestRequest
2871+ (*MergeMergeRequestResponse)(nil), // 28: ermite.MergeMergeRequestResponse
2872+ (*EnableAutoMergeRequest)(nil), // 29: ermite.EnableAutoMergeRequest
2873+ (*EnableAutoMergeResponse)(nil), // 30: ermite.EnableAutoMergeResponse
2874+ (*CancelAutoMergeRequest)(nil), // 31: ermite.CancelAutoMergeRequest
2875+ (*CancelAutoMergeResponse)(nil), // 32: ermite.CancelAutoMergeResponse
2876+ (*MarkReadRequest)(nil), // 33: ermite.MarkReadRequest
2877+ (*MarkReadResponse)(nil), // 34: ermite.MarkReadResponse
2878+ (*timestamppb.Timestamp)(nil), // 35: google.protobuf.Timestamp
2879+ (MergeMode)(0), // 36: ermite.MergeMode
2880+ (*Commit)(nil), // 37: ermite.Commit
2881+ (*DiffStats)(nil), // 38: ermite.DiffStats
2882+ (*Diff)(nil), // 39: ermite.Diff
27602883 }
27612884 var file_ermite_merge_request_proto_depIdxs = []int32{
27622885 3, // 0: ermite.Mergeability.state:type_name -> ermite.MergeabilityState
2763- 33, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp
2764- 34, // 2: ermite.AutoMerge.mode:type_name -> ermite.MergeMode
2765- 33, // 3: ermite.AutoMerge.enabled_at:type_name -> google.protobuf.Timestamp
2886+ 35, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp
2887+ 36, // 2: ermite.AutoMerge.mode:type_name -> ermite.MergeMode
2888+ 35, // 3: ermite.AutoMerge.enabled_at:type_name -> google.protobuf.Timestamp
27662889 0, // 4: ermite.MergeRequest.state:type_name -> ermite.MergeRequestState
2767- 33, // 5: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp
2768- 33, // 6: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp
2769- 34, // 7: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode
2890+ 35, // 5: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp
2891+ 35, // 6: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp
2892+ 36, // 7: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode
27702893 4, // 8: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability
27712894 5, // 9: ermite.MergeRequest.auto_merge:type_name -> ermite.AutoMerge
27722895 1, // 10: ermite.Comment.side:type_name -> ermite.DiffSide
2773- 33, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp
2896+ 35, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp
27742897 2, // 12: ermite.Comment.verdict:type_name -> ermite.Verdict
2775- 33, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp
2898+ 35, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp
27762899 2, // 14: ermite.AuthorVerdict.verdict:type_name -> ermite.Verdict
2777- 33, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp
2900+ 35, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp
27782901 6, // 16: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
27792902 0, // 17: ermite.ListMergeRequestsRequest.state:type_name -> ermite.MergeRequestState
27802903 6, // 18: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest
27812904 6, // 19: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2782- 35, // 20: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit
2783- 36, // 21: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats
2784- 37, // 22: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff
2905+ 37, // 20: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit
2906+ 38, // 21: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats
2907+ 39, // 22: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff
27852908 7, // 23: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment
27862909 8, // 24: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict
27872910 1, // 25: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide
@@ -2791,40 +2914,43 @@ var file_ermite_merge_request_proto_depIdxs = []int32{
27912914 7, // 29: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment
27922915 7, // 30: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment
27932916 6, // 31: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2794- 34, // 32: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode
2795- 6, // 33: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2796- 34, // 34: ermite.EnableAutoMergeRequest.mode:type_name -> ermite.MergeMode
2797- 6, // 35: ermite.EnableAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2798- 6, // 36: ermite.CancelAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2799- 9, // 37: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest
2800- 11, // 38: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest
2801- 13, // 39: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest
2802- 15, // 40: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest
2803- 17, // 41: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest
2804- 19, // 42: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest
2805- 21, // 43: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest
2806- 23, // 44: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest
2807- 25, // 45: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest
2808- 27, // 46: ermite.MergeRequestService.EnableAutoMerge:input_type -> ermite.EnableAutoMergeRequest
2809- 29, // 47: ermite.MergeRequestService.CancelAutoMerge:input_type -> ermite.CancelAutoMergeRequest
2810- 31, // 48: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest
2811- 10, // 49: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse
2812- 12, // 50: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse
2813- 14, // 51: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse
2814- 16, // 52: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse
2815- 18, // 53: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse
2816- 20, // 54: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse
2817- 22, // 55: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse
2818- 24, // 56: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse
2819- 26, // 57: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse
2820- 28, // 58: ermite.MergeRequestService.EnableAutoMerge:output_type -> ermite.EnableAutoMergeResponse
2821- 30, // 59: ermite.MergeRequestService.CancelAutoMerge:output_type -> ermite.CancelAutoMergeResponse
2822- 32, // 60: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse
2823- 49, // [49:61] is the sub-list for method output_type
2824- 37, // [37:49] is the sub-list for method input_type
2825- 37, // [37:37] is the sub-list for extension type_name
2826- 37, // [37:37] is the sub-list for extension extendee
2827- 0, // [0:37] is the sub-list for field type_name
2917+ 6, // 32: ermite.MarkReadyResponse.merge_request:type_name -> ermite.MergeRequest
2918+ 36, // 33: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode
2919+ 6, // 34: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2920+ 36, // 35: ermite.EnableAutoMergeRequest.mode:type_name -> ermite.MergeMode
2921+ 6, // 36: ermite.EnableAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2922+ 6, // 37: ermite.CancelAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2923+ 9, // 38: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest
2924+ 11, // 39: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest
2925+ 13, // 40: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest
2926+ 15, // 41: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest
2927+ 17, // 42: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest
2928+ 19, // 43: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest
2929+ 21, // 44: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest
2930+ 23, // 45: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest
2931+ 25, // 46: ermite.MergeRequestService.MarkReady:input_type -> ermite.MarkReadyRequest
2932+ 27, // 47: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest
2933+ 29, // 48: ermite.MergeRequestService.EnableAutoMerge:input_type -> ermite.EnableAutoMergeRequest
2934+ 31, // 49: ermite.MergeRequestService.CancelAutoMerge:input_type -> ermite.CancelAutoMergeRequest
2935+ 33, // 50: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest
2936+ 10, // 51: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse
2937+ 12, // 52: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse
2938+ 14, // 53: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse
2939+ 16, // 54: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse
2940+ 18, // 55: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse
2941+ 20, // 56: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse
2942+ 22, // 57: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse
2943+ 24, // 58: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse
2944+ 26, // 59: ermite.MergeRequestService.MarkReady:output_type -> ermite.MarkReadyResponse
2945+ 28, // 60: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse
2946+ 30, // 61: ermite.MergeRequestService.EnableAutoMerge:output_type -> ermite.EnableAutoMergeResponse
2947+ 32, // 62: ermite.MergeRequestService.CancelAutoMerge:output_type -> ermite.CancelAutoMergeResponse
2948+ 34, // 63: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse
2949+ 51, // [51:64] is the sub-list for method output_type
2950+ 38, // [38:51] is the sub-list for method input_type
2951+ 38, // [38:38] is the sub-list for extension type_name
2952+ 38, // [38:38] is the sub-list for extension extendee
2953+ 0, // [0:38] is the sub-list for field type_name
28282954 }
28292955
28302956 func init() { file_ermite_merge_request_proto_init() }
@@ -2840,7 +2966,7 @@ func file_ermite_merge_request_proto_init() {
28402966 GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
28412967 RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)),
28422968 NumEnums: 4,
2843- NumMessages: 29,
2969+ NumMessages: 31,
28442970 NumExtensions: 0,
28452971 NumServices: 1,
28462972 },
@@ -2017,6 +2017,108 @@ func (x *CloseMergeRequestResponse) GetMergeRequest() *MergeRequest {
2017 return nil2017 return nil
2018 }2018 }
2019 2019
2020+// MarkReadyRequest names the draft merge request to mark ready.
2021+type MarkReadyRequest struct {
2022+ state protoimpl.MessageState `protogen:"open.v1"`
2023+ // Repo is the repository name.
2024+ Repo string `protobuf:"bytes,1,opt,name=repo,proto3" json:"repo,omitempty"`
2025+ // Number is the merge request number.
2026+ Number int64 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
2027+ unknownFields protoimpl.UnknownFields
2028+ sizeCache protoimpl.SizeCache
2029+}
2030+
2031+func (x *MarkReadyRequest) Reset() {
2032+ *x = MarkReadyRequest{}
2033+ mi := &file_ermite_merge_request_proto_msgTypes[21]
2034+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2035+ ms.StoreMessageInfo(mi)
2036+}
2037+
2038+func (x *MarkReadyRequest) String() string {
2039+ return protoimpl.X.MessageStringOf(x)
2040+}
2041+
2042+func (*MarkReadyRequest) ProtoMessage() {}
2043+
2044+func (x *MarkReadyRequest) ProtoReflect() protoreflect.Message {
2045+ mi := &file_ermite_merge_request_proto_msgTypes[21]
2046+ if x != nil {
2047+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2048+ if ms.LoadMessageInfo() == nil {
2049+ ms.StoreMessageInfo(mi)
2050+ }
2051+ return ms
2052+ }
2053+ return mi.MessageOf(x)
2054+}
2055+
2056+// Deprecated: Use MarkReadyRequest.ProtoReflect.Descriptor instead.
2057+func (*MarkReadyRequest) Descriptor() ([]byte, []int) {
2058+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}
2059+}
2060+
2061+func (x *MarkReadyRequest) GetRepo() string {
2062+ if x != nil {
2063+ return x.Repo
2064+ }
2065+ return ""
2066+}
2067+
2068+func (x *MarkReadyRequest) GetNumber() int64 {
2069+ if x != nil {
2070+ return x.Number
2071+ }
2072+ return 0
2073+}
2074+
2075+// MarkReadyResponse holds the merge request after marking it ready.
2076+type MarkReadyResponse struct {
2077+ state protoimpl.MessageState `protogen:"open.v1"`
2078+ // MergeRequest is the merge request with its title stripped of the draft
2079+ // prefix.
2080+ MergeRequest *MergeRequest `protobuf:"bytes,1,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
2081+ unknownFields protoimpl.UnknownFields
2082+ sizeCache protoimpl.SizeCache
2083+}
2084+
2085+func (x *MarkReadyResponse) Reset() {
2086+ *x = MarkReadyResponse{}
2087+ mi := &file_ermite_merge_request_proto_msgTypes[22]
2088+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2089+ ms.StoreMessageInfo(mi)
2090+}
2091+
2092+func (x *MarkReadyResponse) String() string {
2093+ return protoimpl.X.MessageStringOf(x)
2094+}
2095+
2096+func (*MarkReadyResponse) ProtoMessage() {}
2097+
2098+func (x *MarkReadyResponse) ProtoReflect() protoreflect.Message {
2099+ mi := &file_ermite_merge_request_proto_msgTypes[22]
2100+ if x != nil {
2101+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2102+ if ms.LoadMessageInfo() == nil {
2103+ ms.StoreMessageInfo(mi)
2104+ }
2105+ return ms
2106+ }
2107+ return mi.MessageOf(x)
2108+}
2109+
2110+// Deprecated: Use MarkReadyResponse.ProtoReflect.Descriptor instead.
2111+func (*MarkReadyResponse) Descriptor() ([]byte, []int) {
2112+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}
2113+}
2114+
2115+func (x *MarkReadyResponse) GetMergeRequest() *MergeRequest {
2116+ if x != nil {
2117+ return x.MergeRequest
2118+ }
2119+ return nil
2120+}
2121+
2020 // MergeMergeRequestRequest describes the merge to perform.2122 // MergeMergeRequestRequest describes the merge to perform.
2021 type MergeMergeRequestRequest struct {2123 type MergeMergeRequestRequest struct {
2022 state protoimpl.MessageState `protogen:"open.v1"`2124 state protoimpl.MessageState `protogen:"open.v1"`
@@ -2037,13 +2139,18 @@ type MergeMergeRequestRequest struct {
2037 // request. Servers without the "merge_requests.delete_branch" feature ignore2139 // request. Servers without the "merge_requests.delete_branch" feature ignore
2038 // it.2140 // it.
2039 DeleteSourceBranch bool `protobuf:"varint,5,opt,name=delete_source_branch,json=deleteSourceBranch,proto3" json:"delete_source_branch,omitempty"`2141 DeleteSourceBranch bool `protobuf:"varint,5,opt,name=delete_source_branch,json=deleteSourceBranch,proto3" json:"delete_source_branch,omitempty"`
2040- unknownFields protoimpl.UnknownFields2142+ // IgnoreChecks merges whatever the checks say. Needs the mr:force-merge
2041- sizeCache protoimpl.SizeCache2143+ // scope (permission_denied otherwise). Servers without the
2144+ // "merge_requests.ignore_checks" feature ignore it: check the feature
2145+ // before setting it.
2146+ IgnoreChecks bool `protobuf:"varint,6,opt,name=ignore_checks,json=ignoreChecks,proto3" json:"ignore_checks,omitempty"`
2147+ unknownFields protoimpl.UnknownFields
2148+ sizeCache protoimpl.SizeCache
2042 }2149 }
2043 2150
2044 func (x *MergeMergeRequestRequest) Reset() {2151 func (x *MergeMergeRequestRequest) Reset() {
2045 *x = MergeMergeRequestRequest{}2152 *x = MergeMergeRequestRequest{}
2046- mi := &file_ermite_merge_request_proto_msgTypes[21]2153+ mi := &file_ermite_merge_request_proto_msgTypes[23]
2047 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2154 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2048 ms.StoreMessageInfo(mi)2155 ms.StoreMessageInfo(mi)
2049 }2156 }
@@ -2055,7 +2162,7 @@ func (x *MergeMergeRequestRequest) String() string {
2055 func (*MergeMergeRequestRequest) ProtoMessage() {}2162 func (*MergeMergeRequestRequest) ProtoMessage() {}
2056 2163
2057 func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {2164 func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
2058- mi := &file_ermite_merge_request_proto_msgTypes[21]2165+ mi := &file_ermite_merge_request_proto_msgTypes[23]
2059 if x != nil {2166 if x != nil {
2060 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2167 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2061 if ms.LoadMessageInfo() == nil {2168 if ms.LoadMessageInfo() == nil {
@@ -2068,7 +2175,7 @@ func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
2068 2175
2069 // Deprecated: Use MergeMergeRequestRequest.ProtoReflect.Descriptor instead.2176 // Deprecated: Use MergeMergeRequestRequest.ProtoReflect.Descriptor instead.
2070 func (*MergeMergeRequestRequest) Descriptor() ([]byte, []int) {2177 func (*MergeMergeRequestRequest) Descriptor() ([]byte, []int) {
2071- return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}2178+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}
2072 }2179 }
2073 2180
2074 func (x *MergeMergeRequestRequest) GetRepo() string {2181 func (x *MergeMergeRequestRequest) GetRepo() string {
@@ -2106,6 +2213,13 @@ func (x *MergeMergeRequestRequest) GetDeleteSourceBranch() bool {
2106 return false2213 return false
2107 }2214 }
2108 2215
2216+func (x *MergeMergeRequestRequest) GetIgnoreChecks() bool {
2217+ if x != nil {
2218+ return x.IgnoreChecks
2219+ }
2220+ return false
2221+}
2222+
2109 // MergeMergeRequestResponse holds the merged merge request.2223 // MergeMergeRequestResponse holds the merged merge request.
2110 type MergeMergeRequestResponse struct {2224 type MergeMergeRequestResponse struct {
2111 state protoimpl.MessageState `protogen:"open.v1"`2225 state protoimpl.MessageState `protogen:"open.v1"`
@@ -2125,7 +2239,7 @@ type MergeMergeRequestResponse struct {
2125 2239
2126 func (x *MergeMergeRequestResponse) Reset() {2240 func (x *MergeMergeRequestResponse) Reset() {
2127 *x = MergeMergeRequestResponse{}2241 *x = MergeMergeRequestResponse{}
2128- mi := &file_ermite_merge_request_proto_msgTypes[22]2242+ mi := &file_ermite_merge_request_proto_msgTypes[24]
2129 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2243 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2130 ms.StoreMessageInfo(mi)2244 ms.StoreMessageInfo(mi)
2131 }2245 }
@@ -2137,7 +2251,7 @@ func (x *MergeMergeRequestResponse) String() string {
2137 func (*MergeMergeRequestResponse) ProtoMessage() {}2251 func (*MergeMergeRequestResponse) ProtoMessage() {}
2138 2252
2139 func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {2253 func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
2140- mi := &file_ermite_merge_request_proto_msgTypes[22]2254+ mi := &file_ermite_merge_request_proto_msgTypes[24]
2141 if x != nil {2255 if x != nil {
2142 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2256 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2143 if ms.LoadMessageInfo() == nil {2257 if ms.LoadMessageInfo() == nil {
@@ -2150,7 +2264,7 @@ func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
2150 2264
2151 // Deprecated: Use MergeMergeRequestResponse.ProtoReflect.Descriptor instead.2265 // Deprecated: Use MergeMergeRequestResponse.ProtoReflect.Descriptor instead.
2152 func (*MergeMergeRequestResponse) Descriptor() ([]byte, []int) {2266 func (*MergeMergeRequestResponse) Descriptor() ([]byte, []int) {
2153- return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}2267+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}
2154 }2268 }
2155 2269
2156 func (x *MergeMergeRequestResponse) GetMergeRequest() *MergeRequest {2270 func (x *MergeMergeRequestResponse) GetMergeRequest() *MergeRequest {
@@ -2188,7 +2302,7 @@ type EnableAutoMergeRequest struct {
2188 2302
2189 func (x *EnableAutoMergeRequest) Reset() {2303 func (x *EnableAutoMergeRequest) Reset() {
2190 *x = EnableAutoMergeRequest{}2304 *x = EnableAutoMergeRequest{}
2191- mi := &file_ermite_merge_request_proto_msgTypes[23]2305+ mi := &file_ermite_merge_request_proto_msgTypes[25]
2192 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2306 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2193 ms.StoreMessageInfo(mi)2307 ms.StoreMessageInfo(mi)
2194 }2308 }
@@ -2200,7 +2314,7 @@ func (x *EnableAutoMergeRequest) String() string {
2200 func (*EnableAutoMergeRequest) ProtoMessage() {}2314 func (*EnableAutoMergeRequest) ProtoMessage() {}
2201 2315
2202 func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {2316 func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
2203- mi := &file_ermite_merge_request_proto_msgTypes[23]2317+ mi := &file_ermite_merge_request_proto_msgTypes[25]
2204 if x != nil {2318 if x != nil {
2205 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2319 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2206 if ms.LoadMessageInfo() == nil {2320 if ms.LoadMessageInfo() == nil {
@@ -2213,7 +2327,7 @@ func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
2213 2327
2214 // Deprecated: Use EnableAutoMergeRequest.ProtoReflect.Descriptor instead.2328 // Deprecated: Use EnableAutoMergeRequest.ProtoReflect.Descriptor instead.
2215 func (*EnableAutoMergeRequest) Descriptor() ([]byte, []int) {2329 func (*EnableAutoMergeRequest) Descriptor() ([]byte, []int) {
2216- return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}2330+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}
2217 }2331 }
2218 2332
2219 func (x *EnableAutoMergeRequest) GetRepo() string {2333 func (x *EnableAutoMergeRequest) GetRepo() string {
@@ -2255,7 +2369,7 @@ type EnableAutoMergeResponse struct {
2255 2369
2256 func (x *EnableAutoMergeResponse) Reset() {2370 func (x *EnableAutoMergeResponse) Reset() {
2257 *x = EnableAutoMergeResponse{}2371 *x = EnableAutoMergeResponse{}
2258- mi := &file_ermite_merge_request_proto_msgTypes[24]2372+ mi := &file_ermite_merge_request_proto_msgTypes[26]
2259 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2373 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2260 ms.StoreMessageInfo(mi)2374 ms.StoreMessageInfo(mi)
2261 }2375 }
@@ -2267,7 +2381,7 @@ func (x *EnableAutoMergeResponse) String() string {
2267 func (*EnableAutoMergeResponse) ProtoMessage() {}2381 func (*EnableAutoMergeResponse) ProtoMessage() {}
2268 2382
2269 func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {2383 func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
2270- mi := &file_ermite_merge_request_proto_msgTypes[24]2384+ mi := &file_ermite_merge_request_proto_msgTypes[26]
2271 if x != nil {2385 if x != nil {
2272 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2386 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2273 if ms.LoadMessageInfo() == nil {2387 if ms.LoadMessageInfo() == nil {
@@ -2280,7 +2394,7 @@ func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
2280 2394
2281 // Deprecated: Use EnableAutoMergeResponse.ProtoReflect.Descriptor instead.2395 // Deprecated: Use EnableAutoMergeResponse.ProtoReflect.Descriptor instead.
2282 func (*EnableAutoMergeResponse) Descriptor() ([]byte, []int) {2396 func (*EnableAutoMergeResponse) Descriptor() ([]byte, []int) {
2283- return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}2397+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}
2284 }2398 }
2285 2399
2286 func (x *EnableAutoMergeResponse) GetMergeRequest() *MergeRequest {2400 func (x *EnableAutoMergeResponse) GetMergeRequest() *MergeRequest {
@@ -2303,7 +2417,7 @@ type CancelAutoMergeRequest struct {
2303 2417
2304 func (x *CancelAutoMergeRequest) Reset() {2418 func (x *CancelAutoMergeRequest) Reset() {
2305 *x = CancelAutoMergeRequest{}2419 *x = CancelAutoMergeRequest{}
2306- mi := &file_ermite_merge_request_proto_msgTypes[25]2420+ mi := &file_ermite_merge_request_proto_msgTypes[27]
2307 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2421 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2308 ms.StoreMessageInfo(mi)2422 ms.StoreMessageInfo(mi)
2309 }2423 }
@@ -2315,7 +2429,7 @@ func (x *CancelAutoMergeRequest) String() string {
2315 func (*CancelAutoMergeRequest) ProtoMessage() {}2429 func (*CancelAutoMergeRequest) ProtoMessage() {}
2316 2430
2317 func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {2431 func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
2318- mi := &file_ermite_merge_request_proto_msgTypes[25]2432+ mi := &file_ermite_merge_request_proto_msgTypes[27]
2319 if x != nil {2433 if x != nil {
2320 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2434 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2321 if ms.LoadMessageInfo() == nil {2435 if ms.LoadMessageInfo() == nil {
@@ -2328,7 +2442,7 @@ func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
2328 2442
2329 // Deprecated: Use CancelAutoMergeRequest.ProtoReflect.Descriptor instead.2443 // Deprecated: Use CancelAutoMergeRequest.ProtoReflect.Descriptor instead.
2330 func (*CancelAutoMergeRequest) Descriptor() ([]byte, []int) {2444 func (*CancelAutoMergeRequest) Descriptor() ([]byte, []int) {
2331- return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}2445+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}
2332 }2446 }
2333 2447
2334 func (x *CancelAutoMergeRequest) GetRepo() string {2448 func (x *CancelAutoMergeRequest) GetRepo() string {
@@ -2356,7 +2470,7 @@ type CancelAutoMergeResponse struct {
2356 2470
2357 func (x *CancelAutoMergeResponse) Reset() {2471 func (x *CancelAutoMergeResponse) Reset() {
2358 *x = CancelAutoMergeResponse{}2472 *x = CancelAutoMergeResponse{}
2359- mi := &file_ermite_merge_request_proto_msgTypes[26]2473+ mi := &file_ermite_merge_request_proto_msgTypes[28]
2360 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2474 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2361 ms.StoreMessageInfo(mi)2475 ms.StoreMessageInfo(mi)
2362 }2476 }
@@ -2368,7 +2482,7 @@ func (x *CancelAutoMergeResponse) String() string {
2368 func (*CancelAutoMergeResponse) ProtoMessage() {}2482 func (*CancelAutoMergeResponse) ProtoMessage() {}
2369 2483
2370 func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {2484 func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
2371- mi := &file_ermite_merge_request_proto_msgTypes[26]2485+ mi := &file_ermite_merge_request_proto_msgTypes[28]
2372 if x != nil {2486 if x != nil {
2373 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2487 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2374 if ms.LoadMessageInfo() == nil {2488 if ms.LoadMessageInfo() == nil {
@@ -2381,7 +2495,7 @@ func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
2381 2495
2382 // Deprecated: Use CancelAutoMergeResponse.ProtoReflect.Descriptor instead.2496 // Deprecated: Use CancelAutoMergeResponse.ProtoReflect.Descriptor instead.
2383 func (*CancelAutoMergeResponse) Descriptor() ([]byte, []int) {2497 func (*CancelAutoMergeResponse) Descriptor() ([]byte, []int) {
2384- return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}2498+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}
2385 }2499 }
2386 2500
2387 func (x *CancelAutoMergeResponse) GetMergeRequest() *MergeRequest {2501 func (x *CancelAutoMergeResponse) GetMergeRequest() *MergeRequest {
@@ -2408,7 +2522,7 @@ type MarkReadRequest struct {
2408 2522
2409 func (x *MarkReadRequest) Reset() {2523 func (x *MarkReadRequest) Reset() {
2410 *x = MarkReadRequest{}2524 *x = MarkReadRequest{}
2411- mi := &file_ermite_merge_request_proto_msgTypes[27]2525+ mi := &file_ermite_merge_request_proto_msgTypes[29]
2412 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2526 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2413 ms.StoreMessageInfo(mi)2527 ms.StoreMessageInfo(mi)
2414 }2528 }
@@ -2420,7 +2534,7 @@ func (x *MarkReadRequest) String() string {
2420 func (*MarkReadRequest) ProtoMessage() {}2534 func (*MarkReadRequest) ProtoMessage() {}
2421 2535
2422 func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {2536 func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
2423- mi := &file_ermite_merge_request_proto_msgTypes[27]2537+ mi := &file_ermite_merge_request_proto_msgTypes[29]
2424 if x != nil {2538 if x != nil {
2425 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2539 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2426 if ms.LoadMessageInfo() == nil {2540 if ms.LoadMessageInfo() == nil {
@@ -2433,7 +2547,7 @@ func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
2433 2547
2434 // Deprecated: Use MarkReadRequest.ProtoReflect.Descriptor instead.2548 // Deprecated: Use MarkReadRequest.ProtoReflect.Descriptor instead.
2435 func (*MarkReadRequest) Descriptor() ([]byte, []int) {2549 func (*MarkReadRequest) Descriptor() ([]byte, []int) {
2436- return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}2550+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{29}
2437 }2551 }
2438 2552
2439 func (x *MarkReadRequest) GetRepo() string {2553 func (x *MarkReadRequest) GetRepo() string {
@@ -2466,7 +2580,7 @@ type MarkReadResponse struct {
2466 2580
2467 func (x *MarkReadResponse) Reset() {2581 func (x *MarkReadResponse) Reset() {
2468 *x = MarkReadResponse{}2582 *x = MarkReadResponse{}
2469- mi := &file_ermite_merge_request_proto_msgTypes[28]2583+ mi := &file_ermite_merge_request_proto_msgTypes[30]
2470 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2584 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2471 ms.StoreMessageInfo(mi)2585 ms.StoreMessageInfo(mi)
2472 }2586 }
@@ -2478,7 +2592,7 @@ func (x *MarkReadResponse) String() string {
2478 func (*MarkReadResponse) ProtoMessage() {}2592 func (*MarkReadResponse) ProtoMessage() {}
2479 2593
2480 func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {2594 func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
2481- mi := &file_ermite_merge_request_proto_msgTypes[28]2595+ mi := &file_ermite_merge_request_proto_msgTypes[30]
2482 if x != nil {2596 if x != nil {
2483 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2597 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2484 if ms.LoadMessageInfo() == nil {2598 if ms.LoadMessageInfo() == nil {
@@ -2491,7 +2605,7 @@ func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
2491 2605
2492 // Deprecated: Use MarkReadResponse.ProtoReflect.Descriptor instead.2606 // Deprecated: Use MarkReadResponse.ProtoReflect.Descriptor instead.
2493 func (*MarkReadResponse) Descriptor() ([]byte, []int) {2607 func (*MarkReadResponse) Descriptor() ([]byte, []int) {
2494- return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}2608+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{30}
2495 }2609 }
2496 2610
2497 var File_ermite_merge_request_proto protoreflect.FileDescriptor2611 var File_ermite_merge_request_proto protoreflect.FileDescriptor
@@ -2641,13 +2755,19 @@ const file_ermite_merge_request_proto_rawDesc = "" +
2641 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +2755 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2642 "\x06number\x18\x02 \x01(\x03R\x06number\"V\n" +2756 "\x06number\x18\x02 \x01(\x03R\x06number\"V\n" +
2643 "\x19CloseMergeRequestResponse\x129\n" +2757 "\x19CloseMergeRequestResponse\x129\n" +
2644- "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\xb8\x01\n" +2758+ "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\">\n" +
2759+ "\x10MarkReadyRequest\x12\x12\n" +
2760+ "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2761+ "\x06number\x18\x02 \x01(\x03R\x06number\"N\n" +
2762+ "\x11MarkReadyResponse\x129\n" +
2763+ "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\"\xdd\x01\n" +
2645 "\x18MergeMergeRequestRequest\x12\x12\n" +2764 "\x18MergeMergeRequestRequest\x12\x12\n" +
2646 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +2765 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2647 "\x06number\x18\x02 \x01(\x03R\x06number\x12%\n" +2766 "\x06number\x18\x02 \x01(\x03R\x06number\x12%\n" +
2648 "\x04mode\x18\x03 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +2767 "\x04mode\x18\x03 \x01(\x0e2\x11.ermite.MergeModeR\x04mode\x12\x17\n" +
2649 "\ahead_id\x18\x04 \x01(\tR\x06headId\x120\n" +2768 "\ahead_id\x18\x04 \x01(\tR\x06headId\x120\n" +
2650- "\x14delete_source_branch\x18\x05 \x01(\bR\x12deleteSourceBranch\"\x8a\x01\n" +2769+ "\x14delete_source_branch\x18\x05 \x01(\bR\x12deleteSourceBranch\x12#\n" +
2770+ "\rignore_checks\x18\x06 \x01(\bR\fignoreChecks\"\x8a\x01\n" +
2651 "\x19MergeMergeRequestResponse\x129\n" +2771 "\x19MergeMergeRequestResponse\x129\n" +
2652 "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x122\n" +2772 "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x122\n" +
2653 "\x15source_branch_deleted\x18\x02 \x01(\bR\x13sourceBranchDeleted\"\x84\x01\n" +2773 "\x15source_branch_deleted\x18\x02 \x01(\bR\x13sourceBranchDeleted\"\x84\x01\n" +
@@ -2686,7 +2806,7 @@ const file_ermite_merge_request_proto_rawDesc = "" +
2686 "\x1bMERGEABILITY_STATE_CHECKING\x10\x01\x12!\n" +2806 "\x1bMERGEABILITY_STATE_CHECKING\x10\x01\x12!\n" +
2687 "\x1dMERGEABILITY_STATE_UP_TO_DATE\x10\x02\x12\x1d\n" +2807 "\x1dMERGEABILITY_STATE_UP_TO_DATE\x10\x02\x12\x1d\n" +
2688 "\x19MERGEABILITY_STATE_BEHIND\x10\x03\x12\x1f\n" +2808 "\x19MERGEABILITY_STATE_BEHIND\x10\x03\x12\x1f\n" +
2689- "\x1bMERGEABILITY_STATE_CONFLICT\x10\x042\xe7\a\n" +2809+ "\x1bMERGEABILITY_STATE_CONFLICT\x10\x042\xa9\b\n" +
2690 "\x13MergeRequestService\x12[\n" +2810 "\x13MergeRequestService\x12[\n" +
2691 "\x12CreateMergeRequest\x12!.ermite.CreateMergeRequestRequest\x1a\".ermite.CreateMergeRequestResponse\x12X\n" +2811 "\x12CreateMergeRequest\x12!.ermite.CreateMergeRequestRequest\x1a\".ermite.CreateMergeRequestResponse\x12X\n" +
2692 "\x11ListMergeRequests\x12 .ermite.ListMergeRequestsRequest\x1a!.ermite.ListMergeRequestsResponse\x12R\n" +2812 "\x11ListMergeRequests\x12 .ermite.ListMergeRequestsRequest\x1a!.ermite.ListMergeRequestsResponse\x12R\n" +
@@ -2696,7 +2816,8 @@ const file_ermite_merge_request_proto_rawDesc = "" +
2696 "\vEditComment\x12\x1a.ermite.EditCommentRequest\x1a\x1b.ermite.EditCommentResponse\x12L\n" +2816 "\vEditComment\x12\x1a.ermite.EditCommentRequest\x1a\x1b.ermite.EditCommentResponse\x12L\n" +
2697 "\rDeleteComment\x12\x1c.ermite.DeleteCommentRequest\x1a\x1d.ermite.DeleteCommentResponse\x12O\n" +2817 "\rDeleteComment\x12\x1c.ermite.DeleteCommentRequest\x1a\x1d.ermite.DeleteCommentResponse\x12O\n" +
2698 "\x0eResolveComment\x12\x1d.ermite.ResolveCommentRequest\x1a\x1e.ermite.ResolveCommentResponse\x12X\n" +2818 "\x0eResolveComment\x12\x1d.ermite.ResolveCommentRequest\x1a\x1e.ermite.ResolveCommentResponse\x12X\n" +
2699- "\x11CloseMergeRequest\x12 .ermite.CloseMergeRequestRequest\x1a!.ermite.CloseMergeRequestResponse\x12X\n" +2819+ "\x11CloseMergeRequest\x12 .ermite.CloseMergeRequestRequest\x1a!.ermite.CloseMergeRequestResponse\x12@\n" +
2820+ "\tMarkReady\x12\x18.ermite.MarkReadyRequest\x1a\x19.ermite.MarkReadyResponse\x12X\n" +
2700 "\x11MergeMergeRequest\x12 .ermite.MergeMergeRequestRequest\x1a!.ermite.MergeMergeRequestResponse\x12R\n" +2821 "\x11MergeMergeRequest\x12 .ermite.MergeMergeRequestRequest\x1a!.ermite.MergeMergeRequestResponse\x12R\n" +
2701 "\x0fEnableAutoMerge\x12\x1e.ermite.EnableAutoMergeRequest\x1a\x1f.ermite.EnableAutoMergeResponse\x12R\n" +2822 "\x0fEnableAutoMerge\x12\x1e.ermite.EnableAutoMergeRequest\x1a\x1f.ermite.EnableAutoMergeResponse\x12R\n" +
2702 "\x0fCancelAutoMerge\x12\x1e.ermite.CancelAutoMergeRequest\x1a\x1f.ermite.CancelAutoMergeResponse\x12=\n" +2823 "\x0fCancelAutoMerge\x12\x1e.ermite.CancelAutoMergeRequest\x1a\x1f.ermite.CancelAutoMergeResponse\x12=\n" +
@@ -2717,7 +2838,7 @@ func file_ermite_merge_request_proto_rawDescGZIP() []byte {
2717 }2838 }
2718 2839
2719 var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 4)2840 var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
2720-var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 29)2841+var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
2721 var file_ermite_merge_request_proto_goTypes = []any{2842 var file_ermite_merge_request_proto_goTypes = []any{
2722 (MergeRequestState)(0), // 0: ermite.MergeRequestState2843 (MergeRequestState)(0), // 0: ermite.MergeRequestState
2723 (DiffSide)(0), // 1: ermite.DiffSide2844 (DiffSide)(0), // 1: ermite.DiffSide
@@ -2744,44 +2865,46 @@ var file_ermite_merge_request_proto_goTypes = []any{
2744 (*ResolveCommentResponse)(nil), // 22: ermite.ResolveCommentResponse2865 (*ResolveCommentResponse)(nil), // 22: ermite.ResolveCommentResponse
2745 (*CloseMergeRequestRequest)(nil), // 23: ermite.CloseMergeRequestRequest2866 (*CloseMergeRequestRequest)(nil), // 23: ermite.CloseMergeRequestRequest
2746 (*CloseMergeRequestResponse)(nil), // 24: ermite.CloseMergeRequestResponse2867 (*CloseMergeRequestResponse)(nil), // 24: ermite.CloseMergeRequestResponse
2747- (*MergeMergeRequestRequest)(nil), // 25: ermite.MergeMergeRequestRequest2868+ (*MarkReadyRequest)(nil), // 25: ermite.MarkReadyRequest
2748- (*MergeMergeRequestResponse)(nil), // 26: ermite.MergeMergeRequestResponse2869+ (*MarkReadyResponse)(nil), // 26: ermite.MarkReadyResponse
2749- (*EnableAutoMergeRequest)(nil), // 27: ermite.EnableAutoMergeRequest2870+ (*MergeMergeRequestRequest)(nil), // 27: ermite.MergeMergeRequestRequest
2750- (*EnableAutoMergeResponse)(nil), // 28: ermite.EnableAutoMergeResponse2871+ (*MergeMergeRequestResponse)(nil), // 28: ermite.MergeMergeRequestResponse
2751- (*CancelAutoMergeRequest)(nil), // 29: ermite.CancelAutoMergeRequest2872+ (*EnableAutoMergeRequest)(nil), // 29: ermite.EnableAutoMergeRequest
2752- (*CancelAutoMergeResponse)(nil), // 30: ermite.CancelAutoMergeResponse2873+ (*EnableAutoMergeResponse)(nil), // 30: ermite.EnableAutoMergeResponse
2753- (*MarkReadRequest)(nil), // 31: ermite.MarkReadRequest2874+ (*CancelAutoMergeRequest)(nil), // 31: ermite.CancelAutoMergeRequest
2754- (*MarkReadResponse)(nil), // 32: ermite.MarkReadResponse2875+ (*CancelAutoMergeResponse)(nil), // 32: ermite.CancelAutoMergeResponse
2755- (*timestamppb.Timestamp)(nil), // 33: google.protobuf.Timestamp2876+ (*MarkReadRequest)(nil), // 33: ermite.MarkReadRequest
2756- (MergeMode)(0), // 34: ermite.MergeMode2877+ (*MarkReadResponse)(nil), // 34: ermite.MarkReadResponse
2757- (*Commit)(nil), // 35: ermite.Commit2878+ (*timestamppb.Timestamp)(nil), // 35: google.protobuf.Timestamp
2758- (*DiffStats)(nil), // 36: ermite.DiffStats2879+ (MergeMode)(0), // 36: ermite.MergeMode
2759- (*Diff)(nil), // 37: ermite.Diff2880+ (*Commit)(nil), // 37: ermite.Commit
2881+ (*DiffStats)(nil), // 38: ermite.DiffStats
2882+ (*Diff)(nil), // 39: ermite.Diff
2760 }2883 }
2761 var file_ermite_merge_request_proto_depIdxs = []int32{2884 var file_ermite_merge_request_proto_depIdxs = []int32{
2762 3, // 0: ermite.Mergeability.state:type_name -> ermite.MergeabilityState2885 3, // 0: ermite.Mergeability.state:type_name -> ermite.MergeabilityState
2763- 33, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp2886+ 35, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp
2764- 34, // 2: ermite.AutoMerge.mode:type_name -> ermite.MergeMode2887+ 36, // 2: ermite.AutoMerge.mode:type_name -> ermite.MergeMode
2765- 33, // 3: ermite.AutoMerge.enabled_at:type_name -> google.protobuf.Timestamp2888+ 35, // 3: ermite.AutoMerge.enabled_at:type_name -> google.protobuf.Timestamp
2766 0, // 4: ermite.MergeRequest.state:type_name -> ermite.MergeRequestState2889 0, // 4: ermite.MergeRequest.state:type_name -> ermite.MergeRequestState
2767- 33, // 5: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp2890+ 35, // 5: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp
2768- 33, // 6: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp2891+ 35, // 6: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp
2769- 34, // 7: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode2892+ 36, // 7: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode
2770 4, // 8: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability2893 4, // 8: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability
2771 5, // 9: ermite.MergeRequest.auto_merge:type_name -> ermite.AutoMerge2894 5, // 9: ermite.MergeRequest.auto_merge:type_name -> ermite.AutoMerge
2772 1, // 10: ermite.Comment.side:type_name -> ermite.DiffSide2895 1, // 10: ermite.Comment.side:type_name -> ermite.DiffSide
2773- 33, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp2896+ 35, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp
2774 2, // 12: ermite.Comment.verdict:type_name -> ermite.Verdict2897 2, // 12: ermite.Comment.verdict:type_name -> ermite.Verdict
2775- 33, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp2898+ 35, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp
2776 2, // 14: ermite.AuthorVerdict.verdict:type_name -> ermite.Verdict2899 2, // 14: ermite.AuthorVerdict.verdict:type_name -> ermite.Verdict
2777- 33, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp2900+ 35, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp
2778 6, // 16: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest2901 6, // 16: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2779 0, // 17: ermite.ListMergeRequestsRequest.state:type_name -> ermite.MergeRequestState2902 0, // 17: ermite.ListMergeRequestsRequest.state:type_name -> ermite.MergeRequestState
2780 6, // 18: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest2903 6, // 18: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest
2781 6, // 19: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest2904 6, // 19: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2782- 35, // 20: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit2905+ 37, // 20: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit
2783- 36, // 21: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats2906+ 38, // 21: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats
2784- 37, // 22: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff2907+ 39, // 22: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff
2785 7, // 23: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment2908 7, // 23: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment
2786 8, // 24: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict2909 8, // 24: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict
2787 1, // 25: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide2910 1, // 25: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide
@@ -2791,40 +2914,43 @@ var file_ermite_merge_request_proto_depIdxs = []int32{
2791 7, // 29: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment2914 7, // 29: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment
2792 7, // 30: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment2915 7, // 30: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment
2793 6, // 31: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest2916 6, // 31: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2794- 34, // 32: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode2917+ 6, // 32: ermite.MarkReadyResponse.merge_request:type_name -> ermite.MergeRequest
2795- 6, // 33: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest2918+ 36, // 33: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode
2796- 34, // 34: ermite.EnableAutoMergeRequest.mode:type_name -> ermite.MergeMode2919+ 6, // 34: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2797- 6, // 35: ermite.EnableAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest2920+ 36, // 35: ermite.EnableAutoMergeRequest.mode:type_name -> ermite.MergeMode
2798- 6, // 36: ermite.CancelAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest2921+ 6, // 36: ermite.EnableAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2799- 9, // 37: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest2922+ 6, // 37: ermite.CancelAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2800- 11, // 38: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest2923+ 9, // 38: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest
2801- 13, // 39: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest2924+ 11, // 39: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest
2802- 15, // 40: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest2925+ 13, // 40: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest
2803- 17, // 41: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest2926+ 15, // 41: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest
2804- 19, // 42: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest2927+ 17, // 42: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest
2805- 21, // 43: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest2928+ 19, // 43: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest
2806- 23, // 44: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest2929+ 21, // 44: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest
2807- 25, // 45: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest2930+ 23, // 45: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest
2808- 27, // 46: ermite.MergeRequestService.EnableAutoMerge:input_type -> ermite.EnableAutoMergeRequest2931+ 25, // 46: ermite.MergeRequestService.MarkReady:input_type -> ermite.MarkReadyRequest
2809- 29, // 47: ermite.MergeRequestService.CancelAutoMerge:input_type -> ermite.CancelAutoMergeRequest2932+ 27, // 47: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest
2810- 31, // 48: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest2933+ 29, // 48: ermite.MergeRequestService.EnableAutoMerge:input_type -> ermite.EnableAutoMergeRequest
2811- 10, // 49: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse2934+ 31, // 49: ermite.MergeRequestService.CancelAutoMerge:input_type -> ermite.CancelAutoMergeRequest
2812- 12, // 50: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse2935+ 33, // 50: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest
2813- 14, // 51: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse2936+ 10, // 51: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse
2814- 16, // 52: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse2937+ 12, // 52: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse
2815- 18, // 53: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse2938+ 14, // 53: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse
2816- 20, // 54: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse2939+ 16, // 54: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse
2817- 22, // 55: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse2940+ 18, // 55: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse
2818- 24, // 56: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse2941+ 20, // 56: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse
2819- 26, // 57: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse2942+ 22, // 57: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse
2820- 28, // 58: ermite.MergeRequestService.EnableAutoMerge:output_type -> ermite.EnableAutoMergeResponse2943+ 24, // 58: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse
2821- 30, // 59: ermite.MergeRequestService.CancelAutoMerge:output_type -> ermite.CancelAutoMergeResponse2944+ 26, // 59: ermite.MergeRequestService.MarkReady:output_type -> ermite.MarkReadyResponse
2822- 32, // 60: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse2945+ 28, // 60: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse
2823- 49, // [49:61] is the sub-list for method output_type2946+ 30, // 61: ermite.MergeRequestService.EnableAutoMerge:output_type -> ermite.EnableAutoMergeResponse
2824- 37, // [37:49] is the sub-list for method input_type2947+ 32, // 62: ermite.MergeRequestService.CancelAutoMerge:output_type -> ermite.CancelAutoMergeResponse
2825- 37, // [37:37] is the sub-list for extension type_name2948+ 34, // 63: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse
2826- 37, // [37:37] is the sub-list for extension extendee2949+ 51, // [51:64] is the sub-list for method output_type
2827- 0, // [0:37] is the sub-list for field type_name2950+ 38, // [38:51] is the sub-list for method input_type
2951+ 38, // [38:38] is the sub-list for extension type_name
2952+ 38, // [38:38] is the sub-list for extension extendee
2953+ 0, // [0:38] is the sub-list for field type_name
2828 }2954 }
2829 2955
2830 func init() { file_ermite_merge_request_proto_init() }2956 func init() { file_ermite_merge_request_proto_init() }
@@ -2840,7 +2966,7 @@ func file_ermite_merge_request_proto_init() {
2840 GoPackagePath: reflect.TypeOf(x{}).PkgPath(),2966 GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2841 RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)),2967 RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)),
2842 NumEnums: 4,2968 NumEnums: 4,
2843- NumMessages: 29,2969+ NumMessages: 31,
2844 NumExtensions: 0,2970 NumExtensions: 0,
2845 NumServices: 1,2971 NumServices: 1,
2846 },2972 },
M gen/ermite/repo.pb.go +11 -10 generated file: collapsed
M gen/ermite/token.pb.go +10 -3 generated file: collapsed
M gen_test.go +2 -3
@@ -254,10 +254,9 @@ func TestMergeRequestEventRoundTrip(t *testing.T) {
254254 req := &ermite.UpdateRepoRequest{
255255 Repo: "ermite",
256256 Settings: &ermite.RepoSettings{
257- AllowedMergeModes: []ermite.MergeMode{ermite.MergeMode_MERGE_MODE_SQUASH},
258- FailingChecksBlock: true,
257+ AllowedMergeModes: []ermite.MergeMode{ermite.MergeMode_MERGE_MODE_SQUASH},
259258 },
260- UpdateMask: &fieldmaskpb.FieldMask{Paths: []string{"settings.allowed_merge_modes", "settings.failing_checks_block"}},
259+ UpdateMask: &fieldmaskpb.FieldMask{Paths: []string{"settings.allowed_merge_modes"}},
261260 }
262261 if got := req.GetSettings().GetAllowedMergeModes(); len(got) != 1 || got[0] != ermite.MergeMode_MERGE_MODE_SQUASH {
263262 t.Errorf("modes = %v", got)
@@ -254,10 +254,9 @@ func TestMergeRequestEventRoundTrip(t *testing.T) {
254 req := &ermite.UpdateRepoRequest{254 req := &ermite.UpdateRepoRequest{
255 Repo: "ermite",255 Repo: "ermite",
256 Settings: &ermite.RepoSettings{256 Settings: &ermite.RepoSettings{
257- AllowedMergeModes: []ermite.MergeMode{ermite.MergeMode_MERGE_MODE_SQUASH},257+ AllowedMergeModes: []ermite.MergeMode{ermite.MergeMode_MERGE_MODE_SQUASH},
258- FailingChecksBlock: true,
259 },258 },
260- UpdateMask: &fieldmaskpb.FieldMask{Paths: []string{"settings.allowed_merge_modes", "settings.failing_checks_block"}},259+ UpdateMask: &fieldmaskpb.FieldMask{Paths: []string{"settings.allowed_merge_modes"}},
261 }260 }
262 if got := req.GetSettings().GetAllowedMergeModes(); len(got) != 1 || got[0] != ermite.MergeMode_MERGE_MODE_SQUASH {261 if got := req.GetSettings().GetAllowedMergeModes(); len(got) != 1 || got[0] != ermite.MergeMode_MERGE_MODE_SQUASH {
263 t.Errorf("modes = %v", got)262 t.Errorf("modes = %v", got)
M proto/ermite/merge_request.proto +35 -6
@@ -300,7 +300,16 @@ service MergeRequestService {
300300 // the mr:write scope. Fails with failed_precondition if the merge request
301301 // is not open. A closed merge request cannot be reopened: open a new one.
302302 rpc CloseMergeRequest(CloseMergeRequestRequest) returns (CloseMergeRequestResponse);
303- // MergeMergeRequest merges an open merge request. Needs the mr:merge scope.
303+ // MarkReady removes the draft prefix ("WIP:" or "[WIP]") from the title so
304+ // the merge request can be merged. Needs the mr:write scope. Fails with
305+ // failed_precondition if the merge request is not open or is not a draft.
306+ // Publishes no event: there is none for a change of title. Needs the
307+ // "merge_requests.ready" feature.
308+ rpc MarkReady(MarkReadyRequest) returns (MarkReadyResponse);
309+ // MergeMergeRequest merges an open merge request. Needs the mr:merge scope,
310+ // which merges only when the checks on the head allow it: none failed and
311+ // none queued or running (a head with no checks may be merged; success,
312+ // skipped and neutral pass). The mr:force-merge scope allows ignore_checks.
304313 // The caller passes the head it reviewed: the server merges only if the
305314 // source branch still points to it, so a push between review and merge is
306315 // never merged unseen. Fails with invalid_argument if head_id is empty or
@@ -310,17 +319,17 @@ service MergeRequestService {
310319 // ancestor of the head (rebase and push again, or merge with squash or
311320 // merge commit), if the mode is squash or merge commit and the head
312321 // conflicts with the target or shares no history with it (rebase and push
313- // again), if the mode is not allowed by RepoSettings, or if a check fails
314- // and RepoSettings.failing_checks_block is set. Merges of one
322+ // again), if the mode is not allowed by RepoSettings, or if a check failed or
323+ // has not finished, unless ignore_checks is set. Merges of one
315324 // repository run one at a time. Repeating a call that succeeded fails with
316325 // failed_precondition (not open). On success the server publishes
317326 // MergeRequestMerged then Pushed for the target branch.
318327 rpc MergeMergeRequest(MergeMergeRequestRequest) returns (MergeMergeRequestResponse);
319328 // EnableAutoMerge asks the server to merge an open merge request by itself
320329 // once at least one check passed on its head, every run created on that head
321- // is complete, and the merge would be accepted whatever
322- // RepoSettings.failing_checks_block says. Needs the mr:merge scope and, for a
323- // token limited to branches, write access to the target branch
330+ // is complete, and no check failed. It does not take ignore_checks. Needs
331+ // the mr:merge scope and, for a token limited to branches, write access to
332+ // the target branch
324333 // (permission_denied otherwise). The server records the caller, the mode and
325334 // the head the caller saw; it merges as the caller, after resolving the caller
326335 // again, and cancels the auto-merge if the caller can no longer merge, if the
@@ -549,6 +558,21 @@ message CloseMergeRequestResponse {
549558 MergeRequest merge_request = 1;
550559 }
551560
561+// MarkReadyRequest names the draft merge request to mark ready.
562+message MarkReadyRequest {
563+ // Repo is the repository name.
564+ string repo = 1;
565+ // Number is the merge request number.
566+ int64 number = 2;
567+}
568+
569+// MarkReadyResponse holds the merge request after marking it ready.
570+message MarkReadyResponse {
571+ // MergeRequest is the merge request with its title stripped of the draft
572+ // prefix.
573+ MergeRequest merge_request = 1;
574+}
575+
552576 // MergeMergeRequestRequest describes the merge to perform.
553577 message MergeMergeRequestRequest {
554578 // Repo is the repository name.
@@ -568,6 +592,11 @@ message MergeMergeRequestRequest {
568592 // request. Servers without the "merge_requests.delete_branch" feature ignore
569593 // it.
570594 bool delete_source_branch = 5;
595+ // IgnoreChecks merges whatever the checks say. Needs the mr:force-merge
596+ // scope (permission_denied otherwise). Servers without the
597+ // "merge_requests.ignore_checks" feature ignore it: check the feature
598+ // before setting it.
599+ bool ignore_checks = 6;
571600 }
572601
573602 // MergeMergeRequestResponse holds the merged merge request.
@@ -300,7 +300,16 @@ service MergeRequestService {
300 // the mr:write scope. Fails with failed_precondition if the merge request300 // the mr:write scope. Fails with failed_precondition if the merge request
301 // is not open. A closed merge request cannot be reopened: open a new one.301 // is not open. A closed merge request cannot be reopened: open a new one.
302 rpc CloseMergeRequest(CloseMergeRequestRequest) returns (CloseMergeRequestResponse);302 rpc CloseMergeRequest(CloseMergeRequestRequest) returns (CloseMergeRequestResponse);
303- // MergeMergeRequest merges an open merge request. Needs the mr:merge scope.303+ // MarkReady removes the draft prefix ("WIP:" or "[WIP]") from the title so
304+ // the merge request can be merged. Needs the mr:write scope. Fails with
305+ // failed_precondition if the merge request is not open or is not a draft.
306+ // Publishes no event: there is none for a change of title. Needs the
307+ // "merge_requests.ready" feature.
308+ rpc MarkReady(MarkReadyRequest) returns (MarkReadyResponse);
309+ // MergeMergeRequest merges an open merge request. Needs the mr:merge scope,
310+ // which merges only when the checks on the head allow it: none failed and
311+ // none queued or running (a head with no checks may be merged; success,
312+ // skipped and neutral pass). The mr:force-merge scope allows ignore_checks.
304 // The caller passes the head it reviewed: the server merges only if the313 // The caller passes the head it reviewed: the server merges only if the
305 // source branch still points to it, so a push between review and merge is314 // source branch still points to it, so a push between review and merge is
306 // never merged unseen. Fails with invalid_argument if head_id is empty or315 // never merged unseen. Fails with invalid_argument if head_id is empty or
@@ -310,17 +319,17 @@ service MergeRequestService {
310 // ancestor of the head (rebase and push again, or merge with squash or319 // ancestor of the head (rebase and push again, or merge with squash or
311 // merge commit), if the mode is squash or merge commit and the head320 // merge commit), if the mode is squash or merge commit and the head
312 // conflicts with the target or shares no history with it (rebase and push321 // conflicts with the target or shares no history with it (rebase and push
313- // again), if the mode is not allowed by RepoSettings, or if a check fails322+ // again), if the mode is not allowed by RepoSettings, or if a check failed or
314- // and RepoSettings.failing_checks_block is set. Merges of one323+ // has not finished, unless ignore_checks is set. Merges of one
315 // repository run one at a time. Repeating a call that succeeded fails with324 // repository run one at a time. Repeating a call that succeeded fails with
316 // failed_precondition (not open). On success the server publishes325 // failed_precondition (not open). On success the server publishes
317 // MergeRequestMerged then Pushed for the target branch.326 // MergeRequestMerged then Pushed for the target branch.
318 rpc MergeMergeRequest(MergeMergeRequestRequest) returns (MergeMergeRequestResponse);327 rpc MergeMergeRequest(MergeMergeRequestRequest) returns (MergeMergeRequestResponse);
319 // EnableAutoMerge asks the server to merge an open merge request by itself328 // EnableAutoMerge asks the server to merge an open merge request by itself
320 // once at least one check passed on its head, every run created on that head329 // once at least one check passed on its head, every run created on that head
321- // is complete, and the merge would be accepted whatever330+ // is complete, and no check failed. It does not take ignore_checks. Needs
322- // RepoSettings.failing_checks_block says. Needs the mr:merge scope and, for a331+ // the mr:merge scope and, for a token limited to branches, write access to
323- // token limited to branches, write access to the target branch332+ // the target branch
324 // (permission_denied otherwise). The server records the caller, the mode and333 // (permission_denied otherwise). The server records the caller, the mode and
325 // the head the caller saw; it merges as the caller, after resolving the caller334 // the head the caller saw; it merges as the caller, after resolving the caller
326 // again, and cancels the auto-merge if the caller can no longer merge, if the335 // again, and cancels the auto-merge if the caller can no longer merge, if the
@@ -549,6 +558,21 @@ message CloseMergeRequestResponse {
549 MergeRequest merge_request = 1;558 MergeRequest merge_request = 1;
550 }559 }
551 560
561+// MarkReadyRequest names the draft merge request to mark ready.
562+message MarkReadyRequest {
563+ // Repo is the repository name.
564+ string repo = 1;
565+ // Number is the merge request number.
566+ int64 number = 2;
567+}
568+
569+// MarkReadyResponse holds the merge request after marking it ready.
570+message MarkReadyResponse {
571+ // MergeRequest is the merge request with its title stripped of the draft
572+ // prefix.
573+ MergeRequest merge_request = 1;
574+}
575+
552 // MergeMergeRequestRequest describes the merge to perform.576 // MergeMergeRequestRequest describes the merge to perform.
553 message MergeMergeRequestRequest {577 message MergeMergeRequestRequest {
554 // Repo is the repository name.578 // Repo is the repository name.
@@ -568,6 +592,11 @@ message MergeMergeRequestRequest {
568 // request. Servers without the "merge_requests.delete_branch" feature ignore592 // request. Servers without the "merge_requests.delete_branch" feature ignore
569 // it.593 // it.
570 bool delete_source_branch = 5;594 bool delete_source_branch = 5;
595+ // IgnoreChecks merges whatever the checks say. Needs the mr:force-merge
596+ // scope (permission_denied otherwise). Servers without the
597+ // "merge_requests.ignore_checks" feature ignore it: check the feature
598+ // before setting it.
599+ bool ignore_checks = 6;
571 }600 }
572 601
573 // MergeMergeRequestResponse holds the merged merge request.602 // MergeMergeRequestResponse holds the merged merge request.
M proto/ermite/repo.proto +6 -8
@@ -40,11 +40,9 @@ message RepoSettings {
4040 // duplicate. Every mode is allowed by default. MERGE_MODE_UNSPECIFIED is
4141 // rejected.
4242 repeated MergeMode allowed_merge_modes = 1;
43- // FailingChecksBlock says whether a merge request whose checks fail cannot be
44- // merged. It is true at creation of the repository and always stored
45- // explicitly, so a later change of the server default never alters an
46- // existing repository.
47- bool failing_checks_block = 2;
43+ // FailingChecksBlock is unused: servers ignore it and never set it. A merge
44+ // needs passing checks unless MergeMergeRequestRequest.ignore_checks is set.
45+ bool failing_checks_block = 2 [deprecated = true];
4846 // Issues is the issue participation mode of the repository.
4947 IssuesMode issues = 3;
5048 // AllowAutoMerge says whether auto-merge can be enabled on the merge requests
@@ -170,9 +168,9 @@ message UpdateRepoRequest {
170168 // the call fails with failed_precondition.
171169 string default_branch = 4;
172170 // UpdateMask lists the fields to change: "description", "visibility",
173- // "default_branch", "topics", "settings.allowed_merge_modes",
174- // "settings.failing_checks_block" and/or "settings.allow_auto_merge".
175- // "settings" stands for the three merge settings paths. It must not be empty unless issues is set. Other paths are
171+ // "default_branch", "topics", "settings.allowed_merge_modes" and/or
172+ // "settings.allow_auto_merge". "settings" stands for the two merge settings
173+ // paths. It must not be empty unless issues is set. Other paths are
176174 // invalid_argument, including "settings.issues" and "issues": the issues
177175 // field is applied outside the mask.
178176 google.protobuf.FieldMask update_mask = 5;
@@ -40,11 +40,9 @@ message RepoSettings {
40 // duplicate. Every mode is allowed by default. MERGE_MODE_UNSPECIFIED is40 // duplicate. Every mode is allowed by default. MERGE_MODE_UNSPECIFIED is
41 // rejected.41 // rejected.
42 repeated MergeMode allowed_merge_modes = 1;42 repeated MergeMode allowed_merge_modes = 1;
43- // FailingChecksBlock says whether a merge request whose checks fail cannot be43+ // FailingChecksBlock is unused: servers ignore it and never set it. A merge
44- // merged. It is true at creation of the repository and always stored44+ // needs passing checks unless MergeMergeRequestRequest.ignore_checks is set.
45- // explicitly, so a later change of the server default never alters an45+ bool failing_checks_block = 2 [deprecated = true];
46- // existing repository.
47- bool failing_checks_block = 2;
48 // Issues is the issue participation mode of the repository.46 // Issues is the issue participation mode of the repository.
49 IssuesMode issues = 3;47 IssuesMode issues = 3;
50 // AllowAutoMerge says whether auto-merge can be enabled on the merge requests48 // AllowAutoMerge says whether auto-merge can be enabled on the merge requests
@@ -170,9 +168,9 @@ message UpdateRepoRequest {
170 // the call fails with failed_precondition.168 // the call fails with failed_precondition.
171 string default_branch = 4;169 string default_branch = 4;
172 // UpdateMask lists the fields to change: "description", "visibility",170 // UpdateMask lists the fields to change: "description", "visibility",
173- // "default_branch", "topics", "settings.allowed_merge_modes",171+ // "default_branch", "topics", "settings.allowed_merge_modes" and/or
174- // "settings.failing_checks_block" and/or "settings.allow_auto_merge".172+ // "settings.allow_auto_merge". "settings" stands for the two merge settings
175- // "settings" stands for the three merge settings paths. It must not be empty unless issues is set. Other paths are173+ // paths. It must not be empty unless issues is set. Other paths are
176 // invalid_argument, including "settings.issues" and "issues": the issues174 // invalid_argument, including "settings.issues" and "issues": the issues
177 // field is applied outside the mask.175 // field is applied outside the mask.
178 google.protobuf.FieldMask update_mask = 5;176 google.protobuf.FieldMask update_mask = 5;
M proto/ermite/token.proto +5 -1
@@ -23,7 +23,8 @@ enum Scope {
2323 // SCOPE_MR_WRITE allows creating, commenting on and closing merge requests.
2424 // Wire name: mr:write.
2525 SCOPE_MR_WRITE = 4;
26- // SCOPE_MR_MERGE allows merging merge requests. Wire name: mr:merge.
26+ // SCOPE_MR_MERGE allows merging merge requests whose checks allow it. Wire name:
27+ // mr:merge.
2728 SCOPE_MR_MERGE = 5;
2829 // SCOPE_CI_WRITE allows re-running or cancelling CI runs. Wire name:
2930 // ci:write.
@@ -45,6 +46,9 @@ enum Scope {
4546 // SCOPE_ISSUE_WRITE allows creating, commenting on, closing and reopening
4647 // issues. Wire name: issue:write.
4748 SCOPE_ISSUE_WRITE = 11;
49+ // SCOPE_MR_FORCE_MERGE allows merging a merge request whatever its checks
50+ // say (MergeMergeRequestRequest.ignore_checks). Wire name: mr:force-merge.
51+ SCOPE_MR_FORCE_MERGE = 12;
4852 }
4953
5054 // Token describes a stored token. It never contains the secret nor its hash.
@@ -23,7 +23,8 @@ enum Scope {
23 // SCOPE_MR_WRITE allows creating, commenting on and closing merge requests.23 // SCOPE_MR_WRITE allows creating, commenting on and closing merge requests.
24 // Wire name: mr:write.24 // Wire name: mr:write.
25 SCOPE_MR_WRITE = 4;25 SCOPE_MR_WRITE = 4;
26- // SCOPE_MR_MERGE allows merging merge requests. Wire name: mr:merge.26+ // SCOPE_MR_MERGE allows merging merge requests whose checks allow it. Wire name:
27+ // mr:merge.
27 SCOPE_MR_MERGE = 5;28 SCOPE_MR_MERGE = 5;
28 // SCOPE_CI_WRITE allows re-running or cancelling CI runs. Wire name:29 // SCOPE_CI_WRITE allows re-running or cancelling CI runs. Wire name:
29 // ci:write.30 // ci:write.
@@ -45,6 +46,9 @@ enum Scope {
45 // SCOPE_ISSUE_WRITE allows creating, commenting on, closing and reopening46 // SCOPE_ISSUE_WRITE allows creating, commenting on, closing and reopening
46 // issues. Wire name: issue:write.47 // issues. Wire name: issue:write.
47 SCOPE_ISSUE_WRITE = 11;48 SCOPE_ISSUE_WRITE = 11;
49+ // SCOPE_MR_FORCE_MERGE allows merging a merge request whatever its checks
50+ // say (MergeMergeRequestRequest.ignore_checks). Wire name: mr:force-merge.
51+ SCOPE_MR_FORCE_MERGE = 12;
48 }52 }
49 53
50 // Token describes a stored token. It never contains the secret nor its hash.54 // Token describes a stored token. It never contains the secret nor its hash.

Comments1 open / 1

bnema

RepoSettings.failing_checks_block is kept as a deprecated field ([deprecated = true], ignored by servers) instead of being removed: buf breaking (FILE rules) refuses a field deletion. The contract change is now additive only.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
l
merge request: the list of files (j k move, enter opens, esc back)
M
merge request: the merge menu; there 1–3 pick the mode, D deletes the branch, enter merges
R
merge request: mark the head read
esc
close a dialog, leave a field

Branches 2

Tags 18

↑↓ moveenter openesc close