detached 81ede3b

#12 feat(proto): resolved issue state, ResolveIssue, issue history and merge request issue links

state
merged · 81ede3b · fast-forward
branch
feat/issue-resolved → main
opened
bnema ·
updated

Contract for resolved issues and issue ↔ merge request history.

  • ISSUE_STATE_RESOLVED: a merge with a closing reference ("Fixes #N") resolves the issue; CLOSED means closed without a fix. ResolveIssue (issue:write) resolves by hand; ReopenIssue works from closed or resolved.
  • IssueEvent / IssueEventKind (referenced, closed, reopened, resolved): append-only history in GetIssueResponse.events.
  • GetMergeRequestResponse.issues (MergeRequestIssue, MergeRequestIssueState) and issue_events. The new types live in merge_request.proto because issue.proto already imports it (no import cycle, no moved types).
  • Event issue_resolved (31), feature issues.resolve.

Checks: buf lint, buf breaking against main, buf generate, go build, go test.

CommitSubjectAuthorDateSignatureStatus
81ede3bdocs(proto): scope issue event ids to their issue and describe merge request history of unlinked issuesbriceGPG Verified
7cff81ffeat(proto): resolved issue state, ResolveIssue, issue history events and merge request issue linksbriceGPG Verified

Checks 4

10 files · +1123 -390
4/4
M docs/services.md +2 -2
@@ -6,9 +6,9 @@
66 | `GitService` | `ListRefs`, `GetTree`, `ListPaths`, `GetBlob` (streamed), `ListCommits`, `GetCommit` (structured diff), `ResolveRevision` |
77 | `TokenService` | `CreateToken` (secret shown once), `ListTokens`, `RevokeToken` |
88 | `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, history events, `closed_by_merge_request`), `AddIssueComment`, `CloseIssue`, `ResolveIssue`, `ReopenIssue`; owner only: `ListPendingIssues`, `ApproveIssue`, `RejectIssue`. States `OPEN`, `CLOSED`, `RESOLVED`; `ResolveIssue` needs `issue:write`. Features `issues`, `issues.links`, `issues.resolve`. Issues share numbers with merge requests |
1010 | `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`. Event 31: `issue_resolved` |
1212 | `ServerService` | `GetVersion` (version and features), `GetSigningKey`, `RotateOIDCKey` (owner only) |
1313 | `TrustedKeyService` | `ListTrustedKeys`, `AddTrustedKey` and `RemoveTrustedKey` (owner only). `Commit.verification` carries the result of the check (feature `commit_signatures`) |
1414 | `RunService` | `ListRuns`, `GetRun`, `GetJob`, `GetJobLog` (streamed, follow), `ListAnnotations`, `GetStepSummaries`, `CancelRun`, `RerunRun`, `DispatchWorkflow`, `ListWorkflows`, `DisableWorkflow`, `EnableWorkflow`, `ListChecks`, `ListRunners`, `RemoveRunner` |
@@ -6,9 +6,9 @@
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`, `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`) |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, history events, `closed_by_merge_request`), `AddIssueComment`, `CloseIssue`, `ResolveIssue`, `ReopenIssue`; owner only: `ListPendingIssues`, `ApproveIssue`, `RejectIssue`. States `OPEN`, `CLOSED`, `RESOLVED`; `ResolveIssue` needs `issue:write`. Features `issues`, `issues.links`, `issues.resolve`. 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`. Event 31: `issue_resolved` |
12 | `ServerService` | `GetVersion` (version and features), `GetSigningKey`, `RotateOIDCKey` (owner only) |12 | `ServerService` | `GetVersion` (version and features), `GetSigningKey`, `RotateOIDCKey` (owner only) |
13 | `TrustedKeyService` | `ListTrustedKeys`, `AddTrustedKey` and `RemoveTrustedKey` (owner only). `Commit.verification` carries the result of the check (feature `commit_signatures`) |13 | `TrustedKeyService` | `ListTrustedKeys`, `AddTrustedKey` and `RemoveTrustedKey` (owner only). `Commit.verification` carries the result of the check (feature `commit_signatures`) |
14 | `RunService` | `ListRuns`, `GetRun`, `GetJob`, `GetJobLog` (streamed, follow), `ListAnnotations`, `GetStepSummaries`, `CancelRun`, `RerunRun`, `DispatchWorkflow`, `ListWorkflows`, `DisableWorkflow`, `EnableWorkflow`, `ListChecks`, `ListRunners`, `RemoveRunner` |14 | `RunService` | `ListRuns`, `GetRun`, `GetJob`, `GetJobLog` (streamed, follow), `ListAnnotations`, `GetStepSummaries`, `CancelRun`, `RerunRun`, `DispatchWorkflow`, `ListWorkflows`, `DisableWorkflow`, `EnableWorkflow`, `ListChecks`, `ListRunners`, `RemoveRunner` |
M gen/ermite/ermiteconnect/event.connect.go +8 -6
@@ -49,9 +49,10 @@ type EventServiceClient interface {
4949 // for merge requests, merge_request_opened, merge_request_merged,
5050 // merge_request_closed, comment_added, comment_edited, comment_deleted and
5151 // comment_resolved (a thread resolved or reopened); for issues, issue_opened,
52- // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each
53- // one is delivered on the "repo:<name>" topic of its repository and on
54- // "home", subject to the visibility of the repository, except
52+ // issue_closed, issue_resolved, issue_reopened and issue_commented, and
53+ // issue_submitted. Each one is delivered on the "repo:<name>" topic of its
54+ // repository and on "home", subject to the visibility of the repository,
55+ // except
5556 // issue_submitted: it is delivered only on the "owner" topic, never on
5657 // "home" or "repo:<name>", and carries no content (see IssueSubmitted).
5758 //
@@ -125,9 +126,10 @@ type EventServiceHandler interface {
125126 // for merge requests, merge_request_opened, merge_request_merged,
126127 // merge_request_closed, comment_added, comment_edited, comment_deleted and
127128 // comment_resolved (a thread resolved or reopened); for issues, issue_opened,
128- // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each
129- // one is delivered on the "repo:<name>" topic of its repository and on
130- // "home", subject to the visibility of the repository, except
129+ // issue_closed, issue_resolved, issue_reopened and issue_commented, and
130+ // issue_submitted. Each one is delivered on the "repo:<name>" topic of its
131+ // repository and on "home", subject to the visibility of the repository,
132+ // except
131133 // issue_submitted: it is delivered only on the "owner" topic, never on
132134 // "home" or "repo:<name>", and carries no content (see IssueSubmitted).
133135 //
@@ -49,9 +49,10 @@ type EventServiceClient interface {
49 // for merge requests, merge_request_opened, merge_request_merged,49 // for merge requests, merge_request_opened, merge_request_merged,
50 // merge_request_closed, comment_added, comment_edited, comment_deleted and50 // merge_request_closed, comment_added, comment_edited, comment_deleted and
51 // comment_resolved (a thread resolved or reopened); for issues, issue_opened,51 // comment_resolved (a thread resolved or reopened); for issues, issue_opened,
52- // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each52+ // issue_closed, issue_resolved, issue_reopened and issue_commented, and
53- // one is delivered on the "repo:<name>" topic of its repository and on53+ // issue_submitted. Each one is delivered on the "repo:<name>" topic of its
54- // "home", subject to the visibility of the repository, except54+ // repository and on "home", subject to the visibility of the repository,
55+ // except
55 // issue_submitted: it is delivered only on the "owner" topic, never on56 // issue_submitted: it is delivered only on the "owner" topic, never on
56 // "home" or "repo:<name>", and carries no content (see IssueSubmitted).57 // "home" or "repo:<name>", and carries no content (see IssueSubmitted).
57 //58 //
@@ -125,9 +126,10 @@ type EventServiceHandler interface {
125 // for merge requests, merge_request_opened, merge_request_merged,126 // for merge requests, merge_request_opened, merge_request_merged,
126 // merge_request_closed, comment_added, comment_edited, comment_deleted and127 // merge_request_closed, comment_added, comment_edited, comment_deleted and
127 // comment_resolved (a thread resolved or reopened); for issues, issue_opened,128 // comment_resolved (a thread resolved or reopened); for issues, issue_opened,
128- // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each129+ // issue_closed, issue_resolved, issue_reopened and issue_commented, and
129- // one is delivered on the "repo:<name>" topic of its repository and on130+ // issue_submitted. Each one is delivered on the "repo:<name>" topic of its
130- // "home", subject to the visibility of the repository, except131+ // repository and on "home", subject to the visibility of the repository,
132+ // except
131 // issue_submitted: it is delivered only on the "owner" topic, never on133 // issue_submitted: it is delivered only on the "owner" topic, never on
132 // "home" or "repo:<name>", and carries no content (see IssueSubmitted).134 // "home" or "repo:<name>", and carries no content (see IssueSubmitted).
133 //135 //
M gen/ermite/ermiteconnect/issue.connect.go +35 -2
@@ -47,6 +47,9 @@ const (
4747 IssueServiceAddIssueCommentProcedure = "/ermite.IssueService/AddIssueComment"
4848 // IssueServiceCloseIssueProcedure is the fully-qualified name of the IssueService's CloseIssue RPC.
4949 IssueServiceCloseIssueProcedure = "/ermite.IssueService/CloseIssue"
50+ // IssueServiceResolveIssueProcedure is the fully-qualified name of the IssueService's ResolveIssue
51+ // RPC.
52+ IssueServiceResolveIssueProcedure = "/ermite.IssueService/ResolveIssue"
5053 // IssueServiceReopenIssueProcedure is the fully-qualified name of the IssueService's ReopenIssue
5154 // RPC.
5255 IssueServiceReopenIssueProcedure = "/ermite.IssueService/ReopenIssue"
@@ -73,7 +76,10 @@ type IssueServiceClient interface {
7376 AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error)
7477 // CloseIssue closes an issue. Needs the issue:write scope.
7578 CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error)
76- // ReopenIssue reopens an issue. Needs the issue:write scope.
79+ // ResolveIssue marks an open issue as resolved. Needs the issue:write scope.
80+ ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error)
81+ // ReopenIssue reopens a closed or resolved issue. Needs the issue:write
82+ // scope.
7783 ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error)
7884 // ListPendingIssues lists issues awaiting moderation, oldest first. Owner
7985 // rights only; anyone else gets NOT_FOUND.
@@ -127,6 +133,12 @@ func NewIssueServiceClient(httpClient connect.HTTPClient, baseURL string, opts .
127133 connect.WithSchema(issueServiceMethods.ByName("CloseIssue")),
128134 connect.WithClientOptions(opts...),
129135 ),
136+ resolveIssue: connect.NewClient[ermite.ResolveIssueRequest, ermite.ResolveIssueResponse](
137+ httpClient,
138+ baseURL+IssueServiceResolveIssueProcedure,
139+ connect.WithSchema(issueServiceMethods.ByName("ResolveIssue")),
140+ connect.WithClientOptions(opts...),
141+ ),
130142 reopenIssue: connect.NewClient[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse](
131143 httpClient,
132144 baseURL+IssueServiceReopenIssueProcedure,
@@ -161,6 +173,7 @@ type issueServiceClient struct {
161173 getIssue *connect.Client[ermite.GetIssueRequest, ermite.GetIssueResponse]
162174 addIssueComment *connect.Client[ermite.AddIssueCommentRequest, ermite.AddIssueCommentResponse]
163175 closeIssue *connect.Client[ermite.CloseIssueRequest, ermite.CloseIssueResponse]
176+ resolveIssue *connect.Client[ermite.ResolveIssueRequest, ermite.ResolveIssueResponse]
164177 reopenIssue *connect.Client[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse]
165178 listPendingIssues *connect.Client[ermite.ListPendingIssuesRequest, ermite.ListPendingIssuesResponse]
166179 approveIssue *connect.Client[ermite.ApproveIssueRequest, ermite.ApproveIssueResponse]
@@ -192,6 +205,11 @@ func (c *issueServiceClient) CloseIssue(ctx context.Context, req *connect.Reques
192205 return c.closeIssue.CallUnary(ctx, req)
193206 }
194207
208+// ResolveIssue calls ermite.IssueService.ResolveIssue.
209+func (c *issueServiceClient) ResolveIssue(ctx context.Context, req *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) {
210+ return c.resolveIssue.CallUnary(ctx, req)
211+}
212+
195213 // ReopenIssue calls ermite.IssueService.ReopenIssue.
196214 func (c *issueServiceClient) ReopenIssue(ctx context.Context, req *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) {
197215 return c.reopenIssue.CallUnary(ctx, req)
@@ -224,7 +242,10 @@ type IssueServiceHandler interface {
224242 AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error)
225243 // CloseIssue closes an issue. Needs the issue:write scope.
226244 CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error)
227- // ReopenIssue reopens an issue. Needs the issue:write scope.
245+ // ResolveIssue marks an open issue as resolved. Needs the issue:write scope.
246+ ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error)
247+ // ReopenIssue reopens a closed or resolved issue. Needs the issue:write
248+ // scope.
228249 ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error)
229250 // ListPendingIssues lists issues awaiting moderation, oldest first. Owner
230251 // rights only; anyone else gets NOT_FOUND.
@@ -274,6 +295,12 @@ func NewIssueServiceHandler(svc IssueServiceHandler, opts ...connect.HandlerOpti
274295 connect.WithSchema(issueServiceMethods.ByName("CloseIssue")),
275296 connect.WithHandlerOptions(opts...),
276297 )
298+ issueServiceResolveIssueHandler := connect.NewUnaryHandler(
299+ IssueServiceResolveIssueProcedure,
300+ svc.ResolveIssue,
301+ connect.WithSchema(issueServiceMethods.ByName("ResolveIssue")),
302+ connect.WithHandlerOptions(opts...),
303+ )
277304 issueServiceReopenIssueHandler := connect.NewUnaryHandler(
278305 IssueServiceReopenIssueProcedure,
279306 svc.ReopenIssue,
@@ -310,6 +337,8 @@ func NewIssueServiceHandler(svc IssueServiceHandler, opts ...connect.HandlerOpti
310337 issueServiceAddIssueCommentHandler.ServeHTTP(w, r)
311338 case IssueServiceCloseIssueProcedure:
312339 issueServiceCloseIssueHandler.ServeHTTP(w, r)
340+ case IssueServiceResolveIssueProcedure:
341+ issueServiceResolveIssueHandler.ServeHTTP(w, r)
313342 case IssueServiceReopenIssueProcedure:
314343 issueServiceReopenIssueHandler.ServeHTTP(w, r)
315344 case IssueServiceListPendingIssuesProcedure:
@@ -347,6 +376,10 @@ func (UnimplementedIssueServiceHandler) CloseIssue(context.Context, *connect.Req
347376 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.CloseIssue is not implemented"))
348377 }
349378
379+func (UnimplementedIssueServiceHandler) ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) {
380+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ResolveIssue is not implemented"))
381+}
382+
350383 func (UnimplementedIssueServiceHandler) ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) {
351384 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ReopenIssue is not implemented"))
352385 }
@@ -47,6 +47,9 @@ const (
47 IssueServiceAddIssueCommentProcedure = "/ermite.IssueService/AddIssueComment"47 IssueServiceAddIssueCommentProcedure = "/ermite.IssueService/AddIssueComment"
48 // IssueServiceCloseIssueProcedure is the fully-qualified name of the IssueService's CloseIssue RPC.48 // IssueServiceCloseIssueProcedure is the fully-qualified name of the IssueService's CloseIssue RPC.
49 IssueServiceCloseIssueProcedure = "/ermite.IssueService/CloseIssue"49 IssueServiceCloseIssueProcedure = "/ermite.IssueService/CloseIssue"
50+ // IssueServiceResolveIssueProcedure is the fully-qualified name of the IssueService's ResolveIssue
51+ // RPC.
52+ IssueServiceResolveIssueProcedure = "/ermite.IssueService/ResolveIssue"
50 // IssueServiceReopenIssueProcedure is the fully-qualified name of the IssueService's ReopenIssue53 // IssueServiceReopenIssueProcedure is the fully-qualified name of the IssueService's ReopenIssue
51 // RPC.54 // RPC.
52 IssueServiceReopenIssueProcedure = "/ermite.IssueService/ReopenIssue"55 IssueServiceReopenIssueProcedure = "/ermite.IssueService/ReopenIssue"
@@ -73,7 +76,10 @@ type IssueServiceClient interface {
73 AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error)76 AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error)
74 // CloseIssue closes an issue. Needs the issue:write scope.77 // CloseIssue closes an issue. Needs the issue:write scope.
75 CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error)78 CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error)
76- // ReopenIssue reopens an issue. Needs the issue:write scope.79+ // ResolveIssue marks an open issue as resolved. Needs the issue:write scope.
80+ ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error)
81+ // ReopenIssue reopens a closed or resolved issue. Needs the issue:write
82+ // scope.
77 ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error)83 ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error)
78 // ListPendingIssues lists issues awaiting moderation, oldest first. Owner84 // ListPendingIssues lists issues awaiting moderation, oldest first. Owner
79 // rights only; anyone else gets NOT_FOUND.85 // rights only; anyone else gets NOT_FOUND.
@@ -127,6 +133,12 @@ func NewIssueServiceClient(httpClient connect.HTTPClient, baseURL string, opts .
127 connect.WithSchema(issueServiceMethods.ByName("CloseIssue")),133 connect.WithSchema(issueServiceMethods.ByName("CloseIssue")),
128 connect.WithClientOptions(opts...),134 connect.WithClientOptions(opts...),
129 ),135 ),
136+ resolveIssue: connect.NewClient[ermite.ResolveIssueRequest, ermite.ResolveIssueResponse](
137+ httpClient,
138+ baseURL+IssueServiceResolveIssueProcedure,
139+ connect.WithSchema(issueServiceMethods.ByName("ResolveIssue")),
140+ connect.WithClientOptions(opts...),
141+ ),
130 reopenIssue: connect.NewClient[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse](142 reopenIssue: connect.NewClient[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse](
131 httpClient,143 httpClient,
132 baseURL+IssueServiceReopenIssueProcedure,144 baseURL+IssueServiceReopenIssueProcedure,
@@ -161,6 +173,7 @@ type issueServiceClient struct {
161 getIssue *connect.Client[ermite.GetIssueRequest, ermite.GetIssueResponse]173 getIssue *connect.Client[ermite.GetIssueRequest, ermite.GetIssueResponse]
162 addIssueComment *connect.Client[ermite.AddIssueCommentRequest, ermite.AddIssueCommentResponse]174 addIssueComment *connect.Client[ermite.AddIssueCommentRequest, ermite.AddIssueCommentResponse]
163 closeIssue *connect.Client[ermite.CloseIssueRequest, ermite.CloseIssueResponse]175 closeIssue *connect.Client[ermite.CloseIssueRequest, ermite.CloseIssueResponse]
176+ resolveIssue *connect.Client[ermite.ResolveIssueRequest, ermite.ResolveIssueResponse]
164 reopenIssue *connect.Client[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse]177 reopenIssue *connect.Client[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse]
165 listPendingIssues *connect.Client[ermite.ListPendingIssuesRequest, ermite.ListPendingIssuesResponse]178 listPendingIssues *connect.Client[ermite.ListPendingIssuesRequest, ermite.ListPendingIssuesResponse]
166 approveIssue *connect.Client[ermite.ApproveIssueRequest, ermite.ApproveIssueResponse]179 approveIssue *connect.Client[ermite.ApproveIssueRequest, ermite.ApproveIssueResponse]
@@ -192,6 +205,11 @@ func (c *issueServiceClient) CloseIssue(ctx context.Context, req *connect.Reques
192 return c.closeIssue.CallUnary(ctx, req)205 return c.closeIssue.CallUnary(ctx, req)
193 }206 }
194 207
208+// ResolveIssue calls ermite.IssueService.ResolveIssue.
209+func (c *issueServiceClient) ResolveIssue(ctx context.Context, req *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) {
210+ return c.resolveIssue.CallUnary(ctx, req)
211+}
212+
195 // ReopenIssue calls ermite.IssueService.ReopenIssue.213 // ReopenIssue calls ermite.IssueService.ReopenIssue.
196 func (c *issueServiceClient) ReopenIssue(ctx context.Context, req *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) {214 func (c *issueServiceClient) ReopenIssue(ctx context.Context, req *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) {
197 return c.reopenIssue.CallUnary(ctx, req)215 return c.reopenIssue.CallUnary(ctx, req)
@@ -224,7 +242,10 @@ type IssueServiceHandler interface {
224 AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error)242 AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error)
225 // CloseIssue closes an issue. Needs the issue:write scope.243 // CloseIssue closes an issue. Needs the issue:write scope.
226 CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error)244 CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error)
227- // ReopenIssue reopens an issue. Needs the issue:write scope.245+ // ResolveIssue marks an open issue as resolved. Needs the issue:write scope.
246+ ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error)
247+ // ReopenIssue reopens a closed or resolved issue. Needs the issue:write
248+ // scope.
228 ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error)249 ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error)
229 // ListPendingIssues lists issues awaiting moderation, oldest first. Owner250 // ListPendingIssues lists issues awaiting moderation, oldest first. Owner
230 // rights only; anyone else gets NOT_FOUND.251 // rights only; anyone else gets NOT_FOUND.
@@ -274,6 +295,12 @@ func NewIssueServiceHandler(svc IssueServiceHandler, opts ...connect.HandlerOpti
274 connect.WithSchema(issueServiceMethods.ByName("CloseIssue")),295 connect.WithSchema(issueServiceMethods.ByName("CloseIssue")),
275 connect.WithHandlerOptions(opts...),296 connect.WithHandlerOptions(opts...),
276 )297 )
298+ issueServiceResolveIssueHandler := connect.NewUnaryHandler(
299+ IssueServiceResolveIssueProcedure,
300+ svc.ResolveIssue,
301+ connect.WithSchema(issueServiceMethods.ByName("ResolveIssue")),
302+ connect.WithHandlerOptions(opts...),
303+ )
277 issueServiceReopenIssueHandler := connect.NewUnaryHandler(304 issueServiceReopenIssueHandler := connect.NewUnaryHandler(
278 IssueServiceReopenIssueProcedure,305 IssueServiceReopenIssueProcedure,
279 svc.ReopenIssue,306 svc.ReopenIssue,
@@ -310,6 +337,8 @@ func NewIssueServiceHandler(svc IssueServiceHandler, opts ...connect.HandlerOpti
310 issueServiceAddIssueCommentHandler.ServeHTTP(w, r)337 issueServiceAddIssueCommentHandler.ServeHTTP(w, r)
311 case IssueServiceCloseIssueProcedure:338 case IssueServiceCloseIssueProcedure:
312 issueServiceCloseIssueHandler.ServeHTTP(w, r)339 issueServiceCloseIssueHandler.ServeHTTP(w, r)
340+ case IssueServiceResolveIssueProcedure:
341+ issueServiceResolveIssueHandler.ServeHTTP(w, r)
313 case IssueServiceReopenIssueProcedure:342 case IssueServiceReopenIssueProcedure:
314 issueServiceReopenIssueHandler.ServeHTTP(w, r)343 issueServiceReopenIssueHandler.ServeHTTP(w, r)
315 case IssueServiceListPendingIssuesProcedure:344 case IssueServiceListPendingIssuesProcedure:
@@ -347,6 +376,10 @@ func (UnimplementedIssueServiceHandler) CloseIssue(context.Context, *connect.Req
347 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.CloseIssue is not implemented"))376 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.CloseIssue is not implemented"))
348 }377 }
349 378
379+func (UnimplementedIssueServiceHandler) ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) {
380+ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ResolveIssue is not implemented"))
381+}
382+
350 func (UnimplementedIssueServiceHandler) ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) {383 func (UnimplementedIssueServiceHandler) ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) {
351 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ReopenIssue is not implemented"))384 return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ReopenIssue is not implemented"))
352 }385 }
M gen/ermite/event.pb.go +175 -103 generated file: collapsed
M gen/ermite/issue.pb.go +216 -83 generated file: collapsed
M gen/ermite/merge_request.pb.go +546 -174
@@ -256,6 +256,128 @@ func (MergeabilityState) EnumDescriptor() ([]byte, []int) {
256256 return file_ermite_merge_request_proto_rawDescGZIP(), []int{3}
257257 }
258258
259+// MergeRequestIssueState is where an issue named by a merge request is in its
260+// life. Values share their numbers with IssueState (3, awaiting moderation,
261+// is never shown here). It exists because issue.proto imports this file and
262+// cannot be imported back.
263+type MergeRequestIssueState int32
264+
265+const (
266+ // Not set. Never returned by the server.
267+ MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED MergeRequestIssueState = 0
268+ // The issue is open.
269+ MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_OPEN MergeRequestIssueState = 1
270+ // The issue is closed without being resolved.
271+ MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_CLOSED MergeRequestIssueState = 2
272+ // The issue was resolved, by a merge or by hand.
273+ MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_RESOLVED MergeRequestIssueState = 4
274+)
275+
276+// Enum value maps for MergeRequestIssueState.
277+var (
278+ MergeRequestIssueState_name = map[int32]string{
279+ 0: "MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED",
280+ 1: "MERGE_REQUEST_ISSUE_STATE_OPEN",
281+ 2: "MERGE_REQUEST_ISSUE_STATE_CLOSED",
282+ 4: "MERGE_REQUEST_ISSUE_STATE_RESOLVED",
283+ }
284+ MergeRequestIssueState_value = map[string]int32{
285+ "MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED": 0,
286+ "MERGE_REQUEST_ISSUE_STATE_OPEN": 1,
287+ "MERGE_REQUEST_ISSUE_STATE_CLOSED": 2,
288+ "MERGE_REQUEST_ISSUE_STATE_RESOLVED": 4,
289+ }
290+)
291+
292+func (x MergeRequestIssueState) Enum() *MergeRequestIssueState {
293+ p := new(MergeRequestIssueState)
294+ *p = x
295+ return p
296+}
297+
298+func (x MergeRequestIssueState) String() string {
299+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
300+}
301+
302+func (MergeRequestIssueState) Descriptor() protoreflect.EnumDescriptor {
303+ return file_ermite_merge_request_proto_enumTypes[4].Descriptor()
304+}
305+
306+func (MergeRequestIssueState) Type() protoreflect.EnumType {
307+ return &file_ermite_merge_request_proto_enumTypes[4]
308+}
309+
310+func (x MergeRequestIssueState) Number() protoreflect.EnumNumber {
311+ return protoreflect.EnumNumber(x)
312+}
313+
314+// Deprecated: Use MergeRequestIssueState.Descriptor instead.
315+func (MergeRequestIssueState) EnumDescriptor() ([]byte, []int) {
316+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{4}
317+}
318+
319+// IssueEventKind is what happened in an IssueEvent.
320+type IssueEventKind int32
321+
322+const (
323+ // Not set. Never returned by the server.
324+ IssueEventKind_ISSUE_EVENT_KIND_UNSPECIFIED IssueEventKind = 0
325+ // A merge request started naming the issue; closes says whether with a
326+ // closing reference.
327+ IssueEventKind_ISSUE_EVENT_KIND_REFERENCED IssueEventKind = 1
328+ // The issue was closed without being resolved.
329+ IssueEventKind_ISSUE_EVENT_KIND_CLOSED IssueEventKind = 2
330+ // The issue was reopened.
331+ IssueEventKind_ISSUE_EVENT_KIND_REOPENED IssueEventKind = 3
332+ // The issue was resolved; merge_request is set when a merge resolved it.
333+ IssueEventKind_ISSUE_EVENT_KIND_RESOLVED IssueEventKind = 4
334+)
335+
336+// Enum value maps for IssueEventKind.
337+var (
338+ IssueEventKind_name = map[int32]string{
339+ 0: "ISSUE_EVENT_KIND_UNSPECIFIED",
340+ 1: "ISSUE_EVENT_KIND_REFERENCED",
341+ 2: "ISSUE_EVENT_KIND_CLOSED",
342+ 3: "ISSUE_EVENT_KIND_REOPENED",
343+ 4: "ISSUE_EVENT_KIND_RESOLVED",
344+ }
345+ IssueEventKind_value = map[string]int32{
346+ "ISSUE_EVENT_KIND_UNSPECIFIED": 0,
347+ "ISSUE_EVENT_KIND_REFERENCED": 1,
348+ "ISSUE_EVENT_KIND_CLOSED": 2,
349+ "ISSUE_EVENT_KIND_REOPENED": 3,
350+ "ISSUE_EVENT_KIND_RESOLVED": 4,
351+ }
352+)
353+
354+func (x IssueEventKind) Enum() *IssueEventKind {
355+ p := new(IssueEventKind)
356+ *p = x
357+ return p
358+}
359+
360+func (x IssueEventKind) String() string {
361+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
362+}
363+
364+func (IssueEventKind) Descriptor() protoreflect.EnumDescriptor {
365+ return file_ermite_merge_request_proto_enumTypes[5].Descriptor()
366+}
367+
368+func (IssueEventKind) Type() protoreflect.EnumType {
369+ return &file_ermite_merge_request_proto_enumTypes[5]
370+}
371+
372+func (x IssueEventKind) Number() protoreflect.EnumNumber {
373+ return protoreflect.EnumNumber(x)
374+}
375+
376+// Deprecated: Use IssueEventKind.Descriptor instead.
377+func (IssueEventKind) EnumDescriptor() ([]byte, []int) {
378+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{5}
379+}
380+
259381 // Mergeability is the result of checking an open merge request against the
260382 // tips of its branches.
261383 type Mergeability struct {
@@ -1185,6 +1307,196 @@ func (x *ListMergeRequestsResponse) GetNextPageToken() string {
11851307 return ""
11861308 }
11871309
1310+// MergeRequestIssue is an issue of the same repository that a merge request
1311+// names ("#N").
1312+type MergeRequestIssue struct {
1313+ state protoimpl.MessageState `protogen:"open.v1"`
1314+ // Number is the number of the issue.
1315+ Number int64 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
1316+ // Title is the title of the issue.
1317+ Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
1318+ // State is where the issue is in its life.
1319+ State MergeRequestIssueState `protobuf:"varint,3,opt,name=state,proto3,enum=ermite.MergeRequestIssueState" json:"state,omitempty"`
1320+ // Closes says that a closing reference names the issue: merging the request
1321+ // resolves it.
1322+ Closes bool `protobuf:"varint,4,opt,name=closes,proto3" json:"closes,omitempty"`
1323+ unknownFields protoimpl.UnknownFields
1324+ sizeCache protoimpl.SizeCache
1325+}
1326+
1327+func (x *MergeRequestIssue) Reset() {
1328+ *x = MergeRequestIssue{}
1329+ mi := &file_ermite_merge_request_proto_msgTypes[9]
1330+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1331+ ms.StoreMessageInfo(mi)
1332+}
1333+
1334+func (x *MergeRequestIssue) String() string {
1335+ return protoimpl.X.MessageStringOf(x)
1336+}
1337+
1338+func (*MergeRequestIssue) ProtoMessage() {}
1339+
1340+func (x *MergeRequestIssue) ProtoReflect() protoreflect.Message {
1341+ mi := &file_ermite_merge_request_proto_msgTypes[9]
1342+ if x != nil {
1343+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1344+ if ms.LoadMessageInfo() == nil {
1345+ ms.StoreMessageInfo(mi)
1346+ }
1347+ return ms
1348+ }
1349+ return mi.MessageOf(x)
1350+}
1351+
1352+// Deprecated: Use MergeRequestIssue.ProtoReflect.Descriptor instead.
1353+func (*MergeRequestIssue) Descriptor() ([]byte, []int) {
1354+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{9}
1355+}
1356+
1357+func (x *MergeRequestIssue) GetNumber() int64 {
1358+ if x != nil {
1359+ return x.Number
1360+ }
1361+ return 0
1362+}
1363+
1364+func (x *MergeRequestIssue) GetTitle() string {
1365+ if x != nil {
1366+ return x.Title
1367+ }
1368+ return ""
1369+}
1370+
1371+func (x *MergeRequestIssue) GetState() MergeRequestIssueState {
1372+ if x != nil {
1373+ return x.State
1374+ }
1375+ return MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED
1376+}
1377+
1378+func (x *MergeRequestIssue) GetCloses() bool {
1379+ if x != nil {
1380+ return x.Closes
1381+ }
1382+ return false
1383+}
1384+
1385+// IssueEvent is one entry in the history of an issue. Events are append-only:
1386+// a reference that later disappears does not remove its event.
1387+type IssueEvent struct {
1388+ state protoimpl.MessageState `protogen:"open.v1"`
1389+ // Id identifies the event within its issue. Opaque. Events of different
1390+ // issues can share an id: key them by (issue, id).
1391+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
1392+ // Kind is what happened.
1393+ Kind IssueEventKind `protobuf:"varint,2,opt,name=kind,proto3,enum=ermite.IssueEventKind" json:"kind,omitempty"`
1394+ // Issue is the number of the issue.
1395+ Issue int64 `protobuf:"varint,3,opt,name=issue,proto3" json:"issue,omitempty"`
1396+ // MergeRequest is the number of the merge request involved; 0 if none.
1397+ MergeRequest int64 `protobuf:"varint,4,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
1398+ // MergeRequestTitle is the title of that merge request at read time; empty
1399+ // if none.
1400+ MergeRequestTitle string `protobuf:"bytes,5,opt,name=merge_request_title,json=mergeRequestTitle,proto3" json:"merge_request_title,omitempty"`
1401+ // Closes says that the reference was a closing one. Only set for
1402+ // ISSUE_EVENT_KIND_REFERENCED.
1403+ Closes bool `protobuf:"varint,6,opt,name=closes,proto3" json:"closes,omitempty"`
1404+ // Actor names who caused the event, like Issue.author: the label of the
1405+ // token or session. For events triggered by a merge, the label of who
1406+ // merged.
1407+ Actor string `protobuf:"bytes,7,opt,name=actor,proto3" json:"actor,omitempty"`
1408+ // CreatedAt is when the event happened.
1409+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
1410+ unknownFields protoimpl.UnknownFields
1411+ sizeCache protoimpl.SizeCache
1412+}
1413+
1414+func (x *IssueEvent) Reset() {
1415+ *x = IssueEvent{}
1416+ mi := &file_ermite_merge_request_proto_msgTypes[10]
1417+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1418+ ms.StoreMessageInfo(mi)
1419+}
1420+
1421+func (x *IssueEvent) String() string {
1422+ return protoimpl.X.MessageStringOf(x)
1423+}
1424+
1425+func (*IssueEvent) ProtoMessage() {}
1426+
1427+func (x *IssueEvent) ProtoReflect() protoreflect.Message {
1428+ mi := &file_ermite_merge_request_proto_msgTypes[10]
1429+ if x != nil {
1430+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1431+ if ms.LoadMessageInfo() == nil {
1432+ ms.StoreMessageInfo(mi)
1433+ }
1434+ return ms
1435+ }
1436+ return mi.MessageOf(x)
1437+}
1438+
1439+// Deprecated: Use IssueEvent.ProtoReflect.Descriptor instead.
1440+func (*IssueEvent) Descriptor() ([]byte, []int) {
1441+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{10}
1442+}
1443+
1444+func (x *IssueEvent) GetId() string {
1445+ if x != nil {
1446+ return x.Id
1447+ }
1448+ return ""
1449+}
1450+
1451+func (x *IssueEvent) GetKind() IssueEventKind {
1452+ if x != nil {
1453+ return x.Kind
1454+ }
1455+ return IssueEventKind_ISSUE_EVENT_KIND_UNSPECIFIED
1456+}
1457+
1458+func (x *IssueEvent) GetIssue() int64 {
1459+ if x != nil {
1460+ return x.Issue
1461+ }
1462+ return 0
1463+}
1464+
1465+func (x *IssueEvent) GetMergeRequest() int64 {
1466+ if x != nil {
1467+ return x.MergeRequest
1468+ }
1469+ return 0
1470+}
1471+
1472+func (x *IssueEvent) GetMergeRequestTitle() string {
1473+ if x != nil {
1474+ return x.MergeRequestTitle
1475+ }
1476+ return ""
1477+}
1478+
1479+func (x *IssueEvent) GetCloses() bool {
1480+ if x != nil {
1481+ return x.Closes
1482+ }
1483+ return false
1484+}
1485+
1486+func (x *IssueEvent) GetActor() string {
1487+ if x != nil {
1488+ return x.Actor
1489+ }
1490+ return ""
1491+}
1492+
1493+func (x *IssueEvent) GetCreatedAt() *timestamppb.Timestamp {
1494+ if x != nil {
1495+ return x.CreatedAt
1496+ }
1497+ return nil
1498+}
1499+
11881500 // GetMergeRequestRequest selects a merge request.
11891501 type GetMergeRequestRequest struct {
11901502 state protoimpl.MessageState `protogen:"open.v1"`
@@ -1205,7 +1517,7 @@ type GetMergeRequestRequest struct {
12051517
12061518 func (x *GetMergeRequestRequest) Reset() {
12071519 *x = GetMergeRequestRequest{}
1208- mi := &file_ermite_merge_request_proto_msgTypes[9]
1520+ mi := &file_ermite_merge_request_proto_msgTypes[11]
12091521 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
12101522 ms.StoreMessageInfo(mi)
12111523 }
@@ -1217,7 +1529,7 @@ func (x *GetMergeRequestRequest) String() string {
12171529 func (*GetMergeRequestRequest) ProtoMessage() {}
12181530
12191531 func (x *GetMergeRequestRequest) ProtoReflect() protoreflect.Message {
1220- mi := &file_ermite_merge_request_proto_msgTypes[9]
1532+ mi := &file_ermite_merge_request_proto_msgTypes[11]
12211533 if x != nil {
12221534 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
12231535 if ms.LoadMessageInfo() == nil {
@@ -1230,7 +1542,7 @@ func (x *GetMergeRequestRequest) ProtoReflect() protoreflect.Message {
12301542
12311543 // Deprecated: Use GetMergeRequestRequest.ProtoReflect.Descriptor instead.
12321544 func (*GetMergeRequestRequest) Descriptor() ([]byte, []int) {
1233- return file_ermite_merge_request_proto_rawDescGZIP(), []int{9}
1545+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{11}
12341546 }
12351547
12361548 func (x *GetMergeRequestRequest) GetRepo() string {
@@ -1289,14 +1601,22 @@ type GetMergeRequestResponse struct {
12891601 LastReadLost bool `protobuf:"varint,9,opt,name=last_read_lost,json=lastReadLost,proto3" json:"last_read_lost,omitempty"`
12901602 // Verdicts are the current verdicts, one per author who gave one, ordered
12911603 // by the comment that carries them, oldest first.
1292- Verdicts []*AuthorVerdict `protobuf:"bytes,10,rep,name=verdicts,proto3" json:"verdicts,omitempty"`
1604+ Verdicts []*AuthorVerdict `protobuf:"bytes,10,rep,name=verdicts,proto3" json:"verdicts,omitempty"`
1605+ // Issues are the issues of the same repository that the merge request names,
1606+ // ascending by number, at most 100. Empty when issues are off.
1607+ Issues []*MergeRequestIssue `protobuf:"bytes,11,rep,name=issues,proto3" json:"issues,omitempty"`
1608+ // IssueEvents are the history entries that involve this merge request: the
1609+ // REFERENCED and RESOLVED events of the issues it names or once named,
1610+ // oldest first, at most 500. An event can name an issue that is no longer
1611+ // in issues. Empty when issues are off.
1612+ IssueEvents []*IssueEvent `protobuf:"bytes,12,rep,name=issue_events,json=issueEvents,proto3" json:"issue_events,omitempty"`
12931613 unknownFields protoimpl.UnknownFields
12941614 sizeCache protoimpl.SizeCache
12951615 }
12961616
12971617 func (x *GetMergeRequestResponse) Reset() {
12981618 *x = GetMergeRequestResponse{}
1299- mi := &file_ermite_merge_request_proto_msgTypes[10]
1619+ mi := &file_ermite_merge_request_proto_msgTypes[12]
13001620 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
13011621 ms.StoreMessageInfo(mi)
13021622 }
@@ -1308,7 +1628,7 @@ func (x *GetMergeRequestResponse) String() string {
13081628 func (*GetMergeRequestResponse) ProtoMessage() {}
13091629
13101630 func (x *GetMergeRequestResponse) ProtoReflect() protoreflect.Message {
1311- mi := &file_ermite_merge_request_proto_msgTypes[10]
1631+ mi := &file_ermite_merge_request_proto_msgTypes[12]
13121632 if x != nil {
13131633 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
13141634 if ms.LoadMessageInfo() == nil {
@@ -1321,7 +1641,7 @@ func (x *GetMergeRequestResponse) ProtoReflect() protoreflect.Message {
13211641
13221642 // Deprecated: Use GetMergeRequestResponse.ProtoReflect.Descriptor instead.
13231643 func (*GetMergeRequestResponse) Descriptor() ([]byte, []int) {
1324- return file_ermite_merge_request_proto_rawDescGZIP(), []int{10}
1644+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{12}
13251645 }
13261646
13271647 func (x *GetMergeRequestResponse) GetMergeRequest() *MergeRequest {
@@ -1394,6 +1714,20 @@ func (x *GetMergeRequestResponse) GetVerdicts() []*AuthorVerdict {
13941714 return nil
13951715 }
13961716
1717+func (x *GetMergeRequestResponse) GetIssues() []*MergeRequestIssue {
1718+ if x != nil {
1719+ return x.Issues
1720+ }
1721+ return nil
1722+}
1723+
1724+func (x *GetMergeRequestResponse) GetIssueEvents() []*IssueEvent {
1725+ if x != nil {
1726+ return x.IssueEvents
1727+ }
1728+ return nil
1729+}
1730+
13971731 // AddCommentRequest describes the comment to add.
13981732 type AddCommentRequest struct {
13991733 state protoimpl.MessageState `protogen:"open.v1"`
@@ -1430,7 +1764,7 @@ type AddCommentRequest struct {
14301764
14311765 func (x *AddCommentRequest) Reset() {
14321766 *x = AddCommentRequest{}
1433- mi := &file_ermite_merge_request_proto_msgTypes[11]
1767+ mi := &file_ermite_merge_request_proto_msgTypes[13]
14341768 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
14351769 ms.StoreMessageInfo(mi)
14361770 }
@@ -1442,7 +1776,7 @@ func (x *AddCommentRequest) String() string {
14421776 func (*AddCommentRequest) ProtoMessage() {}
14431777
14441778 func (x *AddCommentRequest) ProtoReflect() protoreflect.Message {
1445- mi := &file_ermite_merge_request_proto_msgTypes[11]
1779+ mi := &file_ermite_merge_request_proto_msgTypes[13]
14461780 if x != nil {
14471781 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
14481782 if ms.LoadMessageInfo() == nil {
@@ -1455,7 +1789,7 @@ func (x *AddCommentRequest) ProtoReflect() protoreflect.Message {
14551789
14561790 // Deprecated: Use AddCommentRequest.ProtoReflect.Descriptor instead.
14571791 func (*AddCommentRequest) Descriptor() ([]byte, []int) {
1458- return file_ermite_merge_request_proto_rawDescGZIP(), []int{11}
1792+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{13}
14591793 }
14601794
14611795 func (x *AddCommentRequest) GetRepo() string {
@@ -1532,7 +1866,7 @@ type AddCommentResponse struct {
15321866
15331867 func (x *AddCommentResponse) Reset() {
15341868 *x = AddCommentResponse{}
1535- mi := &file_ermite_merge_request_proto_msgTypes[12]
1869+ mi := &file_ermite_merge_request_proto_msgTypes[14]
15361870 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
15371871 ms.StoreMessageInfo(mi)
15381872 }
@@ -1544,7 +1878,7 @@ func (x *AddCommentResponse) String() string {
15441878 func (*AddCommentResponse) ProtoMessage() {}
15451879
15461880 func (x *AddCommentResponse) ProtoReflect() protoreflect.Message {
1547- mi := &file_ermite_merge_request_proto_msgTypes[12]
1881+ mi := &file_ermite_merge_request_proto_msgTypes[14]
15481882 if x != nil {
15491883 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
15501884 if ms.LoadMessageInfo() == nil {
@@ -1557,7 +1891,7 @@ func (x *AddCommentResponse) ProtoReflect() protoreflect.Message {
15571891
15581892 // Deprecated: Use AddCommentResponse.ProtoReflect.Descriptor instead.
15591893 func (*AddCommentResponse) Descriptor() ([]byte, []int) {
1560- return file_ermite_merge_request_proto_rawDescGZIP(), []int{12}
1894+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{14}
15611895 }
15621896
15631897 func (x *AddCommentResponse) GetComment() *Comment {
@@ -1585,7 +1919,7 @@ type EditCommentRequest struct {
15851919
15861920 func (x *EditCommentRequest) Reset() {
15871921 *x = EditCommentRequest{}
1588- mi := &file_ermite_merge_request_proto_msgTypes[13]
1922+ mi := &file_ermite_merge_request_proto_msgTypes[15]
15891923 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
15901924 ms.StoreMessageInfo(mi)
15911925 }
@@ -1597,7 +1931,7 @@ func (x *EditCommentRequest) String() string {
15971931 func (*EditCommentRequest) ProtoMessage() {}
15981932
15991933 func (x *EditCommentRequest) ProtoReflect() protoreflect.Message {
1600- mi := &file_ermite_merge_request_proto_msgTypes[13]
1934+ mi := &file_ermite_merge_request_proto_msgTypes[15]
16011935 if x != nil {
16021936 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
16031937 if ms.LoadMessageInfo() == nil {
@@ -1610,7 +1944,7 @@ func (x *EditCommentRequest) ProtoReflect() protoreflect.Message {
16101944
16111945 // Deprecated: Use EditCommentRequest.ProtoReflect.Descriptor instead.
16121946 func (*EditCommentRequest) Descriptor() ([]byte, []int) {
1613- return file_ermite_merge_request_proto_rawDescGZIP(), []int{13}
1947+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{15}
16141948 }
16151949
16161950 func (x *EditCommentRequest) GetRepo() string {
@@ -1652,7 +1986,7 @@ type EditCommentResponse struct {
16521986
16531987 func (x *EditCommentResponse) Reset() {
16541988 *x = EditCommentResponse{}
1655- mi := &file_ermite_merge_request_proto_msgTypes[14]
1989+ mi := &file_ermite_merge_request_proto_msgTypes[16]
16561990 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
16571991 ms.StoreMessageInfo(mi)
16581992 }
@@ -1664,7 +1998,7 @@ func (x *EditCommentResponse) String() string {
16641998 func (*EditCommentResponse) ProtoMessage() {}
16651999
16662000 func (x *EditCommentResponse) ProtoReflect() protoreflect.Message {
1667- mi := &file_ermite_merge_request_proto_msgTypes[14]
2001+ mi := &file_ermite_merge_request_proto_msgTypes[16]
16682002 if x != nil {
16692003 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
16702004 if ms.LoadMessageInfo() == nil {
@@ -1677,7 +2011,7 @@ func (x *EditCommentResponse) ProtoReflect() protoreflect.Message {
16772011
16782012 // Deprecated: Use EditCommentResponse.ProtoReflect.Descriptor instead.
16792013 func (*EditCommentResponse) Descriptor() ([]byte, []int) {
1680- return file_ermite_merge_request_proto_rawDescGZIP(), []int{14}
2014+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{16}
16812015 }
16822016
16832017 func (x *EditCommentResponse) GetComment() *Comment {
@@ -1702,7 +2036,7 @@ type DeleteCommentRequest struct {
17022036
17032037 func (x *DeleteCommentRequest) Reset() {
17042038 *x = DeleteCommentRequest{}
1705- mi := &file_ermite_merge_request_proto_msgTypes[15]
2039+ mi := &file_ermite_merge_request_proto_msgTypes[17]
17062040 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
17072041 ms.StoreMessageInfo(mi)
17082042 }
@@ -1714,7 +2048,7 @@ func (x *DeleteCommentRequest) String() string {
17142048 func (*DeleteCommentRequest) ProtoMessage() {}
17152049
17162050 func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message {
1717- mi := &file_ermite_merge_request_proto_msgTypes[15]
2051+ mi := &file_ermite_merge_request_proto_msgTypes[17]
17182052 if x != nil {
17192053 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
17202054 if ms.LoadMessageInfo() == nil {
@@ -1727,7 +2061,7 @@ func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message {
17272061
17282062 // Deprecated: Use DeleteCommentRequest.ProtoReflect.Descriptor instead.
17292063 func (*DeleteCommentRequest) Descriptor() ([]byte, []int) {
1730- return file_ermite_merge_request_proto_rawDescGZIP(), []int{15}
2064+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{17}
17312065 }
17322066
17332067 func (x *DeleteCommentRequest) GetRepo() string {
@@ -1762,7 +2096,7 @@ type DeleteCommentResponse struct {
17622096
17632097 func (x *DeleteCommentResponse) Reset() {
17642098 *x = DeleteCommentResponse{}
1765- mi := &file_ermite_merge_request_proto_msgTypes[16]
2099+ mi := &file_ermite_merge_request_proto_msgTypes[18]
17662100 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
17672101 ms.StoreMessageInfo(mi)
17682102 }
@@ -1774,7 +2108,7 @@ func (x *DeleteCommentResponse) String() string {
17742108 func (*DeleteCommentResponse) ProtoMessage() {}
17752109
17762110 func (x *DeleteCommentResponse) ProtoReflect() protoreflect.Message {
1777- mi := &file_ermite_merge_request_proto_msgTypes[16]
2111+ mi := &file_ermite_merge_request_proto_msgTypes[18]
17782112 if x != nil {
17792113 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
17802114 if ms.LoadMessageInfo() == nil {
@@ -1787,7 +2121,7 @@ func (x *DeleteCommentResponse) ProtoReflect() protoreflect.Message {
17872121
17882122 // Deprecated: Use DeleteCommentResponse.ProtoReflect.Descriptor instead.
17892123 func (*DeleteCommentResponse) Descriptor() ([]byte, []int) {
1790- return file_ermite_merge_request_proto_rawDescGZIP(), []int{16}
2124+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{18}
17912125 }
17922126
17932127 func (x *DeleteCommentResponse) GetComment() *Comment {
@@ -1814,7 +2148,7 @@ type ResolveCommentRequest struct {
18142148
18152149 func (x *ResolveCommentRequest) Reset() {
18162150 *x = ResolveCommentRequest{}
1817- mi := &file_ermite_merge_request_proto_msgTypes[17]
2151+ mi := &file_ermite_merge_request_proto_msgTypes[19]
18182152 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
18192153 ms.StoreMessageInfo(mi)
18202154 }
@@ -1826,7 +2160,7 @@ func (x *ResolveCommentRequest) String() string {
18262160 func (*ResolveCommentRequest) ProtoMessage() {}
18272161
18282162 func (x *ResolveCommentRequest) ProtoReflect() protoreflect.Message {
1829- mi := &file_ermite_merge_request_proto_msgTypes[17]
2163+ mi := &file_ermite_merge_request_proto_msgTypes[19]
18302164 if x != nil {
18312165 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
18322166 if ms.LoadMessageInfo() == nil {
@@ -1839,7 +2173,7 @@ func (x *ResolveCommentRequest) ProtoReflect() protoreflect.Message {
18392173
18402174 // Deprecated: Use ResolveCommentRequest.ProtoReflect.Descriptor instead.
18412175 func (*ResolveCommentRequest) Descriptor() ([]byte, []int) {
1842- return file_ermite_merge_request_proto_rawDescGZIP(), []int{17}
2176+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{19}
18432177 }
18442178
18452179 func (x *ResolveCommentRequest) GetRepo() string {
@@ -1881,7 +2215,7 @@ type ResolveCommentResponse struct {
18812215
18822216 func (x *ResolveCommentResponse) Reset() {
18832217 *x = ResolveCommentResponse{}
1884- mi := &file_ermite_merge_request_proto_msgTypes[18]
2218+ mi := &file_ermite_merge_request_proto_msgTypes[20]
18852219 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
18862220 ms.StoreMessageInfo(mi)
18872221 }
@@ -1893,7 +2227,7 @@ func (x *ResolveCommentResponse) String() string {
18932227 func (*ResolveCommentResponse) ProtoMessage() {}
18942228
18952229 func (x *ResolveCommentResponse) ProtoReflect() protoreflect.Message {
1896- mi := &file_ermite_merge_request_proto_msgTypes[18]
2230+ mi := &file_ermite_merge_request_proto_msgTypes[20]
18972231 if x != nil {
18982232 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
18992233 if ms.LoadMessageInfo() == nil {
@@ -1906,7 +2240,7 @@ func (x *ResolveCommentResponse) ProtoReflect() protoreflect.Message {
19062240
19072241 // Deprecated: Use ResolveCommentResponse.ProtoReflect.Descriptor instead.
19082242 func (*ResolveCommentResponse) Descriptor() ([]byte, []int) {
1909- return file_ermite_merge_request_proto_rawDescGZIP(), []int{18}
2243+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{20}
19102244 }
19112245
19122246 func (x *ResolveCommentResponse) GetComment() *Comment {
@@ -1929,7 +2263,7 @@ type CloseMergeRequestRequest struct {
19292263
19302264 func (x *CloseMergeRequestRequest) Reset() {
19312265 *x = CloseMergeRequestRequest{}
1932- mi := &file_ermite_merge_request_proto_msgTypes[19]
2266+ mi := &file_ermite_merge_request_proto_msgTypes[21]
19332267 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
19342268 ms.StoreMessageInfo(mi)
19352269 }
@@ -1941,7 +2275,7 @@ func (x *CloseMergeRequestRequest) String() string {
19412275 func (*CloseMergeRequestRequest) ProtoMessage() {}
19422276
19432277 func (x *CloseMergeRequestRequest) ProtoReflect() protoreflect.Message {
1944- mi := &file_ermite_merge_request_proto_msgTypes[19]
2278+ mi := &file_ermite_merge_request_proto_msgTypes[21]
19452279 if x != nil {
19462280 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
19472281 if ms.LoadMessageInfo() == nil {
@@ -1954,7 +2288,7 @@ func (x *CloseMergeRequestRequest) ProtoReflect() protoreflect.Message {
19542288
19552289 // Deprecated: Use CloseMergeRequestRequest.ProtoReflect.Descriptor instead.
19562290 func (*CloseMergeRequestRequest) Descriptor() ([]byte, []int) {
1957- return file_ermite_merge_request_proto_rawDescGZIP(), []int{19}
2291+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}
19582292 }
19592293
19602294 func (x *CloseMergeRequestRequest) GetRepo() string {
@@ -1982,7 +2316,7 @@ type CloseMergeRequestResponse struct {
19822316
19832317 func (x *CloseMergeRequestResponse) Reset() {
19842318 *x = CloseMergeRequestResponse{}
1985- mi := &file_ermite_merge_request_proto_msgTypes[20]
2319+ mi := &file_ermite_merge_request_proto_msgTypes[22]
19862320 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
19872321 ms.StoreMessageInfo(mi)
19882322 }
@@ -1994,7 +2328,7 @@ func (x *CloseMergeRequestResponse) String() string {
19942328 func (*CloseMergeRequestResponse) ProtoMessage() {}
19952329
19962330 func (x *CloseMergeRequestResponse) ProtoReflect() protoreflect.Message {
1997- mi := &file_ermite_merge_request_proto_msgTypes[20]
2331+ mi := &file_ermite_merge_request_proto_msgTypes[22]
19982332 if x != nil {
19992333 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
20002334 if ms.LoadMessageInfo() == nil {
@@ -2007,7 +2341,7 @@ func (x *CloseMergeRequestResponse) ProtoReflect() protoreflect.Message {
20072341
20082342 // Deprecated: Use CloseMergeRequestResponse.ProtoReflect.Descriptor instead.
20092343 func (*CloseMergeRequestResponse) Descriptor() ([]byte, []int) {
2010- return file_ermite_merge_request_proto_rawDescGZIP(), []int{20}
2344+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}
20112345 }
20122346
20132347 func (x *CloseMergeRequestResponse) GetMergeRequest() *MergeRequest {
@@ -2030,7 +2364,7 @@ type MarkReadyRequest struct {
20302364
20312365 func (x *MarkReadyRequest) Reset() {
20322366 *x = MarkReadyRequest{}
2033- mi := &file_ermite_merge_request_proto_msgTypes[21]
2367+ mi := &file_ermite_merge_request_proto_msgTypes[23]
20342368 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
20352369 ms.StoreMessageInfo(mi)
20362370 }
@@ -2042,7 +2376,7 @@ func (x *MarkReadyRequest) String() string {
20422376 func (*MarkReadyRequest) ProtoMessage() {}
20432377
20442378 func (x *MarkReadyRequest) ProtoReflect() protoreflect.Message {
2045- mi := &file_ermite_merge_request_proto_msgTypes[21]
2379+ mi := &file_ermite_merge_request_proto_msgTypes[23]
20462380 if x != nil {
20472381 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
20482382 if ms.LoadMessageInfo() == nil {
@@ -2055,7 +2389,7 @@ func (x *MarkReadyRequest) ProtoReflect() protoreflect.Message {
20552389
20562390 // Deprecated: Use MarkReadyRequest.ProtoReflect.Descriptor instead.
20572391 func (*MarkReadyRequest) Descriptor() ([]byte, []int) {
2058- return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}
2392+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}
20592393 }
20602394
20612395 func (x *MarkReadyRequest) GetRepo() string {
@@ -2084,7 +2418,7 @@ type MarkReadyResponse struct {
20842418
20852419 func (x *MarkReadyResponse) Reset() {
20862420 *x = MarkReadyResponse{}
2087- mi := &file_ermite_merge_request_proto_msgTypes[22]
2421+ mi := &file_ermite_merge_request_proto_msgTypes[24]
20882422 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
20892423 ms.StoreMessageInfo(mi)
20902424 }
@@ -2096,7 +2430,7 @@ func (x *MarkReadyResponse) String() string {
20962430 func (*MarkReadyResponse) ProtoMessage() {}
20972431
20982432 func (x *MarkReadyResponse) ProtoReflect() protoreflect.Message {
2099- mi := &file_ermite_merge_request_proto_msgTypes[22]
2433+ mi := &file_ermite_merge_request_proto_msgTypes[24]
21002434 if x != nil {
21012435 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
21022436 if ms.LoadMessageInfo() == nil {
@@ -2109,7 +2443,7 @@ func (x *MarkReadyResponse) ProtoReflect() protoreflect.Message {
21092443
21102444 // Deprecated: Use MarkReadyResponse.ProtoReflect.Descriptor instead.
21112445 func (*MarkReadyResponse) Descriptor() ([]byte, []int) {
2112- return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}
2446+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}
21132447 }
21142448
21152449 func (x *MarkReadyResponse) GetMergeRequest() *MergeRequest {
@@ -2150,7 +2484,7 @@ type MergeMergeRequestRequest struct {
21502484
21512485 func (x *MergeMergeRequestRequest) Reset() {
21522486 *x = MergeMergeRequestRequest{}
2153- mi := &file_ermite_merge_request_proto_msgTypes[23]
2487+ mi := &file_ermite_merge_request_proto_msgTypes[25]
21542488 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
21552489 ms.StoreMessageInfo(mi)
21562490 }
@@ -2162,7 +2496,7 @@ func (x *MergeMergeRequestRequest) String() string {
21622496 func (*MergeMergeRequestRequest) ProtoMessage() {}
21632497
21642498 func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
2165- mi := &file_ermite_merge_request_proto_msgTypes[23]
2499+ mi := &file_ermite_merge_request_proto_msgTypes[25]
21662500 if x != nil {
21672501 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
21682502 if ms.LoadMessageInfo() == nil {
@@ -2175,7 +2509,7 @@ func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
21752509
21762510 // Deprecated: Use MergeMergeRequestRequest.ProtoReflect.Descriptor instead.
21772511 func (*MergeMergeRequestRequest) Descriptor() ([]byte, []int) {
2178- return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}
2512+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}
21792513 }
21802514
21812515 func (x *MergeMergeRequestRequest) GetRepo() string {
@@ -2239,7 +2573,7 @@ type MergeMergeRequestResponse struct {
22392573
22402574 func (x *MergeMergeRequestResponse) Reset() {
22412575 *x = MergeMergeRequestResponse{}
2242- mi := &file_ermite_merge_request_proto_msgTypes[24]
2576+ mi := &file_ermite_merge_request_proto_msgTypes[26]
22432577 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
22442578 ms.StoreMessageInfo(mi)
22452579 }
@@ -2251,7 +2585,7 @@ func (x *MergeMergeRequestResponse) String() string {
22512585 func (*MergeMergeRequestResponse) ProtoMessage() {}
22522586
22532587 func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
2254- mi := &file_ermite_merge_request_proto_msgTypes[24]
2588+ mi := &file_ermite_merge_request_proto_msgTypes[26]
22552589 if x != nil {
22562590 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
22572591 if ms.LoadMessageInfo() == nil {
@@ -2264,7 +2598,7 @@ func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
22642598
22652599 // Deprecated: Use MergeMergeRequestResponse.ProtoReflect.Descriptor instead.
22662600 func (*MergeMergeRequestResponse) Descriptor() ([]byte, []int) {
2267- return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}
2601+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}
22682602 }
22692603
22702604 func (x *MergeMergeRequestResponse) GetMergeRequest() *MergeRequest {
@@ -2302,7 +2636,7 @@ type EnableAutoMergeRequest struct {
23022636
23032637 func (x *EnableAutoMergeRequest) Reset() {
23042638 *x = EnableAutoMergeRequest{}
2305- mi := &file_ermite_merge_request_proto_msgTypes[25]
2639+ mi := &file_ermite_merge_request_proto_msgTypes[27]
23062640 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
23072641 ms.StoreMessageInfo(mi)
23082642 }
@@ -2314,7 +2648,7 @@ func (x *EnableAutoMergeRequest) String() string {
23142648 func (*EnableAutoMergeRequest) ProtoMessage() {}
23152649
23162650 func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
2317- mi := &file_ermite_merge_request_proto_msgTypes[25]
2651+ mi := &file_ermite_merge_request_proto_msgTypes[27]
23182652 if x != nil {
23192653 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
23202654 if ms.LoadMessageInfo() == nil {
@@ -2327,7 +2661,7 @@ func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
23272661
23282662 // Deprecated: Use EnableAutoMergeRequest.ProtoReflect.Descriptor instead.
23292663 func (*EnableAutoMergeRequest) Descriptor() ([]byte, []int) {
2330- return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}
2664+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}
23312665 }
23322666
23332667 func (x *EnableAutoMergeRequest) GetRepo() string {
@@ -2369,7 +2703,7 @@ type EnableAutoMergeResponse struct {
23692703
23702704 func (x *EnableAutoMergeResponse) Reset() {
23712705 *x = EnableAutoMergeResponse{}
2372- mi := &file_ermite_merge_request_proto_msgTypes[26]
2706+ mi := &file_ermite_merge_request_proto_msgTypes[28]
23732707 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
23742708 ms.StoreMessageInfo(mi)
23752709 }
@@ -2381,7 +2715,7 @@ func (x *EnableAutoMergeResponse) String() string {
23812715 func (*EnableAutoMergeResponse) ProtoMessage() {}
23822716
23832717 func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
2384- mi := &file_ermite_merge_request_proto_msgTypes[26]
2718+ mi := &file_ermite_merge_request_proto_msgTypes[28]
23852719 if x != nil {
23862720 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
23872721 if ms.LoadMessageInfo() == nil {
@@ -2394,7 +2728,7 @@ func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
23942728
23952729 // Deprecated: Use EnableAutoMergeResponse.ProtoReflect.Descriptor instead.
23962730 func (*EnableAutoMergeResponse) Descriptor() ([]byte, []int) {
2397- return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}
2731+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}
23982732 }
23992733
24002734 func (x *EnableAutoMergeResponse) GetMergeRequest() *MergeRequest {
@@ -2417,7 +2751,7 @@ type CancelAutoMergeRequest struct {
24172751
24182752 func (x *CancelAutoMergeRequest) Reset() {
24192753 *x = CancelAutoMergeRequest{}
2420- mi := &file_ermite_merge_request_proto_msgTypes[27]
2754+ mi := &file_ermite_merge_request_proto_msgTypes[29]
24212755 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
24222756 ms.StoreMessageInfo(mi)
24232757 }
@@ -2429,7 +2763,7 @@ func (x *CancelAutoMergeRequest) String() string {
24292763 func (*CancelAutoMergeRequest) ProtoMessage() {}
24302764
24312765 func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
2432- mi := &file_ermite_merge_request_proto_msgTypes[27]
2766+ mi := &file_ermite_merge_request_proto_msgTypes[29]
24332767 if x != nil {
24342768 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
24352769 if ms.LoadMessageInfo() == nil {
@@ -2442,7 +2776,7 @@ func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
24422776
24432777 // Deprecated: Use CancelAutoMergeRequest.ProtoReflect.Descriptor instead.
24442778 func (*CancelAutoMergeRequest) Descriptor() ([]byte, []int) {
2445- return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}
2779+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{29}
24462780 }
24472781
24482782 func (x *CancelAutoMergeRequest) GetRepo() string {
@@ -2470,7 +2804,7 @@ type CancelAutoMergeResponse struct {
24702804
24712805 func (x *CancelAutoMergeResponse) Reset() {
24722806 *x = CancelAutoMergeResponse{}
2473- mi := &file_ermite_merge_request_proto_msgTypes[28]
2807+ mi := &file_ermite_merge_request_proto_msgTypes[30]
24742808 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
24752809 ms.StoreMessageInfo(mi)
24762810 }
@@ -2482,7 +2816,7 @@ func (x *CancelAutoMergeResponse) String() string {
24822816 func (*CancelAutoMergeResponse) ProtoMessage() {}
24832817
24842818 func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
2485- mi := &file_ermite_merge_request_proto_msgTypes[28]
2819+ mi := &file_ermite_merge_request_proto_msgTypes[30]
24862820 if x != nil {
24872821 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
24882822 if ms.LoadMessageInfo() == nil {
@@ -2495,7 +2829,7 @@ func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
24952829
24962830 // Deprecated: Use CancelAutoMergeResponse.ProtoReflect.Descriptor instead.
24972831 func (*CancelAutoMergeResponse) Descriptor() ([]byte, []int) {
2498- return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}
2832+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{30}
24992833 }
25002834
25012835 func (x *CancelAutoMergeResponse) GetMergeRequest() *MergeRequest {
@@ -2522,7 +2856,7 @@ type MarkReadRequest struct {
25222856
25232857 func (x *MarkReadRequest) Reset() {
25242858 *x = MarkReadRequest{}
2525- mi := &file_ermite_merge_request_proto_msgTypes[29]
2859+ mi := &file_ermite_merge_request_proto_msgTypes[31]
25262860 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
25272861 ms.StoreMessageInfo(mi)
25282862 }
@@ -2534,7 +2868,7 @@ func (x *MarkReadRequest) String() string {
25342868 func (*MarkReadRequest) ProtoMessage() {}
25352869
25362870 func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
2537- mi := &file_ermite_merge_request_proto_msgTypes[29]
2871+ mi := &file_ermite_merge_request_proto_msgTypes[31]
25382872 if x != nil {
25392873 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
25402874 if ms.LoadMessageInfo() == nil {
@@ -2547,7 +2881,7 @@ func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
25472881
25482882 // Deprecated: Use MarkReadRequest.ProtoReflect.Descriptor instead.
25492883 func (*MarkReadRequest) Descriptor() ([]byte, []int) {
2550- return file_ermite_merge_request_proto_rawDescGZIP(), []int{29}
2884+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{31}
25512885 }
25522886
25532887 func (x *MarkReadRequest) GetRepo() string {
@@ -2580,7 +2914,7 @@ type MarkReadResponse struct {
25802914
25812915 func (x *MarkReadResponse) Reset() {
25822916 *x = MarkReadResponse{}
2583- mi := &file_ermite_merge_request_proto_msgTypes[30]
2917+ mi := &file_ermite_merge_request_proto_msgTypes[32]
25842918 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
25852919 ms.StoreMessageInfo(mi)
25862920 }
@@ -2592,7 +2926,7 @@ func (x *MarkReadResponse) String() string {
25922926 func (*MarkReadResponse) ProtoMessage() {}
25932927
25942928 func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
2595- mi := &file_ermite_merge_request_proto_msgTypes[30]
2929+ mi := &file_ermite_merge_request_proto_msgTypes[32]
25962930 if x != nil {
25972931 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
25982932 if ms.LoadMessageInfo() == nil {
@@ -2605,7 +2939,7 @@ func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
26052939
26062940 // Deprecated: Use MarkReadResponse.ProtoReflect.Descriptor instead.
26072941 func (*MarkReadResponse) Descriptor() ([]byte, []int) {
2608- return file_ermite_merge_request_proto_rawDescGZIP(), []int{30}
2942+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{32}
26092943 }
26102944
26112945 var File_ermite_merge_request_proto protoreflect.FileDescriptor
@@ -2696,11 +3030,27 @@ const file_ermite_merge_request_proto_rawDesc = "" +
26963030 "page_token\x18\x04 \x01(\tR\tpageToken\"\x80\x01\n" +
26973031 "\x19ListMergeRequestsResponse\x12;\n" +
26983032 "\x0emerge_requests\x18\x01 \x03(\v2\x14.ermite.MergeRequestR\rmergeRequests\x12&\n" +
2699- "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"l\n" +
3033+ "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\x8f\x01\n" +
3034+ "\x11MergeRequestIssue\x12\x16\n" +
3035+ "\x06number\x18\x01 \x01(\x03R\x06number\x12\x14\n" +
3036+ "\x05title\x18\x02 \x01(\tR\x05title\x124\n" +
3037+ "\x05state\x18\x03 \x01(\x0e2\x1e.ermite.MergeRequestIssueStateR\x05state\x12\x16\n" +
3038+ "\x06closes\x18\x04 \x01(\bR\x06closes\"\x9c\x02\n" +
3039+ "\n" +
3040+ "IssueEvent\x12\x0e\n" +
3041+ "\x02id\x18\x01 \x01(\tR\x02id\x12*\n" +
3042+ "\x04kind\x18\x02 \x01(\x0e2\x16.ermite.IssueEventKindR\x04kind\x12\x14\n" +
3043+ "\x05issue\x18\x03 \x01(\x03R\x05issue\x12#\n" +
3044+ "\rmerge_request\x18\x04 \x01(\x03R\fmergeRequest\x12.\n" +
3045+ "\x13merge_request_title\x18\x05 \x01(\tR\x11mergeRequestTitle\x12\x16\n" +
3046+ "\x06closes\x18\x06 \x01(\bR\x06closes\x12\x14\n" +
3047+ "\x05actor\x18\a \x01(\tR\x05actor\x129\n" +
3048+ "\n" +
3049+ "created_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"l\n" +
27003050 "\x16GetMergeRequestRequest\x12\x12\n" +
27013051 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
27023052 "\x06number\x18\x02 \x01(\x03R\x06number\x12&\n" +
2703- "\x0fsince_last_read\x18\x03 \x01(\bR\rsinceLastRead\"\xc0\x03\n" +
3053+ "\x0fsince_last_read\x18\x03 \x01(\bR\rsinceLastRead\"\xaa\x04\n" +
27043054 "\x17GetMergeRequestResponse\x129\n" +
27053055 "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x12(\n" +
27063056 "\acommits\x18\x02 \x03(\v2\x0e.ermite.CommitR\acommits\x12+\n" +
@@ -2714,7 +3064,9 @@ const file_ermite_merge_request_proto_rawDesc = "" +
27143064 "lastReadId\x12$\n" +
27153065 "\x0elast_read_lost\x18\t \x01(\bR\flastReadLost\x121\n" +
27163066 "\bverdicts\x18\n" +
2717- " \x03(\v2\x15.ermite.AuthorVerdictR\bverdicts\"\x86\x02\n" +
3067+ " \x03(\v2\x15.ermite.AuthorVerdictR\bverdicts\x121\n" +
3068+ "\x06issues\x18\v \x03(\v2\x19.ermite.MergeRequestIssueR\x06issues\x125\n" +
3069+ "\fissue_events\x18\f \x03(\v2\x12.ermite.IssueEventR\vissueEvents\"\x86\x02\n" +
27183070 "\x11AddCommentRequest\x12\x12\n" +
27193071 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
27203072 "\x06number\x18\x02 \x01(\x03R\x06number\x12\x12\n" +
@@ -2806,7 +3158,18 @@ const file_ermite_merge_request_proto_rawDesc = "" +
28063158 "\x1bMERGEABILITY_STATE_CHECKING\x10\x01\x12!\n" +
28073159 "\x1dMERGEABILITY_STATE_UP_TO_DATE\x10\x02\x12\x1d\n" +
28083160 "\x19MERGEABILITY_STATE_BEHIND\x10\x03\x12\x1f\n" +
2809- "\x1bMERGEABILITY_STATE_CONFLICT\x10\x042\xa9\b\n" +
3161+ "\x1bMERGEABILITY_STATE_CONFLICT\x10\x04*\xb5\x01\n" +
3162+ "\x16MergeRequestIssueState\x12)\n" +
3163+ "%MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED\x10\x00\x12\"\n" +
3164+ "\x1eMERGE_REQUEST_ISSUE_STATE_OPEN\x10\x01\x12$\n" +
3165+ " MERGE_REQUEST_ISSUE_STATE_CLOSED\x10\x02\x12&\n" +
3166+ "\"MERGE_REQUEST_ISSUE_STATE_RESOLVED\x10\x04*\xae\x01\n" +
3167+ "\x0eIssueEventKind\x12 \n" +
3168+ "\x1cISSUE_EVENT_KIND_UNSPECIFIED\x10\x00\x12\x1f\n" +
3169+ "\x1bISSUE_EVENT_KIND_REFERENCED\x10\x01\x12\x1b\n" +
3170+ "\x17ISSUE_EVENT_KIND_CLOSED\x10\x02\x12\x1d\n" +
3171+ "\x19ISSUE_EVENT_KIND_REOPENED\x10\x03\x12\x1d\n" +
3172+ "\x19ISSUE_EVENT_KIND_RESOLVED\x10\x042\xa9\b\n" +
28103173 "\x13MergeRequestService\x12[\n" +
28113174 "\x12CreateMergeRequest\x12!.ermite.CreateMergeRequestRequest\x1a\".ermite.CreateMergeRequestResponse\x12X\n" +
28123175 "\x11ListMergeRequests\x12 .ermite.ListMergeRequestsRequest\x1a!.ermite.ListMergeRequestsResponse\x12R\n" +
@@ -2837,120 +3200,129 @@ func file_ermite_merge_request_proto_rawDescGZIP() []byte {
28373200 return file_ermite_merge_request_proto_rawDescData
28383201 }
28393202
2840-var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
2841-var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
3203+var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
3204+var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 33)
28423205 var file_ermite_merge_request_proto_goTypes = []any{
28433206 (MergeRequestState)(0), // 0: ermite.MergeRequestState
28443207 (DiffSide)(0), // 1: ermite.DiffSide
28453208 (Verdict)(0), // 2: ermite.Verdict
28463209 (MergeabilityState)(0), // 3: ermite.MergeabilityState
2847- (*Mergeability)(nil), // 4: ermite.Mergeability
2848- (*AutoMerge)(nil), // 5: ermite.AutoMerge
2849- (*MergeRequest)(nil), // 6: ermite.MergeRequest
2850- (*Comment)(nil), // 7: ermite.Comment
2851- (*AuthorVerdict)(nil), // 8: ermite.AuthorVerdict
2852- (*CreateMergeRequestRequest)(nil), // 9: ermite.CreateMergeRequestRequest
2853- (*CreateMergeRequestResponse)(nil), // 10: ermite.CreateMergeRequestResponse
2854- (*ListMergeRequestsRequest)(nil), // 11: ermite.ListMergeRequestsRequest
2855- (*ListMergeRequestsResponse)(nil), // 12: ermite.ListMergeRequestsResponse
2856- (*GetMergeRequestRequest)(nil), // 13: ermite.GetMergeRequestRequest
2857- (*GetMergeRequestResponse)(nil), // 14: ermite.GetMergeRequestResponse
2858- (*AddCommentRequest)(nil), // 15: ermite.AddCommentRequest
2859- (*AddCommentResponse)(nil), // 16: ermite.AddCommentResponse
2860- (*EditCommentRequest)(nil), // 17: ermite.EditCommentRequest
2861- (*EditCommentResponse)(nil), // 18: ermite.EditCommentResponse
2862- (*DeleteCommentRequest)(nil), // 19: ermite.DeleteCommentRequest
2863- (*DeleteCommentResponse)(nil), // 20: ermite.DeleteCommentResponse
2864- (*ResolveCommentRequest)(nil), // 21: ermite.ResolveCommentRequest
2865- (*ResolveCommentResponse)(nil), // 22: ermite.ResolveCommentResponse
2866- (*CloseMergeRequestRequest)(nil), // 23: ermite.CloseMergeRequestRequest
2867- (*CloseMergeRequestResponse)(nil), // 24: ermite.CloseMergeRequestResponse
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
3210+ (MergeRequestIssueState)(0), // 4: ermite.MergeRequestIssueState
3211+ (IssueEventKind)(0), // 5: ermite.IssueEventKind
3212+ (*Mergeability)(nil), // 6: ermite.Mergeability
3213+ (*AutoMerge)(nil), // 7: ermite.AutoMerge
3214+ (*MergeRequest)(nil), // 8: ermite.MergeRequest
3215+ (*Comment)(nil), // 9: ermite.Comment
3216+ (*AuthorVerdict)(nil), // 10: ermite.AuthorVerdict
3217+ (*CreateMergeRequestRequest)(nil), // 11: ermite.CreateMergeRequestRequest
3218+ (*CreateMergeRequestResponse)(nil), // 12: ermite.CreateMergeRequestResponse
3219+ (*ListMergeRequestsRequest)(nil), // 13: ermite.ListMergeRequestsRequest
3220+ (*ListMergeRequestsResponse)(nil), // 14: ermite.ListMergeRequestsResponse
3221+ (*MergeRequestIssue)(nil), // 15: ermite.MergeRequestIssue
3222+ (*IssueEvent)(nil), // 16: ermite.IssueEvent
3223+ (*GetMergeRequestRequest)(nil), // 17: ermite.GetMergeRequestRequest
3224+ (*GetMergeRequestResponse)(nil), // 18: ermite.GetMergeRequestResponse
3225+ (*AddCommentRequest)(nil), // 19: ermite.AddCommentRequest
3226+ (*AddCommentResponse)(nil), // 20: ermite.AddCommentResponse
3227+ (*EditCommentRequest)(nil), // 21: ermite.EditCommentRequest
3228+ (*EditCommentResponse)(nil), // 22: ermite.EditCommentResponse
3229+ (*DeleteCommentRequest)(nil), // 23: ermite.DeleteCommentRequest
3230+ (*DeleteCommentResponse)(nil), // 24: ermite.DeleteCommentResponse
3231+ (*ResolveCommentRequest)(nil), // 25: ermite.ResolveCommentRequest
3232+ (*ResolveCommentResponse)(nil), // 26: ermite.ResolveCommentResponse
3233+ (*CloseMergeRequestRequest)(nil), // 27: ermite.CloseMergeRequestRequest
3234+ (*CloseMergeRequestResponse)(nil), // 28: ermite.CloseMergeRequestResponse
3235+ (*MarkReadyRequest)(nil), // 29: ermite.MarkReadyRequest
3236+ (*MarkReadyResponse)(nil), // 30: ermite.MarkReadyResponse
3237+ (*MergeMergeRequestRequest)(nil), // 31: ermite.MergeMergeRequestRequest
3238+ (*MergeMergeRequestResponse)(nil), // 32: ermite.MergeMergeRequestResponse
3239+ (*EnableAutoMergeRequest)(nil), // 33: ermite.EnableAutoMergeRequest
3240+ (*EnableAutoMergeResponse)(nil), // 34: ermite.EnableAutoMergeResponse
3241+ (*CancelAutoMergeRequest)(nil), // 35: ermite.CancelAutoMergeRequest
3242+ (*CancelAutoMergeResponse)(nil), // 36: ermite.CancelAutoMergeResponse
3243+ (*MarkReadRequest)(nil), // 37: ermite.MarkReadRequest
3244+ (*MarkReadResponse)(nil), // 38: ermite.MarkReadResponse
3245+ (*timestamppb.Timestamp)(nil), // 39: google.protobuf.Timestamp
3246+ (MergeMode)(0), // 40: ermite.MergeMode
3247+ (*Commit)(nil), // 41: ermite.Commit
3248+ (*DiffStats)(nil), // 42: ermite.DiffStats
3249+ (*Diff)(nil), // 43: ermite.Diff
28833250 }
28843251 var file_ermite_merge_request_proto_depIdxs = []int32{
28853252 3, // 0: ermite.Mergeability.state:type_name -> ermite.MergeabilityState
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
3253+ 39, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp
3254+ 40, // 2: ermite.AutoMerge.mode:type_name -> ermite.MergeMode
3255+ 39, // 3: ermite.AutoMerge.enabled_at:type_name -> google.protobuf.Timestamp
28893256 0, // 4: ermite.MergeRequest.state:type_name -> ermite.MergeRequestState
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
2893- 4, // 8: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability
2894- 5, // 9: ermite.MergeRequest.auto_merge:type_name -> ermite.AutoMerge
3257+ 39, // 5: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp
3258+ 39, // 6: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp
3259+ 40, // 7: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode
3260+ 6, // 8: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability
3261+ 7, // 9: ermite.MergeRequest.auto_merge:type_name -> ermite.AutoMerge
28953262 1, // 10: ermite.Comment.side:type_name -> ermite.DiffSide
2896- 35, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp
3263+ 39, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp
28973264 2, // 12: ermite.Comment.verdict:type_name -> ermite.Verdict
2898- 35, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp
3265+ 39, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp
28993266 2, // 14: ermite.AuthorVerdict.verdict:type_name -> ermite.Verdict
2900- 35, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp
2901- 6, // 16: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
3267+ 39, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp
3268+ 8, // 16: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
29023269 0, // 17: ermite.ListMergeRequestsRequest.state:type_name -> ermite.MergeRequestState
2903- 6, // 18: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest
2904- 6, // 19: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
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
2908- 7, // 23: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment
2909- 8, // 24: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict
2910- 1, // 25: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide
2911- 2, // 26: ermite.AddCommentRequest.verdict:type_name -> ermite.Verdict
2912- 7, // 27: ermite.AddCommentResponse.comment:type_name -> ermite.Comment
2913- 7, // 28: ermite.EditCommentResponse.comment:type_name -> ermite.Comment
2914- 7, // 29: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment
2915- 7, // 30: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment
2916- 6, // 31: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
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
3270+ 8, // 18: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest
3271+ 4, // 19: ermite.MergeRequestIssue.state:type_name -> ermite.MergeRequestIssueState
3272+ 5, // 20: ermite.IssueEvent.kind:type_name -> ermite.IssueEventKind
3273+ 39, // 21: ermite.IssueEvent.created_at:type_name -> google.protobuf.Timestamp
3274+ 8, // 22: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
3275+ 41, // 23: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit
3276+ 42, // 24: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats
3277+ 43, // 25: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff
3278+ 9, // 26: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment
3279+ 10, // 27: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict
3280+ 15, // 28: ermite.GetMergeRequestResponse.issues:type_name -> ermite.MergeRequestIssue
3281+ 16, // 29: ermite.GetMergeRequestResponse.issue_events:type_name -> ermite.IssueEvent
3282+ 1, // 30: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide
3283+ 2, // 31: ermite.AddCommentRequest.verdict:type_name -> ermite.Verdict
3284+ 9, // 32: ermite.AddCommentResponse.comment:type_name -> ermite.Comment
3285+ 9, // 33: ermite.EditCommentResponse.comment:type_name -> ermite.Comment
3286+ 9, // 34: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment
3287+ 9, // 35: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment
3288+ 8, // 36: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
3289+ 8, // 37: ermite.MarkReadyResponse.merge_request:type_name -> ermite.MergeRequest
3290+ 40, // 38: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode
3291+ 8, // 39: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
3292+ 40, // 40: ermite.EnableAutoMergeRequest.mode:type_name -> ermite.MergeMode
3293+ 8, // 41: ermite.EnableAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
3294+ 8, // 42: ermite.CancelAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
3295+ 11, // 43: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest
3296+ 13, // 44: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest
3297+ 17, // 45: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest
3298+ 19, // 46: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest
3299+ 21, // 47: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest
3300+ 23, // 48: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest
3301+ 25, // 49: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest
3302+ 27, // 50: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest
3303+ 29, // 51: ermite.MergeRequestService.MarkReady:input_type -> ermite.MarkReadyRequest
3304+ 31, // 52: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest
3305+ 33, // 53: ermite.MergeRequestService.EnableAutoMerge:input_type -> ermite.EnableAutoMergeRequest
3306+ 35, // 54: ermite.MergeRequestService.CancelAutoMerge:input_type -> ermite.CancelAutoMergeRequest
3307+ 37, // 55: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest
3308+ 12, // 56: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse
3309+ 14, // 57: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse
3310+ 18, // 58: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse
3311+ 20, // 59: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse
3312+ 22, // 60: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse
3313+ 24, // 61: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse
3314+ 26, // 62: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse
3315+ 28, // 63: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse
3316+ 30, // 64: ermite.MergeRequestService.MarkReady:output_type -> ermite.MarkReadyResponse
3317+ 32, // 65: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse
3318+ 34, // 66: ermite.MergeRequestService.EnableAutoMerge:output_type -> ermite.EnableAutoMergeResponse
3319+ 36, // 67: ermite.MergeRequestService.CancelAutoMerge:output_type -> ermite.CancelAutoMergeResponse
3320+ 38, // 68: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse
3321+ 56, // [56:69] is the sub-list for method output_type
3322+ 43, // [43:56] is the sub-list for method input_type
3323+ 43, // [43:43] is the sub-list for extension type_name
3324+ 43, // [43:43] is the sub-list for extension extendee
3325+ 0, // [0:43] is the sub-list for field type_name
29543326 }
29553327
29563328 func init() { file_ermite_merge_request_proto_init() }
@@ -2965,8 +3337,8 @@ func file_ermite_merge_request_proto_init() {
29653337 File: protoimpl.DescBuilder{
29663338 GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
29673339 RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)),
2968- NumEnums: 4,
2969- NumMessages: 31,
3340+ NumEnums: 6,
3341+ NumMessages: 33,
29703342 NumExtensions: 0,
29713343 NumServices: 1,
29723344 },
@@ -256,6 +256,128 @@ func (MergeabilityState) EnumDescriptor() ([]byte, []int) {
256 return file_ermite_merge_request_proto_rawDescGZIP(), []int{3}256 return file_ermite_merge_request_proto_rawDescGZIP(), []int{3}
257 }257 }
258 258
259+// MergeRequestIssueState is where an issue named by a merge request is in its
260+// life. Values share their numbers with IssueState (3, awaiting moderation,
261+// is never shown here). It exists because issue.proto imports this file and
262+// cannot be imported back.
263+type MergeRequestIssueState int32
264+
265+const (
266+ // Not set. Never returned by the server.
267+ MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED MergeRequestIssueState = 0
268+ // The issue is open.
269+ MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_OPEN MergeRequestIssueState = 1
270+ // The issue is closed without being resolved.
271+ MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_CLOSED MergeRequestIssueState = 2
272+ // The issue was resolved, by a merge or by hand.
273+ MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_RESOLVED MergeRequestIssueState = 4
274+)
275+
276+// Enum value maps for MergeRequestIssueState.
277+var (
278+ MergeRequestIssueState_name = map[int32]string{
279+ 0: "MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED",
280+ 1: "MERGE_REQUEST_ISSUE_STATE_OPEN",
281+ 2: "MERGE_REQUEST_ISSUE_STATE_CLOSED",
282+ 4: "MERGE_REQUEST_ISSUE_STATE_RESOLVED",
283+ }
284+ MergeRequestIssueState_value = map[string]int32{
285+ "MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED": 0,
286+ "MERGE_REQUEST_ISSUE_STATE_OPEN": 1,
287+ "MERGE_REQUEST_ISSUE_STATE_CLOSED": 2,
288+ "MERGE_REQUEST_ISSUE_STATE_RESOLVED": 4,
289+ }
290+)
291+
292+func (x MergeRequestIssueState) Enum() *MergeRequestIssueState {
293+ p := new(MergeRequestIssueState)
294+ *p = x
295+ return p
296+}
297+
298+func (x MergeRequestIssueState) String() string {
299+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
300+}
301+
302+func (MergeRequestIssueState) Descriptor() protoreflect.EnumDescriptor {
303+ return file_ermite_merge_request_proto_enumTypes[4].Descriptor()
304+}
305+
306+func (MergeRequestIssueState) Type() protoreflect.EnumType {
307+ return &file_ermite_merge_request_proto_enumTypes[4]
308+}
309+
310+func (x MergeRequestIssueState) Number() protoreflect.EnumNumber {
311+ return protoreflect.EnumNumber(x)
312+}
313+
314+// Deprecated: Use MergeRequestIssueState.Descriptor instead.
315+func (MergeRequestIssueState) EnumDescriptor() ([]byte, []int) {
316+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{4}
317+}
318+
319+// IssueEventKind is what happened in an IssueEvent.
320+type IssueEventKind int32
321+
322+const (
323+ // Not set. Never returned by the server.
324+ IssueEventKind_ISSUE_EVENT_KIND_UNSPECIFIED IssueEventKind = 0
325+ // A merge request started naming the issue; closes says whether with a
326+ // closing reference.
327+ IssueEventKind_ISSUE_EVENT_KIND_REFERENCED IssueEventKind = 1
328+ // The issue was closed without being resolved.
329+ IssueEventKind_ISSUE_EVENT_KIND_CLOSED IssueEventKind = 2
330+ // The issue was reopened.
331+ IssueEventKind_ISSUE_EVENT_KIND_REOPENED IssueEventKind = 3
332+ // The issue was resolved; merge_request is set when a merge resolved it.
333+ IssueEventKind_ISSUE_EVENT_KIND_RESOLVED IssueEventKind = 4
334+)
335+
336+// Enum value maps for IssueEventKind.
337+var (
338+ IssueEventKind_name = map[int32]string{
339+ 0: "ISSUE_EVENT_KIND_UNSPECIFIED",
340+ 1: "ISSUE_EVENT_KIND_REFERENCED",
341+ 2: "ISSUE_EVENT_KIND_CLOSED",
342+ 3: "ISSUE_EVENT_KIND_REOPENED",
343+ 4: "ISSUE_EVENT_KIND_RESOLVED",
344+ }
345+ IssueEventKind_value = map[string]int32{
346+ "ISSUE_EVENT_KIND_UNSPECIFIED": 0,
347+ "ISSUE_EVENT_KIND_REFERENCED": 1,
348+ "ISSUE_EVENT_KIND_CLOSED": 2,
349+ "ISSUE_EVENT_KIND_REOPENED": 3,
350+ "ISSUE_EVENT_KIND_RESOLVED": 4,
351+ }
352+)
353+
354+func (x IssueEventKind) Enum() *IssueEventKind {
355+ p := new(IssueEventKind)
356+ *p = x
357+ return p
358+}
359+
360+func (x IssueEventKind) String() string {
361+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
362+}
363+
364+func (IssueEventKind) Descriptor() protoreflect.EnumDescriptor {
365+ return file_ermite_merge_request_proto_enumTypes[5].Descriptor()
366+}
367+
368+func (IssueEventKind) Type() protoreflect.EnumType {
369+ return &file_ermite_merge_request_proto_enumTypes[5]
370+}
371+
372+func (x IssueEventKind) Number() protoreflect.EnumNumber {
373+ return protoreflect.EnumNumber(x)
374+}
375+
376+// Deprecated: Use IssueEventKind.Descriptor instead.
377+func (IssueEventKind) EnumDescriptor() ([]byte, []int) {
378+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{5}
379+}
380+
259 // Mergeability is the result of checking an open merge request against the381 // Mergeability is the result of checking an open merge request against the
260 // tips of its branches.382 // tips of its branches.
261 type Mergeability struct {383 type Mergeability struct {
@@ -1185,6 +1307,196 @@ func (x *ListMergeRequestsResponse) GetNextPageToken() string {
1185 return ""1307 return ""
1186 }1308 }
1187 1309
1310+// MergeRequestIssue is an issue of the same repository that a merge request
1311+// names ("#N").
1312+type MergeRequestIssue struct {
1313+ state protoimpl.MessageState `protogen:"open.v1"`
1314+ // Number is the number of the issue.
1315+ Number int64 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
1316+ // Title is the title of the issue.
1317+ Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
1318+ // State is where the issue is in its life.
1319+ State MergeRequestIssueState `protobuf:"varint,3,opt,name=state,proto3,enum=ermite.MergeRequestIssueState" json:"state,omitempty"`
1320+ // Closes says that a closing reference names the issue: merging the request
1321+ // resolves it.
1322+ Closes bool `protobuf:"varint,4,opt,name=closes,proto3" json:"closes,omitempty"`
1323+ unknownFields protoimpl.UnknownFields
1324+ sizeCache protoimpl.SizeCache
1325+}
1326+
1327+func (x *MergeRequestIssue) Reset() {
1328+ *x = MergeRequestIssue{}
1329+ mi := &file_ermite_merge_request_proto_msgTypes[9]
1330+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1331+ ms.StoreMessageInfo(mi)
1332+}
1333+
1334+func (x *MergeRequestIssue) String() string {
1335+ return protoimpl.X.MessageStringOf(x)
1336+}
1337+
1338+func (*MergeRequestIssue) ProtoMessage() {}
1339+
1340+func (x *MergeRequestIssue) ProtoReflect() protoreflect.Message {
1341+ mi := &file_ermite_merge_request_proto_msgTypes[9]
1342+ if x != nil {
1343+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1344+ if ms.LoadMessageInfo() == nil {
1345+ ms.StoreMessageInfo(mi)
1346+ }
1347+ return ms
1348+ }
1349+ return mi.MessageOf(x)
1350+}
1351+
1352+// Deprecated: Use MergeRequestIssue.ProtoReflect.Descriptor instead.
1353+func (*MergeRequestIssue) Descriptor() ([]byte, []int) {
1354+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{9}
1355+}
1356+
1357+func (x *MergeRequestIssue) GetNumber() int64 {
1358+ if x != nil {
1359+ return x.Number
1360+ }
1361+ return 0
1362+}
1363+
1364+func (x *MergeRequestIssue) GetTitle() string {
1365+ if x != nil {
1366+ return x.Title
1367+ }
1368+ return ""
1369+}
1370+
1371+func (x *MergeRequestIssue) GetState() MergeRequestIssueState {
1372+ if x != nil {
1373+ return x.State
1374+ }
1375+ return MergeRequestIssueState_MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED
1376+}
1377+
1378+func (x *MergeRequestIssue) GetCloses() bool {
1379+ if x != nil {
1380+ return x.Closes
1381+ }
1382+ return false
1383+}
1384+
1385+// IssueEvent is one entry in the history of an issue. Events are append-only:
1386+// a reference that later disappears does not remove its event.
1387+type IssueEvent struct {
1388+ state protoimpl.MessageState `protogen:"open.v1"`
1389+ // Id identifies the event within its issue. Opaque. Events of different
1390+ // issues can share an id: key them by (issue, id).
1391+ Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
1392+ // Kind is what happened.
1393+ Kind IssueEventKind `protobuf:"varint,2,opt,name=kind,proto3,enum=ermite.IssueEventKind" json:"kind,omitempty"`
1394+ // Issue is the number of the issue.
1395+ Issue int64 `protobuf:"varint,3,opt,name=issue,proto3" json:"issue,omitempty"`
1396+ // MergeRequest is the number of the merge request involved; 0 if none.
1397+ MergeRequest int64 `protobuf:"varint,4,opt,name=merge_request,json=mergeRequest,proto3" json:"merge_request,omitempty"`
1398+ // MergeRequestTitle is the title of that merge request at read time; empty
1399+ // if none.
1400+ MergeRequestTitle string `protobuf:"bytes,5,opt,name=merge_request_title,json=mergeRequestTitle,proto3" json:"merge_request_title,omitempty"`
1401+ // Closes says that the reference was a closing one. Only set for
1402+ // ISSUE_EVENT_KIND_REFERENCED.
1403+ Closes bool `protobuf:"varint,6,opt,name=closes,proto3" json:"closes,omitempty"`
1404+ // Actor names who caused the event, like Issue.author: the label of the
1405+ // token or session. For events triggered by a merge, the label of who
1406+ // merged.
1407+ Actor string `protobuf:"bytes,7,opt,name=actor,proto3" json:"actor,omitempty"`
1408+ // CreatedAt is when the event happened.
1409+ CreatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
1410+ unknownFields protoimpl.UnknownFields
1411+ sizeCache protoimpl.SizeCache
1412+}
1413+
1414+func (x *IssueEvent) Reset() {
1415+ *x = IssueEvent{}
1416+ mi := &file_ermite_merge_request_proto_msgTypes[10]
1417+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1418+ ms.StoreMessageInfo(mi)
1419+}
1420+
1421+func (x *IssueEvent) String() string {
1422+ return protoimpl.X.MessageStringOf(x)
1423+}
1424+
1425+func (*IssueEvent) ProtoMessage() {}
1426+
1427+func (x *IssueEvent) ProtoReflect() protoreflect.Message {
1428+ mi := &file_ermite_merge_request_proto_msgTypes[10]
1429+ if x != nil {
1430+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1431+ if ms.LoadMessageInfo() == nil {
1432+ ms.StoreMessageInfo(mi)
1433+ }
1434+ return ms
1435+ }
1436+ return mi.MessageOf(x)
1437+}
1438+
1439+// Deprecated: Use IssueEvent.ProtoReflect.Descriptor instead.
1440+func (*IssueEvent) Descriptor() ([]byte, []int) {
1441+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{10}
1442+}
1443+
1444+func (x *IssueEvent) GetId() string {
1445+ if x != nil {
1446+ return x.Id
1447+ }
1448+ return ""
1449+}
1450+
1451+func (x *IssueEvent) GetKind() IssueEventKind {
1452+ if x != nil {
1453+ return x.Kind
1454+ }
1455+ return IssueEventKind_ISSUE_EVENT_KIND_UNSPECIFIED
1456+}
1457+
1458+func (x *IssueEvent) GetIssue() int64 {
1459+ if x != nil {
1460+ return x.Issue
1461+ }
1462+ return 0
1463+}
1464+
1465+func (x *IssueEvent) GetMergeRequest() int64 {
1466+ if x != nil {
1467+ return x.MergeRequest
1468+ }
1469+ return 0
1470+}
1471+
1472+func (x *IssueEvent) GetMergeRequestTitle() string {
1473+ if x != nil {
1474+ return x.MergeRequestTitle
1475+ }
1476+ return ""
1477+}
1478+
1479+func (x *IssueEvent) GetCloses() bool {
1480+ if x != nil {
1481+ return x.Closes
1482+ }
1483+ return false
1484+}
1485+
1486+func (x *IssueEvent) GetActor() string {
1487+ if x != nil {
1488+ return x.Actor
1489+ }
1490+ return ""
1491+}
1492+
1493+func (x *IssueEvent) GetCreatedAt() *timestamppb.Timestamp {
1494+ if x != nil {
1495+ return x.CreatedAt
1496+ }
1497+ return nil
1498+}
1499+
1188 // GetMergeRequestRequest selects a merge request.1500 // GetMergeRequestRequest selects a merge request.
1189 type GetMergeRequestRequest struct {1501 type GetMergeRequestRequest struct {
1190 state protoimpl.MessageState `protogen:"open.v1"`1502 state protoimpl.MessageState `protogen:"open.v1"`
@@ -1205,7 +1517,7 @@ type GetMergeRequestRequest struct {
1205 1517
1206 func (x *GetMergeRequestRequest) Reset() {1518 func (x *GetMergeRequestRequest) Reset() {
1207 *x = GetMergeRequestRequest{}1519 *x = GetMergeRequestRequest{}
1208- mi := &file_ermite_merge_request_proto_msgTypes[9]1520+ mi := &file_ermite_merge_request_proto_msgTypes[11]
1209 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1521 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1210 ms.StoreMessageInfo(mi)1522 ms.StoreMessageInfo(mi)
1211 }1523 }
@@ -1217,7 +1529,7 @@ func (x *GetMergeRequestRequest) String() string {
1217 func (*GetMergeRequestRequest) ProtoMessage() {}1529 func (*GetMergeRequestRequest) ProtoMessage() {}
1218 1530
1219 func (x *GetMergeRequestRequest) ProtoReflect() protoreflect.Message {1531 func (x *GetMergeRequestRequest) ProtoReflect() protoreflect.Message {
1220- mi := &file_ermite_merge_request_proto_msgTypes[9]1532+ mi := &file_ermite_merge_request_proto_msgTypes[11]
1221 if x != nil {1533 if x != nil {
1222 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1534 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1223 if ms.LoadMessageInfo() == nil {1535 if ms.LoadMessageInfo() == nil {
@@ -1230,7 +1542,7 @@ func (x *GetMergeRequestRequest) ProtoReflect() protoreflect.Message {
1230 1542
1231 // Deprecated: Use GetMergeRequestRequest.ProtoReflect.Descriptor instead.1543 // Deprecated: Use GetMergeRequestRequest.ProtoReflect.Descriptor instead.
1232 func (*GetMergeRequestRequest) Descriptor() ([]byte, []int) {1544 func (*GetMergeRequestRequest) Descriptor() ([]byte, []int) {
1233- return file_ermite_merge_request_proto_rawDescGZIP(), []int{9}1545+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{11}
1234 }1546 }
1235 1547
1236 func (x *GetMergeRequestRequest) GetRepo() string {1548 func (x *GetMergeRequestRequest) GetRepo() string {
@@ -1289,14 +1601,22 @@ type GetMergeRequestResponse struct {
1289 LastReadLost bool `protobuf:"varint,9,opt,name=last_read_lost,json=lastReadLost,proto3" json:"last_read_lost,omitempty"`1601 LastReadLost bool `protobuf:"varint,9,opt,name=last_read_lost,json=lastReadLost,proto3" json:"last_read_lost,omitempty"`
1290 // Verdicts are the current verdicts, one per author who gave one, ordered1602 // Verdicts are the current verdicts, one per author who gave one, ordered
1291 // by the comment that carries them, oldest first.1603 // by the comment that carries them, oldest first.
1292- Verdicts []*AuthorVerdict `protobuf:"bytes,10,rep,name=verdicts,proto3" json:"verdicts,omitempty"`1604+ Verdicts []*AuthorVerdict `protobuf:"bytes,10,rep,name=verdicts,proto3" json:"verdicts,omitempty"`
1605+ // Issues are the issues of the same repository that the merge request names,
1606+ // ascending by number, at most 100. Empty when issues are off.
1607+ Issues []*MergeRequestIssue `protobuf:"bytes,11,rep,name=issues,proto3" json:"issues,omitempty"`
1608+ // IssueEvents are the history entries that involve this merge request: the
1609+ // REFERENCED and RESOLVED events of the issues it names or once named,
1610+ // oldest first, at most 500. An event can name an issue that is no longer
1611+ // in issues. Empty when issues are off.
1612+ IssueEvents []*IssueEvent `protobuf:"bytes,12,rep,name=issue_events,json=issueEvents,proto3" json:"issue_events,omitempty"`
1293 unknownFields protoimpl.UnknownFields1613 unknownFields protoimpl.UnknownFields
1294 sizeCache protoimpl.SizeCache1614 sizeCache protoimpl.SizeCache
1295 }1615 }
1296 1616
1297 func (x *GetMergeRequestResponse) Reset() {1617 func (x *GetMergeRequestResponse) Reset() {
1298 *x = GetMergeRequestResponse{}1618 *x = GetMergeRequestResponse{}
1299- mi := &file_ermite_merge_request_proto_msgTypes[10]1619+ mi := &file_ermite_merge_request_proto_msgTypes[12]
1300 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1620 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1301 ms.StoreMessageInfo(mi)1621 ms.StoreMessageInfo(mi)
1302 }1622 }
@@ -1308,7 +1628,7 @@ func (x *GetMergeRequestResponse) String() string {
1308 func (*GetMergeRequestResponse) ProtoMessage() {}1628 func (*GetMergeRequestResponse) ProtoMessage() {}
1309 1629
1310 func (x *GetMergeRequestResponse) ProtoReflect() protoreflect.Message {1630 func (x *GetMergeRequestResponse) ProtoReflect() protoreflect.Message {
1311- mi := &file_ermite_merge_request_proto_msgTypes[10]1631+ mi := &file_ermite_merge_request_proto_msgTypes[12]
1312 if x != nil {1632 if x != nil {
1313 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1633 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1314 if ms.LoadMessageInfo() == nil {1634 if ms.LoadMessageInfo() == nil {
@@ -1321,7 +1641,7 @@ func (x *GetMergeRequestResponse) ProtoReflect() protoreflect.Message {
1321 1641
1322 // Deprecated: Use GetMergeRequestResponse.ProtoReflect.Descriptor instead.1642 // Deprecated: Use GetMergeRequestResponse.ProtoReflect.Descriptor instead.
1323 func (*GetMergeRequestResponse) Descriptor() ([]byte, []int) {1643 func (*GetMergeRequestResponse) Descriptor() ([]byte, []int) {
1324- return file_ermite_merge_request_proto_rawDescGZIP(), []int{10}1644+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{12}
1325 }1645 }
1326 1646
1327 func (x *GetMergeRequestResponse) GetMergeRequest() *MergeRequest {1647 func (x *GetMergeRequestResponse) GetMergeRequest() *MergeRequest {
@@ -1394,6 +1714,20 @@ func (x *GetMergeRequestResponse) GetVerdicts() []*AuthorVerdict {
1394 return nil1714 return nil
1395 }1715 }
1396 1716
1717+func (x *GetMergeRequestResponse) GetIssues() []*MergeRequestIssue {
1718+ if x != nil {
1719+ return x.Issues
1720+ }
1721+ return nil
1722+}
1723+
1724+func (x *GetMergeRequestResponse) GetIssueEvents() []*IssueEvent {
1725+ if x != nil {
1726+ return x.IssueEvents
1727+ }
1728+ return nil
1729+}
1730+
1397 // AddCommentRequest describes the comment to add.1731 // AddCommentRequest describes the comment to add.
1398 type AddCommentRequest struct {1732 type AddCommentRequest struct {
1399 state protoimpl.MessageState `protogen:"open.v1"`1733 state protoimpl.MessageState `protogen:"open.v1"`
@@ -1430,7 +1764,7 @@ type AddCommentRequest struct {
1430 1764
1431 func (x *AddCommentRequest) Reset() {1765 func (x *AddCommentRequest) Reset() {
1432 *x = AddCommentRequest{}1766 *x = AddCommentRequest{}
1433- mi := &file_ermite_merge_request_proto_msgTypes[11]1767+ mi := &file_ermite_merge_request_proto_msgTypes[13]
1434 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1768 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1435 ms.StoreMessageInfo(mi)1769 ms.StoreMessageInfo(mi)
1436 }1770 }
@@ -1442,7 +1776,7 @@ func (x *AddCommentRequest) String() string {
1442 func (*AddCommentRequest) ProtoMessage() {}1776 func (*AddCommentRequest) ProtoMessage() {}
1443 1777
1444 func (x *AddCommentRequest) ProtoReflect() protoreflect.Message {1778 func (x *AddCommentRequest) ProtoReflect() protoreflect.Message {
1445- mi := &file_ermite_merge_request_proto_msgTypes[11]1779+ mi := &file_ermite_merge_request_proto_msgTypes[13]
1446 if x != nil {1780 if x != nil {
1447 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1781 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1448 if ms.LoadMessageInfo() == nil {1782 if ms.LoadMessageInfo() == nil {
@@ -1455,7 +1789,7 @@ func (x *AddCommentRequest) ProtoReflect() protoreflect.Message {
1455 1789
1456 // Deprecated: Use AddCommentRequest.ProtoReflect.Descriptor instead.1790 // Deprecated: Use AddCommentRequest.ProtoReflect.Descriptor instead.
1457 func (*AddCommentRequest) Descriptor() ([]byte, []int) {1791 func (*AddCommentRequest) Descriptor() ([]byte, []int) {
1458- return file_ermite_merge_request_proto_rawDescGZIP(), []int{11}1792+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{13}
1459 }1793 }
1460 1794
1461 func (x *AddCommentRequest) GetRepo() string {1795 func (x *AddCommentRequest) GetRepo() string {
@@ -1532,7 +1866,7 @@ type AddCommentResponse struct {
1532 1866
1533 func (x *AddCommentResponse) Reset() {1867 func (x *AddCommentResponse) Reset() {
1534 *x = AddCommentResponse{}1868 *x = AddCommentResponse{}
1535- mi := &file_ermite_merge_request_proto_msgTypes[12]1869+ mi := &file_ermite_merge_request_proto_msgTypes[14]
1536 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1870 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1537 ms.StoreMessageInfo(mi)1871 ms.StoreMessageInfo(mi)
1538 }1872 }
@@ -1544,7 +1878,7 @@ func (x *AddCommentResponse) String() string {
1544 func (*AddCommentResponse) ProtoMessage() {}1878 func (*AddCommentResponse) ProtoMessage() {}
1545 1879
1546 func (x *AddCommentResponse) ProtoReflect() protoreflect.Message {1880 func (x *AddCommentResponse) ProtoReflect() protoreflect.Message {
1547- mi := &file_ermite_merge_request_proto_msgTypes[12]1881+ mi := &file_ermite_merge_request_proto_msgTypes[14]
1548 if x != nil {1882 if x != nil {
1549 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1883 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1550 if ms.LoadMessageInfo() == nil {1884 if ms.LoadMessageInfo() == nil {
@@ -1557,7 +1891,7 @@ func (x *AddCommentResponse) ProtoReflect() protoreflect.Message {
1557 1891
1558 // Deprecated: Use AddCommentResponse.ProtoReflect.Descriptor instead.1892 // Deprecated: Use AddCommentResponse.ProtoReflect.Descriptor instead.
1559 func (*AddCommentResponse) Descriptor() ([]byte, []int) {1893 func (*AddCommentResponse) Descriptor() ([]byte, []int) {
1560- return file_ermite_merge_request_proto_rawDescGZIP(), []int{12}1894+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{14}
1561 }1895 }
1562 1896
1563 func (x *AddCommentResponse) GetComment() *Comment {1897 func (x *AddCommentResponse) GetComment() *Comment {
@@ -1585,7 +1919,7 @@ type EditCommentRequest struct {
1585 1919
1586 func (x *EditCommentRequest) Reset() {1920 func (x *EditCommentRequest) Reset() {
1587 *x = EditCommentRequest{}1921 *x = EditCommentRequest{}
1588- mi := &file_ermite_merge_request_proto_msgTypes[13]1922+ mi := &file_ermite_merge_request_proto_msgTypes[15]
1589 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1923 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1590 ms.StoreMessageInfo(mi)1924 ms.StoreMessageInfo(mi)
1591 }1925 }
@@ -1597,7 +1931,7 @@ func (x *EditCommentRequest) String() string {
1597 func (*EditCommentRequest) ProtoMessage() {}1931 func (*EditCommentRequest) ProtoMessage() {}
1598 1932
1599 func (x *EditCommentRequest) ProtoReflect() protoreflect.Message {1933 func (x *EditCommentRequest) ProtoReflect() protoreflect.Message {
1600- mi := &file_ermite_merge_request_proto_msgTypes[13]1934+ mi := &file_ermite_merge_request_proto_msgTypes[15]
1601 if x != nil {1935 if x != nil {
1602 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1936 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1603 if ms.LoadMessageInfo() == nil {1937 if ms.LoadMessageInfo() == nil {
@@ -1610,7 +1944,7 @@ func (x *EditCommentRequest) ProtoReflect() protoreflect.Message {
1610 1944
1611 // Deprecated: Use EditCommentRequest.ProtoReflect.Descriptor instead.1945 // Deprecated: Use EditCommentRequest.ProtoReflect.Descriptor instead.
1612 func (*EditCommentRequest) Descriptor() ([]byte, []int) {1946 func (*EditCommentRequest) Descriptor() ([]byte, []int) {
1613- return file_ermite_merge_request_proto_rawDescGZIP(), []int{13}1947+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{15}
1614 }1948 }
1615 1949
1616 func (x *EditCommentRequest) GetRepo() string {1950 func (x *EditCommentRequest) GetRepo() string {
@@ -1652,7 +1986,7 @@ type EditCommentResponse struct {
1652 1986
1653 func (x *EditCommentResponse) Reset() {1987 func (x *EditCommentResponse) Reset() {
1654 *x = EditCommentResponse{}1988 *x = EditCommentResponse{}
1655- mi := &file_ermite_merge_request_proto_msgTypes[14]1989+ mi := &file_ermite_merge_request_proto_msgTypes[16]
1656 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))1990 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1657 ms.StoreMessageInfo(mi)1991 ms.StoreMessageInfo(mi)
1658 }1992 }
@@ -1664,7 +1998,7 @@ func (x *EditCommentResponse) String() string {
1664 func (*EditCommentResponse) ProtoMessage() {}1998 func (*EditCommentResponse) ProtoMessage() {}
1665 1999
1666 func (x *EditCommentResponse) ProtoReflect() protoreflect.Message {2000 func (x *EditCommentResponse) ProtoReflect() protoreflect.Message {
1667- mi := &file_ermite_merge_request_proto_msgTypes[14]2001+ mi := &file_ermite_merge_request_proto_msgTypes[16]
1668 if x != nil {2002 if x != nil {
1669 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2003 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1670 if ms.LoadMessageInfo() == nil {2004 if ms.LoadMessageInfo() == nil {
@@ -1677,7 +2011,7 @@ func (x *EditCommentResponse) ProtoReflect() protoreflect.Message {
1677 2011
1678 // Deprecated: Use EditCommentResponse.ProtoReflect.Descriptor instead.2012 // Deprecated: Use EditCommentResponse.ProtoReflect.Descriptor instead.
1679 func (*EditCommentResponse) Descriptor() ([]byte, []int) {2013 func (*EditCommentResponse) Descriptor() ([]byte, []int) {
1680- return file_ermite_merge_request_proto_rawDescGZIP(), []int{14}2014+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{16}
1681 }2015 }
1682 2016
1683 func (x *EditCommentResponse) GetComment() *Comment {2017 func (x *EditCommentResponse) GetComment() *Comment {
@@ -1702,7 +2036,7 @@ type DeleteCommentRequest struct {
1702 2036
1703 func (x *DeleteCommentRequest) Reset() {2037 func (x *DeleteCommentRequest) Reset() {
1704 *x = DeleteCommentRequest{}2038 *x = DeleteCommentRequest{}
1705- mi := &file_ermite_merge_request_proto_msgTypes[15]2039+ mi := &file_ermite_merge_request_proto_msgTypes[17]
1706 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2040 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1707 ms.StoreMessageInfo(mi)2041 ms.StoreMessageInfo(mi)
1708 }2042 }
@@ -1714,7 +2048,7 @@ func (x *DeleteCommentRequest) String() string {
1714 func (*DeleteCommentRequest) ProtoMessage() {}2048 func (*DeleteCommentRequest) ProtoMessage() {}
1715 2049
1716 func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message {2050 func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message {
1717- mi := &file_ermite_merge_request_proto_msgTypes[15]2051+ mi := &file_ermite_merge_request_proto_msgTypes[17]
1718 if x != nil {2052 if x != nil {
1719 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2053 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1720 if ms.LoadMessageInfo() == nil {2054 if ms.LoadMessageInfo() == nil {
@@ -1727,7 +2061,7 @@ func (x *DeleteCommentRequest) ProtoReflect() protoreflect.Message {
1727 2061
1728 // Deprecated: Use DeleteCommentRequest.ProtoReflect.Descriptor instead.2062 // Deprecated: Use DeleteCommentRequest.ProtoReflect.Descriptor instead.
1729 func (*DeleteCommentRequest) Descriptor() ([]byte, []int) {2063 func (*DeleteCommentRequest) Descriptor() ([]byte, []int) {
1730- return file_ermite_merge_request_proto_rawDescGZIP(), []int{15}2064+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{17}
1731 }2065 }
1732 2066
1733 func (x *DeleteCommentRequest) GetRepo() string {2067 func (x *DeleteCommentRequest) GetRepo() string {
@@ -1762,7 +2096,7 @@ type DeleteCommentResponse struct {
1762 2096
1763 func (x *DeleteCommentResponse) Reset() {2097 func (x *DeleteCommentResponse) Reset() {
1764 *x = DeleteCommentResponse{}2098 *x = DeleteCommentResponse{}
1765- mi := &file_ermite_merge_request_proto_msgTypes[16]2099+ mi := &file_ermite_merge_request_proto_msgTypes[18]
1766 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2100 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1767 ms.StoreMessageInfo(mi)2101 ms.StoreMessageInfo(mi)
1768 }2102 }
@@ -1774,7 +2108,7 @@ func (x *DeleteCommentResponse) String() string {
1774 func (*DeleteCommentResponse) ProtoMessage() {}2108 func (*DeleteCommentResponse) ProtoMessage() {}
1775 2109
1776 func (x *DeleteCommentResponse) ProtoReflect() protoreflect.Message {2110 func (x *DeleteCommentResponse) ProtoReflect() protoreflect.Message {
1777- mi := &file_ermite_merge_request_proto_msgTypes[16]2111+ mi := &file_ermite_merge_request_proto_msgTypes[18]
1778 if x != nil {2112 if x != nil {
1779 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2113 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1780 if ms.LoadMessageInfo() == nil {2114 if ms.LoadMessageInfo() == nil {
@@ -1787,7 +2121,7 @@ func (x *DeleteCommentResponse) ProtoReflect() protoreflect.Message {
1787 2121
1788 // Deprecated: Use DeleteCommentResponse.ProtoReflect.Descriptor instead.2122 // Deprecated: Use DeleteCommentResponse.ProtoReflect.Descriptor instead.
1789 func (*DeleteCommentResponse) Descriptor() ([]byte, []int) {2123 func (*DeleteCommentResponse) Descriptor() ([]byte, []int) {
1790- return file_ermite_merge_request_proto_rawDescGZIP(), []int{16}2124+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{18}
1791 }2125 }
1792 2126
1793 func (x *DeleteCommentResponse) GetComment() *Comment {2127 func (x *DeleteCommentResponse) GetComment() *Comment {
@@ -1814,7 +2148,7 @@ type ResolveCommentRequest struct {
1814 2148
1815 func (x *ResolveCommentRequest) Reset() {2149 func (x *ResolveCommentRequest) Reset() {
1816 *x = ResolveCommentRequest{}2150 *x = ResolveCommentRequest{}
1817- mi := &file_ermite_merge_request_proto_msgTypes[17]2151+ mi := &file_ermite_merge_request_proto_msgTypes[19]
1818 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2152 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1819 ms.StoreMessageInfo(mi)2153 ms.StoreMessageInfo(mi)
1820 }2154 }
@@ -1826,7 +2160,7 @@ func (x *ResolveCommentRequest) String() string {
1826 func (*ResolveCommentRequest) ProtoMessage() {}2160 func (*ResolveCommentRequest) ProtoMessage() {}
1827 2161
1828 func (x *ResolveCommentRequest) ProtoReflect() protoreflect.Message {2162 func (x *ResolveCommentRequest) ProtoReflect() protoreflect.Message {
1829- mi := &file_ermite_merge_request_proto_msgTypes[17]2163+ mi := &file_ermite_merge_request_proto_msgTypes[19]
1830 if x != nil {2164 if x != nil {
1831 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2165 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1832 if ms.LoadMessageInfo() == nil {2166 if ms.LoadMessageInfo() == nil {
@@ -1839,7 +2173,7 @@ func (x *ResolveCommentRequest) ProtoReflect() protoreflect.Message {
1839 2173
1840 // Deprecated: Use ResolveCommentRequest.ProtoReflect.Descriptor instead.2174 // Deprecated: Use ResolveCommentRequest.ProtoReflect.Descriptor instead.
1841 func (*ResolveCommentRequest) Descriptor() ([]byte, []int) {2175 func (*ResolveCommentRequest) Descriptor() ([]byte, []int) {
1842- return file_ermite_merge_request_proto_rawDescGZIP(), []int{17}2176+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{19}
1843 }2177 }
1844 2178
1845 func (x *ResolveCommentRequest) GetRepo() string {2179 func (x *ResolveCommentRequest) GetRepo() string {
@@ -1881,7 +2215,7 @@ type ResolveCommentResponse struct {
1881 2215
1882 func (x *ResolveCommentResponse) Reset() {2216 func (x *ResolveCommentResponse) Reset() {
1883 *x = ResolveCommentResponse{}2217 *x = ResolveCommentResponse{}
1884- mi := &file_ermite_merge_request_proto_msgTypes[18]2218+ mi := &file_ermite_merge_request_proto_msgTypes[20]
1885 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2219 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1886 ms.StoreMessageInfo(mi)2220 ms.StoreMessageInfo(mi)
1887 }2221 }
@@ -1893,7 +2227,7 @@ func (x *ResolveCommentResponse) String() string {
1893 func (*ResolveCommentResponse) ProtoMessage() {}2227 func (*ResolveCommentResponse) ProtoMessage() {}
1894 2228
1895 func (x *ResolveCommentResponse) ProtoReflect() protoreflect.Message {2229 func (x *ResolveCommentResponse) ProtoReflect() protoreflect.Message {
1896- mi := &file_ermite_merge_request_proto_msgTypes[18]2230+ mi := &file_ermite_merge_request_proto_msgTypes[20]
1897 if x != nil {2231 if x != nil {
1898 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2232 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1899 if ms.LoadMessageInfo() == nil {2233 if ms.LoadMessageInfo() == nil {
@@ -1906,7 +2240,7 @@ func (x *ResolveCommentResponse) ProtoReflect() protoreflect.Message {
1906 2240
1907 // Deprecated: Use ResolveCommentResponse.ProtoReflect.Descriptor instead.2241 // Deprecated: Use ResolveCommentResponse.ProtoReflect.Descriptor instead.
1908 func (*ResolveCommentResponse) Descriptor() ([]byte, []int) {2242 func (*ResolveCommentResponse) Descriptor() ([]byte, []int) {
1909- return file_ermite_merge_request_proto_rawDescGZIP(), []int{18}2243+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{20}
1910 }2244 }
1911 2245
1912 func (x *ResolveCommentResponse) GetComment() *Comment {2246 func (x *ResolveCommentResponse) GetComment() *Comment {
@@ -1929,7 +2263,7 @@ type CloseMergeRequestRequest struct {
1929 2263
1930 func (x *CloseMergeRequestRequest) Reset() {2264 func (x *CloseMergeRequestRequest) Reset() {
1931 *x = CloseMergeRequestRequest{}2265 *x = CloseMergeRequestRequest{}
1932- mi := &file_ermite_merge_request_proto_msgTypes[19]2266+ mi := &file_ermite_merge_request_proto_msgTypes[21]
1933 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2267 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1934 ms.StoreMessageInfo(mi)2268 ms.StoreMessageInfo(mi)
1935 }2269 }
@@ -1941,7 +2275,7 @@ func (x *CloseMergeRequestRequest) String() string {
1941 func (*CloseMergeRequestRequest) ProtoMessage() {}2275 func (*CloseMergeRequestRequest) ProtoMessage() {}
1942 2276
1943 func (x *CloseMergeRequestRequest) ProtoReflect() protoreflect.Message {2277 func (x *CloseMergeRequestRequest) ProtoReflect() protoreflect.Message {
1944- mi := &file_ermite_merge_request_proto_msgTypes[19]2278+ mi := &file_ermite_merge_request_proto_msgTypes[21]
1945 if x != nil {2279 if x != nil {
1946 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2280 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1947 if ms.LoadMessageInfo() == nil {2281 if ms.LoadMessageInfo() == nil {
@@ -1954,7 +2288,7 @@ func (x *CloseMergeRequestRequest) ProtoReflect() protoreflect.Message {
1954 2288
1955 // Deprecated: Use CloseMergeRequestRequest.ProtoReflect.Descriptor instead.2289 // Deprecated: Use CloseMergeRequestRequest.ProtoReflect.Descriptor instead.
1956 func (*CloseMergeRequestRequest) Descriptor() ([]byte, []int) {2290 func (*CloseMergeRequestRequest) Descriptor() ([]byte, []int) {
1957- return file_ermite_merge_request_proto_rawDescGZIP(), []int{19}2291+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}
1958 }2292 }
1959 2293
1960 func (x *CloseMergeRequestRequest) GetRepo() string {2294 func (x *CloseMergeRequestRequest) GetRepo() string {
@@ -1982,7 +2316,7 @@ type CloseMergeRequestResponse struct {
1982 2316
1983 func (x *CloseMergeRequestResponse) Reset() {2317 func (x *CloseMergeRequestResponse) Reset() {
1984 *x = CloseMergeRequestResponse{}2318 *x = CloseMergeRequestResponse{}
1985- mi := &file_ermite_merge_request_proto_msgTypes[20]2319+ mi := &file_ermite_merge_request_proto_msgTypes[22]
1986 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2320 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1987 ms.StoreMessageInfo(mi)2321 ms.StoreMessageInfo(mi)
1988 }2322 }
@@ -1994,7 +2328,7 @@ func (x *CloseMergeRequestResponse) String() string {
1994 func (*CloseMergeRequestResponse) ProtoMessage() {}2328 func (*CloseMergeRequestResponse) ProtoMessage() {}
1995 2329
1996 func (x *CloseMergeRequestResponse) ProtoReflect() protoreflect.Message {2330 func (x *CloseMergeRequestResponse) ProtoReflect() protoreflect.Message {
1997- mi := &file_ermite_merge_request_proto_msgTypes[20]2331+ mi := &file_ermite_merge_request_proto_msgTypes[22]
1998 if x != nil {2332 if x != nil {
1999 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2333 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2000 if ms.LoadMessageInfo() == nil {2334 if ms.LoadMessageInfo() == nil {
@@ -2007,7 +2341,7 @@ func (x *CloseMergeRequestResponse) ProtoReflect() protoreflect.Message {
2007 2341
2008 // Deprecated: Use CloseMergeRequestResponse.ProtoReflect.Descriptor instead.2342 // Deprecated: Use CloseMergeRequestResponse.ProtoReflect.Descriptor instead.
2009 func (*CloseMergeRequestResponse) Descriptor() ([]byte, []int) {2343 func (*CloseMergeRequestResponse) Descriptor() ([]byte, []int) {
2010- return file_ermite_merge_request_proto_rawDescGZIP(), []int{20}2344+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}
2011 }2345 }
2012 2346
2013 func (x *CloseMergeRequestResponse) GetMergeRequest() *MergeRequest {2347 func (x *CloseMergeRequestResponse) GetMergeRequest() *MergeRequest {
@@ -2030,7 +2364,7 @@ type MarkReadyRequest struct {
2030 2364
2031 func (x *MarkReadyRequest) Reset() {2365 func (x *MarkReadyRequest) Reset() {
2032 *x = MarkReadyRequest{}2366 *x = MarkReadyRequest{}
2033- mi := &file_ermite_merge_request_proto_msgTypes[21]2367+ mi := &file_ermite_merge_request_proto_msgTypes[23]
2034 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2368 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2035 ms.StoreMessageInfo(mi)2369 ms.StoreMessageInfo(mi)
2036 }2370 }
@@ -2042,7 +2376,7 @@ func (x *MarkReadyRequest) String() string {
2042 func (*MarkReadyRequest) ProtoMessage() {}2376 func (*MarkReadyRequest) ProtoMessage() {}
2043 2377
2044 func (x *MarkReadyRequest) ProtoReflect() protoreflect.Message {2378 func (x *MarkReadyRequest) ProtoReflect() protoreflect.Message {
2045- mi := &file_ermite_merge_request_proto_msgTypes[21]2379+ mi := &file_ermite_merge_request_proto_msgTypes[23]
2046 if x != nil {2380 if x != nil {
2047 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2381 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2048 if ms.LoadMessageInfo() == nil {2382 if ms.LoadMessageInfo() == nil {
@@ -2055,7 +2389,7 @@ func (x *MarkReadyRequest) ProtoReflect() protoreflect.Message {
2055 2389
2056 // Deprecated: Use MarkReadyRequest.ProtoReflect.Descriptor instead.2390 // Deprecated: Use MarkReadyRequest.ProtoReflect.Descriptor instead.
2057 func (*MarkReadyRequest) Descriptor() ([]byte, []int) {2391 func (*MarkReadyRequest) Descriptor() ([]byte, []int) {
2058- return file_ermite_merge_request_proto_rawDescGZIP(), []int{21}2392+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}
2059 }2393 }
2060 2394
2061 func (x *MarkReadyRequest) GetRepo() string {2395 func (x *MarkReadyRequest) GetRepo() string {
@@ -2084,7 +2418,7 @@ type MarkReadyResponse struct {
2084 2418
2085 func (x *MarkReadyResponse) Reset() {2419 func (x *MarkReadyResponse) Reset() {
2086 *x = MarkReadyResponse{}2420 *x = MarkReadyResponse{}
2087- mi := &file_ermite_merge_request_proto_msgTypes[22]2421+ mi := &file_ermite_merge_request_proto_msgTypes[24]
2088 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2422 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2089 ms.StoreMessageInfo(mi)2423 ms.StoreMessageInfo(mi)
2090 }2424 }
@@ -2096,7 +2430,7 @@ func (x *MarkReadyResponse) String() string {
2096 func (*MarkReadyResponse) ProtoMessage() {}2430 func (*MarkReadyResponse) ProtoMessage() {}
2097 2431
2098 func (x *MarkReadyResponse) ProtoReflect() protoreflect.Message {2432 func (x *MarkReadyResponse) ProtoReflect() protoreflect.Message {
2099- mi := &file_ermite_merge_request_proto_msgTypes[22]2433+ mi := &file_ermite_merge_request_proto_msgTypes[24]
2100 if x != nil {2434 if x != nil {
2101 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2435 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2102 if ms.LoadMessageInfo() == nil {2436 if ms.LoadMessageInfo() == nil {
@@ -2109,7 +2443,7 @@ func (x *MarkReadyResponse) ProtoReflect() protoreflect.Message {
2109 2443
2110 // Deprecated: Use MarkReadyResponse.ProtoReflect.Descriptor instead.2444 // Deprecated: Use MarkReadyResponse.ProtoReflect.Descriptor instead.
2111 func (*MarkReadyResponse) Descriptor() ([]byte, []int) {2445 func (*MarkReadyResponse) Descriptor() ([]byte, []int) {
2112- return file_ermite_merge_request_proto_rawDescGZIP(), []int{22}2446+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}
2113 }2447 }
2114 2448
2115 func (x *MarkReadyResponse) GetMergeRequest() *MergeRequest {2449 func (x *MarkReadyResponse) GetMergeRequest() *MergeRequest {
@@ -2150,7 +2484,7 @@ type MergeMergeRequestRequest struct {
2150 2484
2151 func (x *MergeMergeRequestRequest) Reset() {2485 func (x *MergeMergeRequestRequest) Reset() {
2152 *x = MergeMergeRequestRequest{}2486 *x = MergeMergeRequestRequest{}
2153- mi := &file_ermite_merge_request_proto_msgTypes[23]2487+ mi := &file_ermite_merge_request_proto_msgTypes[25]
2154 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2488 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2155 ms.StoreMessageInfo(mi)2489 ms.StoreMessageInfo(mi)
2156 }2490 }
@@ -2162,7 +2496,7 @@ func (x *MergeMergeRequestRequest) String() string {
2162 func (*MergeMergeRequestRequest) ProtoMessage() {}2496 func (*MergeMergeRequestRequest) ProtoMessage() {}
2163 2497
2164 func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {2498 func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
2165- mi := &file_ermite_merge_request_proto_msgTypes[23]2499+ mi := &file_ermite_merge_request_proto_msgTypes[25]
2166 if x != nil {2500 if x != nil {
2167 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2501 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2168 if ms.LoadMessageInfo() == nil {2502 if ms.LoadMessageInfo() == nil {
@@ -2175,7 +2509,7 @@ func (x *MergeMergeRequestRequest) ProtoReflect() protoreflect.Message {
2175 2509
2176 // Deprecated: Use MergeMergeRequestRequest.ProtoReflect.Descriptor instead.2510 // Deprecated: Use MergeMergeRequestRequest.ProtoReflect.Descriptor instead.
2177 func (*MergeMergeRequestRequest) Descriptor() ([]byte, []int) {2511 func (*MergeMergeRequestRequest) Descriptor() ([]byte, []int) {
2178- return file_ermite_merge_request_proto_rawDescGZIP(), []int{23}2512+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}
2179 }2513 }
2180 2514
2181 func (x *MergeMergeRequestRequest) GetRepo() string {2515 func (x *MergeMergeRequestRequest) GetRepo() string {
@@ -2239,7 +2573,7 @@ type MergeMergeRequestResponse struct {
2239 2573
2240 func (x *MergeMergeRequestResponse) Reset() {2574 func (x *MergeMergeRequestResponse) Reset() {
2241 *x = MergeMergeRequestResponse{}2575 *x = MergeMergeRequestResponse{}
2242- mi := &file_ermite_merge_request_proto_msgTypes[24]2576+ mi := &file_ermite_merge_request_proto_msgTypes[26]
2243 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2577 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2244 ms.StoreMessageInfo(mi)2578 ms.StoreMessageInfo(mi)
2245 }2579 }
@@ -2251,7 +2585,7 @@ func (x *MergeMergeRequestResponse) String() string {
2251 func (*MergeMergeRequestResponse) ProtoMessage() {}2585 func (*MergeMergeRequestResponse) ProtoMessage() {}
2252 2586
2253 func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {2587 func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
2254- mi := &file_ermite_merge_request_proto_msgTypes[24]2588+ mi := &file_ermite_merge_request_proto_msgTypes[26]
2255 if x != nil {2589 if x != nil {
2256 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2590 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2257 if ms.LoadMessageInfo() == nil {2591 if ms.LoadMessageInfo() == nil {
@@ -2264,7 +2598,7 @@ func (x *MergeMergeRequestResponse) ProtoReflect() protoreflect.Message {
2264 2598
2265 // Deprecated: Use MergeMergeRequestResponse.ProtoReflect.Descriptor instead.2599 // Deprecated: Use MergeMergeRequestResponse.ProtoReflect.Descriptor instead.
2266 func (*MergeMergeRequestResponse) Descriptor() ([]byte, []int) {2600 func (*MergeMergeRequestResponse) Descriptor() ([]byte, []int) {
2267- return file_ermite_merge_request_proto_rawDescGZIP(), []int{24}2601+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}
2268 }2602 }
2269 2603
2270 func (x *MergeMergeRequestResponse) GetMergeRequest() *MergeRequest {2604 func (x *MergeMergeRequestResponse) GetMergeRequest() *MergeRequest {
@@ -2302,7 +2636,7 @@ type EnableAutoMergeRequest struct {
2302 2636
2303 func (x *EnableAutoMergeRequest) Reset() {2637 func (x *EnableAutoMergeRequest) Reset() {
2304 *x = EnableAutoMergeRequest{}2638 *x = EnableAutoMergeRequest{}
2305- mi := &file_ermite_merge_request_proto_msgTypes[25]2639+ mi := &file_ermite_merge_request_proto_msgTypes[27]
2306 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2640 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2307 ms.StoreMessageInfo(mi)2641 ms.StoreMessageInfo(mi)
2308 }2642 }
@@ -2314,7 +2648,7 @@ func (x *EnableAutoMergeRequest) String() string {
2314 func (*EnableAutoMergeRequest) ProtoMessage() {}2648 func (*EnableAutoMergeRequest) ProtoMessage() {}
2315 2649
2316 func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {2650 func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
2317- mi := &file_ermite_merge_request_proto_msgTypes[25]2651+ mi := &file_ermite_merge_request_proto_msgTypes[27]
2318 if x != nil {2652 if x != nil {
2319 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2653 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2320 if ms.LoadMessageInfo() == nil {2654 if ms.LoadMessageInfo() == nil {
@@ -2327,7 +2661,7 @@ func (x *EnableAutoMergeRequest) ProtoReflect() protoreflect.Message {
2327 2661
2328 // Deprecated: Use EnableAutoMergeRequest.ProtoReflect.Descriptor instead.2662 // Deprecated: Use EnableAutoMergeRequest.ProtoReflect.Descriptor instead.
2329 func (*EnableAutoMergeRequest) Descriptor() ([]byte, []int) {2663 func (*EnableAutoMergeRequest) Descriptor() ([]byte, []int) {
2330- return file_ermite_merge_request_proto_rawDescGZIP(), []int{25}2664+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}
2331 }2665 }
2332 2666
2333 func (x *EnableAutoMergeRequest) GetRepo() string {2667 func (x *EnableAutoMergeRequest) GetRepo() string {
@@ -2369,7 +2703,7 @@ type EnableAutoMergeResponse struct {
2369 2703
2370 func (x *EnableAutoMergeResponse) Reset() {2704 func (x *EnableAutoMergeResponse) Reset() {
2371 *x = EnableAutoMergeResponse{}2705 *x = EnableAutoMergeResponse{}
2372- mi := &file_ermite_merge_request_proto_msgTypes[26]2706+ mi := &file_ermite_merge_request_proto_msgTypes[28]
2373 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2707 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2374 ms.StoreMessageInfo(mi)2708 ms.StoreMessageInfo(mi)
2375 }2709 }
@@ -2381,7 +2715,7 @@ func (x *EnableAutoMergeResponse) String() string {
2381 func (*EnableAutoMergeResponse) ProtoMessage() {}2715 func (*EnableAutoMergeResponse) ProtoMessage() {}
2382 2716
2383 func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {2717 func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
2384- mi := &file_ermite_merge_request_proto_msgTypes[26]2718+ mi := &file_ermite_merge_request_proto_msgTypes[28]
2385 if x != nil {2719 if x != nil {
2386 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2720 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2387 if ms.LoadMessageInfo() == nil {2721 if ms.LoadMessageInfo() == nil {
@@ -2394,7 +2728,7 @@ func (x *EnableAutoMergeResponse) ProtoReflect() protoreflect.Message {
2394 2728
2395 // Deprecated: Use EnableAutoMergeResponse.ProtoReflect.Descriptor instead.2729 // Deprecated: Use EnableAutoMergeResponse.ProtoReflect.Descriptor instead.
2396 func (*EnableAutoMergeResponse) Descriptor() ([]byte, []int) {2730 func (*EnableAutoMergeResponse) Descriptor() ([]byte, []int) {
2397- return file_ermite_merge_request_proto_rawDescGZIP(), []int{26}2731+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}
2398 }2732 }
2399 2733
2400 func (x *EnableAutoMergeResponse) GetMergeRequest() *MergeRequest {2734 func (x *EnableAutoMergeResponse) GetMergeRequest() *MergeRequest {
@@ -2417,7 +2751,7 @@ type CancelAutoMergeRequest struct {
2417 2751
2418 func (x *CancelAutoMergeRequest) Reset() {2752 func (x *CancelAutoMergeRequest) Reset() {
2419 *x = CancelAutoMergeRequest{}2753 *x = CancelAutoMergeRequest{}
2420- mi := &file_ermite_merge_request_proto_msgTypes[27]2754+ mi := &file_ermite_merge_request_proto_msgTypes[29]
2421 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2755 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2422 ms.StoreMessageInfo(mi)2756 ms.StoreMessageInfo(mi)
2423 }2757 }
@@ -2429,7 +2763,7 @@ func (x *CancelAutoMergeRequest) String() string {
2429 func (*CancelAutoMergeRequest) ProtoMessage() {}2763 func (*CancelAutoMergeRequest) ProtoMessage() {}
2430 2764
2431 func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {2765 func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
2432- mi := &file_ermite_merge_request_proto_msgTypes[27]2766+ mi := &file_ermite_merge_request_proto_msgTypes[29]
2433 if x != nil {2767 if x != nil {
2434 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2768 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2435 if ms.LoadMessageInfo() == nil {2769 if ms.LoadMessageInfo() == nil {
@@ -2442,7 +2776,7 @@ func (x *CancelAutoMergeRequest) ProtoReflect() protoreflect.Message {
2442 2776
2443 // Deprecated: Use CancelAutoMergeRequest.ProtoReflect.Descriptor instead.2777 // Deprecated: Use CancelAutoMergeRequest.ProtoReflect.Descriptor instead.
2444 func (*CancelAutoMergeRequest) Descriptor() ([]byte, []int) {2778 func (*CancelAutoMergeRequest) Descriptor() ([]byte, []int) {
2445- return file_ermite_merge_request_proto_rawDescGZIP(), []int{27}2779+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{29}
2446 }2780 }
2447 2781
2448 func (x *CancelAutoMergeRequest) GetRepo() string {2782 func (x *CancelAutoMergeRequest) GetRepo() string {
@@ -2470,7 +2804,7 @@ type CancelAutoMergeResponse struct {
2470 2804
2471 func (x *CancelAutoMergeResponse) Reset() {2805 func (x *CancelAutoMergeResponse) Reset() {
2472 *x = CancelAutoMergeResponse{}2806 *x = CancelAutoMergeResponse{}
2473- mi := &file_ermite_merge_request_proto_msgTypes[28]2807+ mi := &file_ermite_merge_request_proto_msgTypes[30]
2474 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2808 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2475 ms.StoreMessageInfo(mi)2809 ms.StoreMessageInfo(mi)
2476 }2810 }
@@ -2482,7 +2816,7 @@ func (x *CancelAutoMergeResponse) String() string {
2482 func (*CancelAutoMergeResponse) ProtoMessage() {}2816 func (*CancelAutoMergeResponse) ProtoMessage() {}
2483 2817
2484 func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {2818 func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
2485- mi := &file_ermite_merge_request_proto_msgTypes[28]2819+ mi := &file_ermite_merge_request_proto_msgTypes[30]
2486 if x != nil {2820 if x != nil {
2487 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2821 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2488 if ms.LoadMessageInfo() == nil {2822 if ms.LoadMessageInfo() == nil {
@@ -2495,7 +2829,7 @@ func (x *CancelAutoMergeResponse) ProtoReflect() protoreflect.Message {
2495 2829
2496 // Deprecated: Use CancelAutoMergeResponse.ProtoReflect.Descriptor instead.2830 // Deprecated: Use CancelAutoMergeResponse.ProtoReflect.Descriptor instead.
2497 func (*CancelAutoMergeResponse) Descriptor() ([]byte, []int) {2831 func (*CancelAutoMergeResponse) Descriptor() ([]byte, []int) {
2498- return file_ermite_merge_request_proto_rawDescGZIP(), []int{28}2832+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{30}
2499 }2833 }
2500 2834
2501 func (x *CancelAutoMergeResponse) GetMergeRequest() *MergeRequest {2835 func (x *CancelAutoMergeResponse) GetMergeRequest() *MergeRequest {
@@ -2522,7 +2856,7 @@ type MarkReadRequest struct {
2522 2856
2523 func (x *MarkReadRequest) Reset() {2857 func (x *MarkReadRequest) Reset() {
2524 *x = MarkReadRequest{}2858 *x = MarkReadRequest{}
2525- mi := &file_ermite_merge_request_proto_msgTypes[29]2859+ mi := &file_ermite_merge_request_proto_msgTypes[31]
2526 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2860 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2527 ms.StoreMessageInfo(mi)2861 ms.StoreMessageInfo(mi)
2528 }2862 }
@@ -2534,7 +2868,7 @@ func (x *MarkReadRequest) String() string {
2534 func (*MarkReadRequest) ProtoMessage() {}2868 func (*MarkReadRequest) ProtoMessage() {}
2535 2869
2536 func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {2870 func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
2537- mi := &file_ermite_merge_request_proto_msgTypes[29]2871+ mi := &file_ermite_merge_request_proto_msgTypes[31]
2538 if x != nil {2872 if x != nil {
2539 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2873 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2540 if ms.LoadMessageInfo() == nil {2874 if ms.LoadMessageInfo() == nil {
@@ -2547,7 +2881,7 @@ func (x *MarkReadRequest) ProtoReflect() protoreflect.Message {
2547 2881
2548 // Deprecated: Use MarkReadRequest.ProtoReflect.Descriptor instead.2882 // Deprecated: Use MarkReadRequest.ProtoReflect.Descriptor instead.
2549 func (*MarkReadRequest) Descriptor() ([]byte, []int) {2883 func (*MarkReadRequest) Descriptor() ([]byte, []int) {
2550- return file_ermite_merge_request_proto_rawDescGZIP(), []int{29}2884+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{31}
2551 }2885 }
2552 2886
2553 func (x *MarkReadRequest) GetRepo() string {2887 func (x *MarkReadRequest) GetRepo() string {
@@ -2580,7 +2914,7 @@ type MarkReadResponse struct {
2580 2914
2581 func (x *MarkReadResponse) Reset() {2915 func (x *MarkReadResponse) Reset() {
2582 *x = MarkReadResponse{}2916 *x = MarkReadResponse{}
2583- mi := &file_ermite_merge_request_proto_msgTypes[30]2917+ mi := &file_ermite_merge_request_proto_msgTypes[32]
2584 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2918 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2585 ms.StoreMessageInfo(mi)2919 ms.StoreMessageInfo(mi)
2586 }2920 }
@@ -2592,7 +2926,7 @@ func (x *MarkReadResponse) String() string {
2592 func (*MarkReadResponse) ProtoMessage() {}2926 func (*MarkReadResponse) ProtoMessage() {}
2593 2927
2594 func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {2928 func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
2595- mi := &file_ermite_merge_request_proto_msgTypes[30]2929+ mi := &file_ermite_merge_request_proto_msgTypes[32]
2596 if x != nil {2930 if x != nil {
2597 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))2931 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2598 if ms.LoadMessageInfo() == nil {2932 if ms.LoadMessageInfo() == nil {
@@ -2605,7 +2939,7 @@ func (x *MarkReadResponse) ProtoReflect() protoreflect.Message {
2605 2939
2606 // Deprecated: Use MarkReadResponse.ProtoReflect.Descriptor instead.2940 // Deprecated: Use MarkReadResponse.ProtoReflect.Descriptor instead.
2607 func (*MarkReadResponse) Descriptor() ([]byte, []int) {2941 func (*MarkReadResponse) Descriptor() ([]byte, []int) {
2608- return file_ermite_merge_request_proto_rawDescGZIP(), []int{30}2942+ return file_ermite_merge_request_proto_rawDescGZIP(), []int{32}
2609 }2943 }
2610 2944
2611 var File_ermite_merge_request_proto protoreflect.FileDescriptor2945 var File_ermite_merge_request_proto protoreflect.FileDescriptor
@@ -2696,11 +3030,27 @@ const file_ermite_merge_request_proto_rawDesc = "" +
2696 "page_token\x18\x04 \x01(\tR\tpageToken\"\x80\x01\n" +3030 "page_token\x18\x04 \x01(\tR\tpageToken\"\x80\x01\n" +
2697 "\x19ListMergeRequestsResponse\x12;\n" +3031 "\x19ListMergeRequestsResponse\x12;\n" +
2698 "\x0emerge_requests\x18\x01 \x03(\v2\x14.ermite.MergeRequestR\rmergeRequests\x12&\n" +3032 "\x0emerge_requests\x18\x01 \x03(\v2\x14.ermite.MergeRequestR\rmergeRequests\x12&\n" +
2699- "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"l\n" +3033+ "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\x8f\x01\n" +
3034+ "\x11MergeRequestIssue\x12\x16\n" +
3035+ "\x06number\x18\x01 \x01(\x03R\x06number\x12\x14\n" +
3036+ "\x05title\x18\x02 \x01(\tR\x05title\x124\n" +
3037+ "\x05state\x18\x03 \x01(\x0e2\x1e.ermite.MergeRequestIssueStateR\x05state\x12\x16\n" +
3038+ "\x06closes\x18\x04 \x01(\bR\x06closes\"\x9c\x02\n" +
3039+ "\n" +
3040+ "IssueEvent\x12\x0e\n" +
3041+ "\x02id\x18\x01 \x01(\tR\x02id\x12*\n" +
3042+ "\x04kind\x18\x02 \x01(\x0e2\x16.ermite.IssueEventKindR\x04kind\x12\x14\n" +
3043+ "\x05issue\x18\x03 \x01(\x03R\x05issue\x12#\n" +
3044+ "\rmerge_request\x18\x04 \x01(\x03R\fmergeRequest\x12.\n" +
3045+ "\x13merge_request_title\x18\x05 \x01(\tR\x11mergeRequestTitle\x12\x16\n" +
3046+ "\x06closes\x18\x06 \x01(\bR\x06closes\x12\x14\n" +
3047+ "\x05actor\x18\a \x01(\tR\x05actor\x129\n" +
3048+ "\n" +
3049+ "created_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"l\n" +
2700 "\x16GetMergeRequestRequest\x12\x12\n" +3050 "\x16GetMergeRequestRequest\x12\x12\n" +
2701 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +3051 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2702 "\x06number\x18\x02 \x01(\x03R\x06number\x12&\n" +3052 "\x06number\x18\x02 \x01(\x03R\x06number\x12&\n" +
2703- "\x0fsince_last_read\x18\x03 \x01(\bR\rsinceLastRead\"\xc0\x03\n" +3053+ "\x0fsince_last_read\x18\x03 \x01(\bR\rsinceLastRead\"\xaa\x04\n" +
2704 "\x17GetMergeRequestResponse\x129\n" +3054 "\x17GetMergeRequestResponse\x129\n" +
2705 "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x12(\n" +3055 "\rmerge_request\x18\x01 \x01(\v2\x14.ermite.MergeRequestR\fmergeRequest\x12(\n" +
2706 "\acommits\x18\x02 \x03(\v2\x0e.ermite.CommitR\acommits\x12+\n" +3056 "\acommits\x18\x02 \x03(\v2\x0e.ermite.CommitR\acommits\x12+\n" +
@@ -2714,7 +3064,9 @@ const file_ermite_merge_request_proto_rawDesc = "" +
2714 "lastReadId\x12$\n" +3064 "lastReadId\x12$\n" +
2715 "\x0elast_read_lost\x18\t \x01(\bR\flastReadLost\x121\n" +3065 "\x0elast_read_lost\x18\t \x01(\bR\flastReadLost\x121\n" +
2716 "\bverdicts\x18\n" +3066 "\bverdicts\x18\n" +
2717- " \x03(\v2\x15.ermite.AuthorVerdictR\bverdicts\"\x86\x02\n" +3067+ " \x03(\v2\x15.ermite.AuthorVerdictR\bverdicts\x121\n" +
3068+ "\x06issues\x18\v \x03(\v2\x19.ermite.MergeRequestIssueR\x06issues\x125\n" +
3069+ "\fissue_events\x18\f \x03(\v2\x12.ermite.IssueEventR\vissueEvents\"\x86\x02\n" +
2718 "\x11AddCommentRequest\x12\x12\n" +3070 "\x11AddCommentRequest\x12\x12\n" +
2719 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +3071 "\x04repo\x18\x01 \x01(\tR\x04repo\x12\x16\n" +
2720 "\x06number\x18\x02 \x01(\x03R\x06number\x12\x12\n" +3072 "\x06number\x18\x02 \x01(\x03R\x06number\x12\x12\n" +
@@ -2806,7 +3158,18 @@ const file_ermite_merge_request_proto_rawDesc = "" +
2806 "\x1bMERGEABILITY_STATE_CHECKING\x10\x01\x12!\n" +3158 "\x1bMERGEABILITY_STATE_CHECKING\x10\x01\x12!\n" +
2807 "\x1dMERGEABILITY_STATE_UP_TO_DATE\x10\x02\x12\x1d\n" +3159 "\x1dMERGEABILITY_STATE_UP_TO_DATE\x10\x02\x12\x1d\n" +
2808 "\x19MERGEABILITY_STATE_BEHIND\x10\x03\x12\x1f\n" +3160 "\x19MERGEABILITY_STATE_BEHIND\x10\x03\x12\x1f\n" +
2809- "\x1bMERGEABILITY_STATE_CONFLICT\x10\x042\xa9\b\n" +3161+ "\x1bMERGEABILITY_STATE_CONFLICT\x10\x04*\xb5\x01\n" +
3162+ "\x16MergeRequestIssueState\x12)\n" +
3163+ "%MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED\x10\x00\x12\"\n" +
3164+ "\x1eMERGE_REQUEST_ISSUE_STATE_OPEN\x10\x01\x12$\n" +
3165+ " MERGE_REQUEST_ISSUE_STATE_CLOSED\x10\x02\x12&\n" +
3166+ "\"MERGE_REQUEST_ISSUE_STATE_RESOLVED\x10\x04*\xae\x01\n" +
3167+ "\x0eIssueEventKind\x12 \n" +
3168+ "\x1cISSUE_EVENT_KIND_UNSPECIFIED\x10\x00\x12\x1f\n" +
3169+ "\x1bISSUE_EVENT_KIND_REFERENCED\x10\x01\x12\x1b\n" +
3170+ "\x17ISSUE_EVENT_KIND_CLOSED\x10\x02\x12\x1d\n" +
3171+ "\x19ISSUE_EVENT_KIND_REOPENED\x10\x03\x12\x1d\n" +
3172+ "\x19ISSUE_EVENT_KIND_RESOLVED\x10\x042\xa9\b\n" +
2810 "\x13MergeRequestService\x12[\n" +3173 "\x13MergeRequestService\x12[\n" +
2811 "\x12CreateMergeRequest\x12!.ermite.CreateMergeRequestRequest\x1a\".ermite.CreateMergeRequestResponse\x12X\n" +3174 "\x12CreateMergeRequest\x12!.ermite.CreateMergeRequestRequest\x1a\".ermite.CreateMergeRequestResponse\x12X\n" +
2812 "\x11ListMergeRequests\x12 .ermite.ListMergeRequestsRequest\x1a!.ermite.ListMergeRequestsResponse\x12R\n" +3175 "\x11ListMergeRequests\x12 .ermite.ListMergeRequestsRequest\x1a!.ermite.ListMergeRequestsResponse\x12R\n" +
@@ -2837,120 +3200,129 @@ func file_ermite_merge_request_proto_rawDescGZIP() []byte {
2837 return file_ermite_merge_request_proto_rawDescData3200 return file_ermite_merge_request_proto_rawDescData
2838 }3201 }
2839 3202
2840-var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 4)3203+var file_ermite_merge_request_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
2841-var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 31)3204+var file_ermite_merge_request_proto_msgTypes = make([]protoimpl.MessageInfo, 33)
2842 var file_ermite_merge_request_proto_goTypes = []any{3205 var file_ermite_merge_request_proto_goTypes = []any{
2843 (MergeRequestState)(0), // 0: ermite.MergeRequestState3206 (MergeRequestState)(0), // 0: ermite.MergeRequestState
2844 (DiffSide)(0), // 1: ermite.DiffSide3207 (DiffSide)(0), // 1: ermite.DiffSide
2845 (Verdict)(0), // 2: ermite.Verdict3208 (Verdict)(0), // 2: ermite.Verdict
2846 (MergeabilityState)(0), // 3: ermite.MergeabilityState3209 (MergeabilityState)(0), // 3: ermite.MergeabilityState
2847- (*Mergeability)(nil), // 4: ermite.Mergeability3210+ (MergeRequestIssueState)(0), // 4: ermite.MergeRequestIssueState
2848- (*AutoMerge)(nil), // 5: ermite.AutoMerge3211+ (IssueEventKind)(0), // 5: ermite.IssueEventKind
2849- (*MergeRequest)(nil), // 6: ermite.MergeRequest3212+ (*Mergeability)(nil), // 6: ermite.Mergeability
2850- (*Comment)(nil), // 7: ermite.Comment3213+ (*AutoMerge)(nil), // 7: ermite.AutoMerge
2851- (*AuthorVerdict)(nil), // 8: ermite.AuthorVerdict3214+ (*MergeRequest)(nil), // 8: ermite.MergeRequest
2852- (*CreateMergeRequestRequest)(nil), // 9: ermite.CreateMergeRequestRequest3215+ (*Comment)(nil), // 9: ermite.Comment
2853- (*CreateMergeRequestResponse)(nil), // 10: ermite.CreateMergeRequestResponse3216+ (*AuthorVerdict)(nil), // 10: ermite.AuthorVerdict
2854- (*ListMergeRequestsRequest)(nil), // 11: ermite.ListMergeRequestsRequest3217+ (*CreateMergeRequestRequest)(nil), // 11: ermite.CreateMergeRequestRequest
2855- (*ListMergeRequestsResponse)(nil), // 12: ermite.ListMergeRequestsResponse3218+ (*CreateMergeRequestResponse)(nil), // 12: ermite.CreateMergeRequestResponse
2856- (*GetMergeRequestRequest)(nil), // 13: ermite.GetMergeRequestRequest3219+ (*ListMergeRequestsRequest)(nil), // 13: ermite.ListMergeRequestsRequest
2857- (*GetMergeRequestResponse)(nil), // 14: ermite.GetMergeRequestResponse3220+ (*ListMergeRequestsResponse)(nil), // 14: ermite.ListMergeRequestsResponse
2858- (*AddCommentRequest)(nil), // 15: ermite.AddCommentRequest3221+ (*MergeRequestIssue)(nil), // 15: ermite.MergeRequestIssue
2859- (*AddCommentResponse)(nil), // 16: ermite.AddCommentResponse3222+ (*IssueEvent)(nil), // 16: ermite.IssueEvent
2860- (*EditCommentRequest)(nil), // 17: ermite.EditCommentRequest3223+ (*GetMergeRequestRequest)(nil), // 17: ermite.GetMergeRequestRequest
2861- (*EditCommentResponse)(nil), // 18: ermite.EditCommentResponse3224+ (*GetMergeRequestResponse)(nil), // 18: ermite.GetMergeRequestResponse
2862- (*DeleteCommentRequest)(nil), // 19: ermite.DeleteCommentRequest3225+ (*AddCommentRequest)(nil), // 19: ermite.AddCommentRequest
2863- (*DeleteCommentResponse)(nil), // 20: ermite.DeleteCommentResponse3226+ (*AddCommentResponse)(nil), // 20: ermite.AddCommentResponse
2864- (*ResolveCommentRequest)(nil), // 21: ermite.ResolveCommentRequest3227+ (*EditCommentRequest)(nil), // 21: ermite.EditCommentRequest
2865- (*ResolveCommentResponse)(nil), // 22: ermite.ResolveCommentResponse3228+ (*EditCommentResponse)(nil), // 22: ermite.EditCommentResponse
2866- (*CloseMergeRequestRequest)(nil), // 23: ermite.CloseMergeRequestRequest3229+ (*DeleteCommentRequest)(nil), // 23: ermite.DeleteCommentRequest
2867- (*CloseMergeRequestResponse)(nil), // 24: ermite.CloseMergeRequestResponse3230+ (*DeleteCommentResponse)(nil), // 24: ermite.DeleteCommentResponse
2868- (*MarkReadyRequest)(nil), // 25: ermite.MarkReadyRequest3231+ (*ResolveCommentRequest)(nil), // 25: ermite.ResolveCommentRequest
2869- (*MarkReadyResponse)(nil), // 26: ermite.MarkReadyResponse3232+ (*ResolveCommentResponse)(nil), // 26: ermite.ResolveCommentResponse
2870- (*MergeMergeRequestRequest)(nil), // 27: ermite.MergeMergeRequestRequest3233+ (*CloseMergeRequestRequest)(nil), // 27: ermite.CloseMergeRequestRequest
2871- (*MergeMergeRequestResponse)(nil), // 28: ermite.MergeMergeRequestResponse3234+ (*CloseMergeRequestResponse)(nil), // 28: ermite.CloseMergeRequestResponse
2872- (*EnableAutoMergeRequest)(nil), // 29: ermite.EnableAutoMergeRequest3235+ (*MarkReadyRequest)(nil), // 29: ermite.MarkReadyRequest
2873- (*EnableAutoMergeResponse)(nil), // 30: ermite.EnableAutoMergeResponse3236+ (*MarkReadyResponse)(nil), // 30: ermite.MarkReadyResponse
2874- (*CancelAutoMergeRequest)(nil), // 31: ermite.CancelAutoMergeRequest3237+ (*MergeMergeRequestRequest)(nil), // 31: ermite.MergeMergeRequestRequest
2875- (*CancelAutoMergeResponse)(nil), // 32: ermite.CancelAutoMergeResponse3238+ (*MergeMergeRequestResponse)(nil), // 32: ermite.MergeMergeRequestResponse
2876- (*MarkReadRequest)(nil), // 33: ermite.MarkReadRequest3239+ (*EnableAutoMergeRequest)(nil), // 33: ermite.EnableAutoMergeRequest
2877- (*MarkReadResponse)(nil), // 34: ermite.MarkReadResponse3240+ (*EnableAutoMergeResponse)(nil), // 34: ermite.EnableAutoMergeResponse
2878- (*timestamppb.Timestamp)(nil), // 35: google.protobuf.Timestamp3241+ (*CancelAutoMergeRequest)(nil), // 35: ermite.CancelAutoMergeRequest
2879- (MergeMode)(0), // 36: ermite.MergeMode3242+ (*CancelAutoMergeResponse)(nil), // 36: ermite.CancelAutoMergeResponse
2880- (*Commit)(nil), // 37: ermite.Commit3243+ (*MarkReadRequest)(nil), // 37: ermite.MarkReadRequest
2881- (*DiffStats)(nil), // 38: ermite.DiffStats3244+ (*MarkReadResponse)(nil), // 38: ermite.MarkReadResponse
2882- (*Diff)(nil), // 39: ermite.Diff3245+ (*timestamppb.Timestamp)(nil), // 39: google.protobuf.Timestamp
3246+ (MergeMode)(0), // 40: ermite.MergeMode
3247+ (*Commit)(nil), // 41: ermite.Commit
3248+ (*DiffStats)(nil), // 42: ermite.DiffStats
3249+ (*Diff)(nil), // 43: ermite.Diff
2883 }3250 }
2884 var file_ermite_merge_request_proto_depIdxs = []int32{3251 var file_ermite_merge_request_proto_depIdxs = []int32{
2885 3, // 0: ermite.Mergeability.state:type_name -> ermite.MergeabilityState3252 3, // 0: ermite.Mergeability.state:type_name -> ermite.MergeabilityState
2886- 35, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp3253+ 39, // 1: ermite.Mergeability.checked_at:type_name -> google.protobuf.Timestamp
2887- 36, // 2: ermite.AutoMerge.mode:type_name -> ermite.MergeMode3254+ 40, // 2: ermite.AutoMerge.mode:type_name -> ermite.MergeMode
2888- 35, // 3: ermite.AutoMerge.enabled_at:type_name -> google.protobuf.Timestamp3255+ 39, // 3: ermite.AutoMerge.enabled_at:type_name -> google.protobuf.Timestamp
2889 0, // 4: ermite.MergeRequest.state:type_name -> ermite.MergeRequestState3256 0, // 4: ermite.MergeRequest.state:type_name -> ermite.MergeRequestState
2890- 35, // 5: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp3257+ 39, // 5: ermite.MergeRequest.created_at:type_name -> google.protobuf.Timestamp
2891- 35, // 6: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp3258+ 39, // 6: ermite.MergeRequest.updated_at:type_name -> google.protobuf.Timestamp
2892- 36, // 7: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode3259+ 40, // 7: ermite.MergeRequest.merge_mode:type_name -> ermite.MergeMode
2893- 4, // 8: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability3260+ 6, // 8: ermite.MergeRequest.mergeability:type_name -> ermite.Mergeability
2894- 5, // 9: ermite.MergeRequest.auto_merge:type_name -> ermite.AutoMerge3261+ 7, // 9: ermite.MergeRequest.auto_merge:type_name -> ermite.AutoMerge
2895 1, // 10: ermite.Comment.side:type_name -> ermite.DiffSide3262 1, // 10: ermite.Comment.side:type_name -> ermite.DiffSide
2896- 35, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp3263+ 39, // 11: ermite.Comment.created_at:type_name -> google.protobuf.Timestamp
2897 2, // 12: ermite.Comment.verdict:type_name -> ermite.Verdict3264 2, // 12: ermite.Comment.verdict:type_name -> ermite.Verdict
2898- 35, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp3265+ 39, // 13: ermite.Comment.edited_at:type_name -> google.protobuf.Timestamp
2899 2, // 14: ermite.AuthorVerdict.verdict:type_name -> ermite.Verdict3266 2, // 14: ermite.AuthorVerdict.verdict:type_name -> ermite.Verdict
2900- 35, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp3267+ 39, // 15: ermite.AuthorVerdict.created_at:type_name -> google.protobuf.Timestamp
2901- 6, // 16: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest3268+ 8, // 16: ermite.CreateMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2902 0, // 17: ermite.ListMergeRequestsRequest.state:type_name -> ermite.MergeRequestState3269 0, // 17: ermite.ListMergeRequestsRequest.state:type_name -> ermite.MergeRequestState
2903- 6, // 18: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest3270+ 8, // 18: ermite.ListMergeRequestsResponse.merge_requests:type_name -> ermite.MergeRequest
2904- 6, // 19: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest3271+ 4, // 19: ermite.MergeRequestIssue.state:type_name -> ermite.MergeRequestIssueState
2905- 37, // 20: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit3272+ 5, // 20: ermite.IssueEvent.kind:type_name -> ermite.IssueEventKind
2906- 38, // 21: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats3273+ 39, // 21: ermite.IssueEvent.created_at:type_name -> google.protobuf.Timestamp
2907- 39, // 22: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff3274+ 8, // 22: ermite.GetMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2908- 7, // 23: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment3275+ 41, // 23: ermite.GetMergeRequestResponse.commits:type_name -> ermite.Commit
2909- 8, // 24: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict3276+ 42, // 24: ermite.GetMergeRequestResponse.stats:type_name -> ermite.DiffStats
2910- 1, // 25: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide3277+ 43, // 25: ermite.GetMergeRequestResponse.diff:type_name -> ermite.Diff
2911- 2, // 26: ermite.AddCommentRequest.verdict:type_name -> ermite.Verdict3278+ 9, // 26: ermite.GetMergeRequestResponse.comments:type_name -> ermite.Comment
2912- 7, // 27: ermite.AddCommentResponse.comment:type_name -> ermite.Comment3279+ 10, // 27: ermite.GetMergeRequestResponse.verdicts:type_name -> ermite.AuthorVerdict
2913- 7, // 28: ermite.EditCommentResponse.comment:type_name -> ermite.Comment3280+ 15, // 28: ermite.GetMergeRequestResponse.issues:type_name -> ermite.MergeRequestIssue
2914- 7, // 29: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment3281+ 16, // 29: ermite.GetMergeRequestResponse.issue_events:type_name -> ermite.IssueEvent
2915- 7, // 30: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment3282+ 1, // 30: ermite.AddCommentRequest.side:type_name -> ermite.DiffSide
2916- 6, // 31: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest3283+ 2, // 31: ermite.AddCommentRequest.verdict:type_name -> ermite.Verdict
2917- 6, // 32: ermite.MarkReadyResponse.merge_request:type_name -> ermite.MergeRequest3284+ 9, // 32: ermite.AddCommentResponse.comment:type_name -> ermite.Comment
2918- 36, // 33: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode3285+ 9, // 33: ermite.EditCommentResponse.comment:type_name -> ermite.Comment
2919- 6, // 34: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest3286+ 9, // 34: ermite.DeleteCommentResponse.comment:type_name -> ermite.Comment
2920- 36, // 35: ermite.EnableAutoMergeRequest.mode:type_name -> ermite.MergeMode3287+ 9, // 35: ermite.ResolveCommentResponse.comment:type_name -> ermite.Comment
2921- 6, // 36: ermite.EnableAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest3288+ 8, // 36: ermite.CloseMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2922- 6, // 37: ermite.CancelAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest3289+ 8, // 37: ermite.MarkReadyResponse.merge_request:type_name -> ermite.MergeRequest
2923- 9, // 38: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest3290+ 40, // 38: ermite.MergeMergeRequestRequest.mode:type_name -> ermite.MergeMode
2924- 11, // 39: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest3291+ 8, // 39: ermite.MergeMergeRequestResponse.merge_request:type_name -> ermite.MergeRequest
2925- 13, // 40: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest3292+ 40, // 40: ermite.EnableAutoMergeRequest.mode:type_name -> ermite.MergeMode
2926- 15, // 41: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest3293+ 8, // 41: ermite.EnableAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2927- 17, // 42: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest3294+ 8, // 42: ermite.CancelAutoMergeResponse.merge_request:type_name -> ermite.MergeRequest
2928- 19, // 43: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest3295+ 11, // 43: ermite.MergeRequestService.CreateMergeRequest:input_type -> ermite.CreateMergeRequestRequest
2929- 21, // 44: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest3296+ 13, // 44: ermite.MergeRequestService.ListMergeRequests:input_type -> ermite.ListMergeRequestsRequest
2930- 23, // 45: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest3297+ 17, // 45: ermite.MergeRequestService.GetMergeRequest:input_type -> ermite.GetMergeRequestRequest
2931- 25, // 46: ermite.MergeRequestService.MarkReady:input_type -> ermite.MarkReadyRequest3298+ 19, // 46: ermite.MergeRequestService.AddComment:input_type -> ermite.AddCommentRequest
2932- 27, // 47: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest3299+ 21, // 47: ermite.MergeRequestService.EditComment:input_type -> ermite.EditCommentRequest
2933- 29, // 48: ermite.MergeRequestService.EnableAutoMerge:input_type -> ermite.EnableAutoMergeRequest3300+ 23, // 48: ermite.MergeRequestService.DeleteComment:input_type -> ermite.DeleteCommentRequest
2934- 31, // 49: ermite.MergeRequestService.CancelAutoMerge:input_type -> ermite.CancelAutoMergeRequest3301+ 25, // 49: ermite.MergeRequestService.ResolveComment:input_type -> ermite.ResolveCommentRequest
2935- 33, // 50: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest3302+ 27, // 50: ermite.MergeRequestService.CloseMergeRequest:input_type -> ermite.CloseMergeRequestRequest
2936- 10, // 51: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse3303+ 29, // 51: ermite.MergeRequestService.MarkReady:input_type -> ermite.MarkReadyRequest
2937- 12, // 52: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse3304+ 31, // 52: ermite.MergeRequestService.MergeMergeRequest:input_type -> ermite.MergeMergeRequestRequest
2938- 14, // 53: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse3305+ 33, // 53: ermite.MergeRequestService.EnableAutoMerge:input_type -> ermite.EnableAutoMergeRequest
2939- 16, // 54: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse3306+ 35, // 54: ermite.MergeRequestService.CancelAutoMerge:input_type -> ermite.CancelAutoMergeRequest
2940- 18, // 55: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse3307+ 37, // 55: ermite.MergeRequestService.MarkRead:input_type -> ermite.MarkReadRequest
2941- 20, // 56: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse3308+ 12, // 56: ermite.MergeRequestService.CreateMergeRequest:output_type -> ermite.CreateMergeRequestResponse
2942- 22, // 57: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse3309+ 14, // 57: ermite.MergeRequestService.ListMergeRequests:output_type -> ermite.ListMergeRequestsResponse
2943- 24, // 58: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse3310+ 18, // 58: ermite.MergeRequestService.GetMergeRequest:output_type -> ermite.GetMergeRequestResponse
2944- 26, // 59: ermite.MergeRequestService.MarkReady:output_type -> ermite.MarkReadyResponse3311+ 20, // 59: ermite.MergeRequestService.AddComment:output_type -> ermite.AddCommentResponse
2945- 28, // 60: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse3312+ 22, // 60: ermite.MergeRequestService.EditComment:output_type -> ermite.EditCommentResponse
2946- 30, // 61: ermite.MergeRequestService.EnableAutoMerge:output_type -> ermite.EnableAutoMergeResponse3313+ 24, // 61: ermite.MergeRequestService.DeleteComment:output_type -> ermite.DeleteCommentResponse
2947- 32, // 62: ermite.MergeRequestService.CancelAutoMerge:output_type -> ermite.CancelAutoMergeResponse3314+ 26, // 62: ermite.MergeRequestService.ResolveComment:output_type -> ermite.ResolveCommentResponse
2948- 34, // 63: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse3315+ 28, // 63: ermite.MergeRequestService.CloseMergeRequest:output_type -> ermite.CloseMergeRequestResponse
2949- 51, // [51:64] is the sub-list for method output_type3316+ 30, // 64: ermite.MergeRequestService.MarkReady:output_type -> ermite.MarkReadyResponse
2950- 38, // [38:51] is the sub-list for method input_type3317+ 32, // 65: ermite.MergeRequestService.MergeMergeRequest:output_type -> ermite.MergeMergeRequestResponse
2951- 38, // [38:38] is the sub-list for extension type_name3318+ 34, // 66: ermite.MergeRequestService.EnableAutoMerge:output_type -> ermite.EnableAutoMergeResponse
2952- 38, // [38:38] is the sub-list for extension extendee3319+ 36, // 67: ermite.MergeRequestService.CancelAutoMerge:output_type -> ermite.CancelAutoMergeResponse
2953- 0, // [0:38] is the sub-list for field type_name3320+ 38, // 68: ermite.MergeRequestService.MarkRead:output_type -> ermite.MarkReadResponse
3321+ 56, // [56:69] is the sub-list for method output_type
3322+ 43, // [43:56] is the sub-list for method input_type
3323+ 43, // [43:43] is the sub-list for extension type_name
3324+ 43, // [43:43] is the sub-list for extension extendee
3325+ 0, // [0:43] is the sub-list for field type_name
2954 }3326 }
2955 3327
2956 func init() { file_ermite_merge_request_proto_init() }3328 func init() { file_ermite_merge_request_proto_init() }
@@ -2965,8 +3337,8 @@ func file_ermite_merge_request_proto_init() {
2965 File: protoimpl.DescBuilder{3337 File: protoimpl.DescBuilder{
2966 GoPackagePath: reflect.TypeOf(x{}).PkgPath(),3338 GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2967 RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)),3339 RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_merge_request_proto_rawDesc), len(file_ermite_merge_request_proto_rawDesc)),
2968- NumEnums: 4,3340+ NumEnums: 6,
2969- NumMessages: 31,3341+ NumMessages: 33,
2970 NumExtensions: 0,3342 NumExtensions: 0,
2971 NumServices: 1,3343 NumServices: 1,
2972 },3344 },
M issue_test.go +2 -1
@@ -19,6 +19,7 @@ func TestIssueProcedures(t *testing.T) {
1919 ermiteconnect.IssueServiceAddIssueCommentProcedure: "AddIssueComment",
2020 ermiteconnect.IssueServiceCloseIssueProcedure: "CloseIssue",
2121 ermiteconnect.IssueServiceReopenIssueProcedure: "ReopenIssue",
22+ ermiteconnect.IssueServiceResolveIssueProcedure: "ResolveIssue",
2223 ermiteconnect.IssueServiceListPendingIssuesProcedure: "ListPendingIssues",
2324 ermiteconnect.IssueServiceApproveIssueProcedure: "ApproveIssue",
2425 ermiteconnect.IssueServiceRejectIssueProcedure: "RejectIssue",
@@ -58,7 +59,7 @@ func TestIssueContract(t *testing.T) {
5859 if ermite.Scope_SCOPE_ISSUE_WRITE != 11 {
5960 t.Fatal("issue:write scope number changed")
6061 }
61- for name, want := range map[string]int32{"ISSUE_STATE_UNSPECIFIED": 0, "ISSUE_STATE_OPEN": 1, "ISSUE_STATE_CLOSED": 2, "ISSUE_STATE_PENDING": 3} {
62+ for name, want := range map[string]int32{"ISSUE_STATE_UNSPECIFIED": 0, "ISSUE_STATE_OPEN": 1, "ISSUE_STATE_CLOSED": 2, "ISSUE_STATE_PENDING": 3, "ISSUE_STATE_RESOLVED": 4} {
6263 if got := ermite.IssueState_value[name]; got != want {
6364 t.Errorf("%s = %d, want %d", name, got, want)
6465 }
@@ -19,6 +19,7 @@ func TestIssueProcedures(t *testing.T) {
19 ermiteconnect.IssueServiceAddIssueCommentProcedure: "AddIssueComment",19 ermiteconnect.IssueServiceAddIssueCommentProcedure: "AddIssueComment",
20 ermiteconnect.IssueServiceCloseIssueProcedure: "CloseIssue",20 ermiteconnect.IssueServiceCloseIssueProcedure: "CloseIssue",
21 ermiteconnect.IssueServiceReopenIssueProcedure: "ReopenIssue",21 ermiteconnect.IssueServiceReopenIssueProcedure: "ReopenIssue",
22+ ermiteconnect.IssueServiceResolveIssueProcedure: "ResolveIssue",
22 ermiteconnect.IssueServiceListPendingIssuesProcedure: "ListPendingIssues",23 ermiteconnect.IssueServiceListPendingIssuesProcedure: "ListPendingIssues",
23 ermiteconnect.IssueServiceApproveIssueProcedure: "ApproveIssue",24 ermiteconnect.IssueServiceApproveIssueProcedure: "ApproveIssue",
24 ermiteconnect.IssueServiceRejectIssueProcedure: "RejectIssue",25 ermiteconnect.IssueServiceRejectIssueProcedure: "RejectIssue",
@@ -58,7 +59,7 @@ func TestIssueContract(t *testing.T) {
58 if ermite.Scope_SCOPE_ISSUE_WRITE != 11 {59 if ermite.Scope_SCOPE_ISSUE_WRITE != 11 {
59 t.Fatal("issue:write scope number changed")60 t.Fatal("issue:write scope number changed")
60 }61 }
61- for name, want := range map[string]int32{"ISSUE_STATE_UNSPECIFIED": 0, "ISSUE_STATE_OPEN": 1, "ISSUE_STATE_CLOSED": 2, "ISSUE_STATE_PENDING": 3} {62+ for name, want := range map[string]int32{"ISSUE_STATE_UNSPECIFIED": 0, "ISSUE_STATE_OPEN": 1, "ISSUE_STATE_CLOSED": 2, "ISSUE_STATE_PENDING": 3, "ISSUE_STATE_RESOLVED": 4} {
62 if got := ermite.IssueState_value[name]; got != want {63 if got := ermite.IssueState_value[name]; got != want {
63 t.Errorf("%s = %d, want %d", name, got, want)64 t.Errorf("%s = %d, want %d", name, got, want)
64 }65 }
M proto/ermite/event.proto +15 -4
@@ -21,9 +21,10 @@ service EventService {
2121 // for merge requests, merge_request_opened, merge_request_merged,
2222 // merge_request_closed, comment_added, comment_edited, comment_deleted and
2323 // comment_resolved (a thread resolved or reopened); for issues, issue_opened,
24- // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each
25- // one is delivered on the "repo:<name>" topic of its repository and on
26- // "home", subject to the visibility of the repository, except
24+ // issue_closed, issue_resolved, issue_reopened and issue_commented, and
25+ // issue_submitted. Each one is delivered on the "repo:<name>" topic of its
26+ // repository and on "home", subject to the visibility of the repository,
27+ // except
2728 // issue_submitted: it is delivered only on the "owner" topic, never on
2829 // "home" or "repo:<name>", and carries no content (see IssueSubmitted).
2930 //
@@ -153,6 +154,8 @@ message Event {
153154 ReleaseDeleted release_deleted = 29;
154155 // ReleaseUnpublished reports a release turned into a draft after tag deletion.
155156 ReleaseUnpublished release_unpublished = 30;
157+ // IssueResolved: an issue was resolved.
158+ IssueResolved issue_resolved = 31;
156159 }
157160 }
158161
@@ -290,12 +293,20 @@ message IssueOpened {
290293 Issue issue = 1;
291294 }
292295
293-// IssueClosed reports a closed issue.
296+// IssueClosed reports a closed issue. A merge that resolves an issue sends
297+// issue_resolved, not issue_closed.
294298 message IssueClosed {
295299 // Issue is the issue after closing, including its repository and number.
296300 Issue issue = 1;
297301 }
298302
303+// IssueResolved reports a resolved issue.
304+message IssueResolved {
305+ // Issue is the issue after resolving, including its repository, number and
306+ // closed_by_merge_request.
307+ Issue issue = 1;
308+}
309+
299310 // IssueReopened reports a reopened issue.
300311 message IssueReopened {
301312 // Issue is the issue after reopening, including its repository and number.
@@ -21,9 +21,10 @@ service EventService {
21 // for merge requests, merge_request_opened, merge_request_merged,21 // for merge requests, merge_request_opened, merge_request_merged,
22 // merge_request_closed, comment_added, comment_edited, comment_deleted and22 // merge_request_closed, comment_added, comment_edited, comment_deleted and
23 // comment_resolved (a thread resolved or reopened); for issues, issue_opened,23 // comment_resolved (a thread resolved or reopened); for issues, issue_opened,
24- // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each24+ // issue_closed, issue_resolved, issue_reopened and issue_commented, and
25- // one is delivered on the "repo:<name>" topic of its repository and on25+ // issue_submitted. Each one is delivered on the "repo:<name>" topic of its
26- // "home", subject to the visibility of the repository, except26+ // repository and on "home", subject to the visibility of the repository,
27+ // except
27 // issue_submitted: it is delivered only on the "owner" topic, never on28 // issue_submitted: it is delivered only on the "owner" topic, never on
28 // "home" or "repo:<name>", and carries no content (see IssueSubmitted).29 // "home" or "repo:<name>", and carries no content (see IssueSubmitted).
29 //30 //
@@ -153,6 +154,8 @@ message Event {
153 ReleaseDeleted release_deleted = 29;154 ReleaseDeleted release_deleted = 29;
154 // ReleaseUnpublished reports a release turned into a draft after tag deletion.155 // ReleaseUnpublished reports a release turned into a draft after tag deletion.
155 ReleaseUnpublished release_unpublished = 30;156 ReleaseUnpublished release_unpublished = 30;
157+ // IssueResolved: an issue was resolved.
158+ IssueResolved issue_resolved = 31;
156 }159 }
157 }160 }
158 161
@@ -290,12 +293,20 @@ message IssueOpened {
290 Issue issue = 1;293 Issue issue = 1;
291 }294 }
292 295
293-// IssueClosed reports a closed issue.296+// IssueClosed reports a closed issue. A merge that resolves an issue sends
297+// issue_resolved, not issue_closed.
294 message IssueClosed {298 message IssueClosed {
295 // Issue is the issue after closing, including its repository and number.299 // Issue is the issue after closing, including its repository and number.
296 Issue issue = 1;300 Issue issue = 1;
297 }301 }
298 302
303+// IssueResolved reports a resolved issue.
304+message IssueResolved {
305+ // Issue is the issue after resolving, including its repository, number and
306+ // closed_by_merge_request.
307+ Issue issue = 1;
308+}
309+
299 // IssueReopened reports a reopened issue.310 // IssueReopened reports a reopened issue.
300 message IssueReopened {311 message IssueReopened {
301 // Issue is the issue after reopening, including its repository and number.312 // Issue is the issue after reopening, including its repository and number.
M proto/ermite/issue.proto +46 -15
@@ -14,10 +14,14 @@ enum IssueState {
1414 ISSUE_STATE_UNSPECIFIED = 0;
1515 // The issue is open.
1616 ISSUE_STATE_OPEN = 1;
17- // The issue is closed.
17+ // The issue is closed without being resolved (won't fix, duplicate, ...).
1818 ISSUE_STATE_CLOSED = 2;
1919 // Reserved for later use: awaiting moderation, owner-only.
2020 ISSUE_STATE_PENDING = 3;
21+ // The issue was fixed: by the merge of a merge request with a closing
22+ // reference, or by hand (ResolveIssue). CLOSED means closed without being
23+ // resolved.
24+ ISSUE_STATE_RESOLVED = 4;
2125 }
2226
2327 // Issue is a discussion in a repository.
@@ -45,9 +49,10 @@ message Issue {
4549 google.protobuf.Timestamp updated_at = 8;
4650 // CommentCount is the number of comments on the issue.
4751 int32 comment_count = 9;
48- // ClosedByMergeRequest is the number of the merge request whose merge closed
49- // the issue (a closing reference such as "Fixes #N"); 0 when the issue was
50- // closed by hand or is open. Reset when the issue is reopened.
52+ // ClosedByMergeRequest is the number of the merge request whose merge
53+ // resolved the issue (a closing reference such as "Fixes #N"); 0 when the
54+ // issue was resolved by hand, is closed, or is open. Reset when the issue is
55+ // reopened.
5156 int64 closed_by_merge_request = 10;
5257 }
5358
@@ -86,29 +91,35 @@ message IssueComment {
8691 //
8792 // Reading (ListIssues, GetIssue) needs the same access as reading the
8893 // repository: nothing for a public one, the repo:read scope for a private one.
89-// Writing (CreateIssue, AddIssueComment, CloseIssue, ReopenIssue) needs the
94+// Writing (CreateIssue, AddIssueComment, CloseIssue, ResolveIssue,
95+// ReopenIssue) needs the
9096 // owner or a token with the issue:write scope on the repository; branch
9197 // prefixes do not restrict it. A caller without credentials gets
9298 // unauthenticated, one with an insufficient scope gets permission_denied, and
9399 // one that cannot read the repository gets not_found.
94100 //
95101 // A closing reference ("Fixes #N", "Closes #N", "Resolves #N") in the title,
96-// description or commit messages of a merge request closes the issue when the
97-// request is merged, and only then; the issue.closed event and Issue carry
98-// closed_by_merge_request. Servers that report these links (GetIssueResponse.
99-// references, Issue.closed_by_merge_request) list "issues.links" in
100-// GetVersionResponse.features; older servers leave them empty.
102+// description or commit messages of a merge request resolves the issue when the
103+// request is merged, and only then: the issue gets the state RESOLVED, an
104+// issue.resolved event is sent, and Issue carries closed_by_merge_request.
105+// Servers that report these links (GetIssueResponse.references,
106+// Issue.closed_by_merge_request) list "issues.links" in
107+// GetVersionResponse.features; older servers leave them empty. Servers that
108+// also keep the history of issues (GetIssueResponse.events), implement
109+// ResolveIssue and the RESOLVED state list "issues.resolve".
101110 //
102111 // Text fields are normalized to NFC and stripped of control and Unicode
103112 // bidirectional characters (line breaks and tabs stay in bodies and comments).
104113 // The title is one line of 1 to 120 code points; body and comment text are at
105114 // most 10,000 code points and a comment must not be blank. A text that breaks
106115 // a rule is rejected with invalid_argument. A comment on an issue that already
107-// holds 1,000 comments gives resource_exhausted. Closing an issue that is not
108-// open, or reopening one that is not closed, gives failed_precondition.
116+// holds 1,000 comments gives resource_exhausted. Closing or resolving an issue
117+// that is not open, or reopening one that is neither closed nor resolved,
118+// gives failed_precondition.
109119 //
110-// The ordinary RPCs only return issues in state OPEN or CLOSED, and
111-// ListIssues with state ISSUE_STATE_PENDING is invalid_argument. Submissions
120+// The ordinary RPCs return issues in state OPEN, CLOSED or RESOLVED, and
121+// ListIssues accepts these three states; ISSUE_STATE_PENDING is
122+// invalid_argument. Submissions
112123 // from the public form wait as PendingIssue records, reachable only through
113124 // the three moderation RPCs (ListPendingIssues, ApproveIssue, RejectIssue).
114125 // These need owner rights (root, an owner session, or a token holding every
@@ -126,7 +137,10 @@ service IssueService {
126137 rpc AddIssueComment(AddIssueCommentRequest) returns (AddIssueCommentResponse);
127138 // CloseIssue closes an issue. Needs the issue:write scope.
128139 rpc CloseIssue(CloseIssueRequest) returns (CloseIssueResponse);
129- // ReopenIssue reopens an issue. Needs the issue:write scope.
140+ // ResolveIssue marks an open issue as resolved. Needs the issue:write scope.
141+ rpc ResolveIssue(ResolveIssueRequest) returns (ResolveIssueResponse);
142+ // ReopenIssue reopens a closed or resolved issue. Needs the issue:write
143+ // scope.
130144 rpc ReopenIssue(ReopenIssueRequest) returns (ReopenIssueResponse);
131145 // ListPendingIssues lists issues awaiting moderation, oldest first. Owner
132146 // rights only; anyone else gets NOT_FOUND.
@@ -196,6 +210,9 @@ message GetIssueResponse {
196210 // References are the merge requests naming the issue, ascending by number,
197211 // at most 100.
198212 repeated IssueReference references = 3;
213+ // Events are the history of the issue, oldest first, at most 500 (a server
214+ // limit). Clients interleave them with the comments by created_at.
215+ repeated IssueEvent events = 4;
199216 }
200217
201218 // AddIssueCommentRequest describes the comment to add.
@@ -228,6 +245,20 @@ message CloseIssueResponse {
228245 Issue issue = 1;
229246 }
230247
248+// ResolveIssueRequest names the issue to resolve.
249+message ResolveIssueRequest {
250+ // Repo is the repository name.
251+ string repo = 1;
252+ // Number is the issue number.
253+ int64 number = 2;
254+}
255+
256+// ResolveIssueResponse holds the issue after resolving.
257+message ResolveIssueResponse {
258+ // Issue is the resolved issue.
259+ Issue issue = 1;
260+}
261+
231262 // ReopenIssueRequest names the issue to reopen.
232263 message ReopenIssueRequest {
233264 // Repo is the repository name.
@@ -14,10 +14,14 @@ enum IssueState {
14 ISSUE_STATE_UNSPECIFIED = 0;14 ISSUE_STATE_UNSPECIFIED = 0;
15 // The issue is open.15 // The issue is open.
16 ISSUE_STATE_OPEN = 1;16 ISSUE_STATE_OPEN = 1;
17- // The issue is closed.17+ // The issue is closed without being resolved (won't fix, duplicate, ...).
18 ISSUE_STATE_CLOSED = 2;18 ISSUE_STATE_CLOSED = 2;
19 // Reserved for later use: awaiting moderation, owner-only.19 // Reserved for later use: awaiting moderation, owner-only.
20 ISSUE_STATE_PENDING = 3;20 ISSUE_STATE_PENDING = 3;
21+ // The issue was fixed: by the merge of a merge request with a closing
22+ // reference, or by hand (ResolveIssue). CLOSED means closed without being
23+ // resolved.
24+ ISSUE_STATE_RESOLVED = 4;
21 }25 }
22 26
23 // Issue is a discussion in a repository.27 // Issue is a discussion in a repository.
@@ -45,9 +49,10 @@ message Issue {
45 google.protobuf.Timestamp updated_at = 8;49 google.protobuf.Timestamp updated_at = 8;
46 // CommentCount is the number of comments on the issue.50 // CommentCount is the number of comments on the issue.
47 int32 comment_count = 9;51 int32 comment_count = 9;
48- // ClosedByMergeRequest is the number of the merge request whose merge closed52+ // ClosedByMergeRequest is the number of the merge request whose merge
49- // the issue (a closing reference such as "Fixes #N"); 0 when the issue was53+ // resolved the issue (a closing reference such as "Fixes #N"); 0 when the
50- // closed by hand or is open. Reset when the issue is reopened.54+ // issue was resolved by hand, is closed, or is open. Reset when the issue is
55+ // reopened.
51 int64 closed_by_merge_request = 10;56 int64 closed_by_merge_request = 10;
52 }57 }
53 58
@@ -86,29 +91,35 @@ message IssueComment {
86 //91 //
87 // Reading (ListIssues, GetIssue) needs the same access as reading the92 // Reading (ListIssues, GetIssue) needs the same access as reading the
88 // repository: nothing for a public one, the repo:read scope for a private one.93 // repository: nothing for a public one, the repo:read scope for a private one.
89-// Writing (CreateIssue, AddIssueComment, CloseIssue, ReopenIssue) needs the94+// Writing (CreateIssue, AddIssueComment, CloseIssue, ResolveIssue,
95+// ReopenIssue) needs the
90 // owner or a token with the issue:write scope on the repository; branch96 // owner or a token with the issue:write scope on the repository; branch
91 // prefixes do not restrict it. A caller without credentials gets97 // prefixes do not restrict it. A caller without credentials gets
92 // unauthenticated, one with an insufficient scope gets permission_denied, and98 // unauthenticated, one with an insufficient scope gets permission_denied, and
93 // one that cannot read the repository gets not_found.99 // one that cannot read the repository gets not_found.
94 //100 //
95 // A closing reference ("Fixes #N", "Closes #N", "Resolves #N") in the title,101 // A closing reference ("Fixes #N", "Closes #N", "Resolves #N") in the title,
96-// description or commit messages of a merge request closes the issue when the102+// description or commit messages of a merge request resolves the issue when the
97-// request is merged, and only then; the issue.closed event and Issue carry103+// request is merged, and only then: the issue gets the state RESOLVED, an
98-// closed_by_merge_request. Servers that report these links (GetIssueResponse.104+// issue.resolved event is sent, and Issue carries closed_by_merge_request.
99-// references, Issue.closed_by_merge_request) list "issues.links" in105+// Servers that report these links (GetIssueResponse.references,
100-// GetVersionResponse.features; older servers leave them empty.106+// Issue.closed_by_merge_request) list "issues.links" in
107+// GetVersionResponse.features; older servers leave them empty. Servers that
108+// also keep the history of issues (GetIssueResponse.events), implement
109+// ResolveIssue and the RESOLVED state list "issues.resolve".
101 //110 //
102 // Text fields are normalized to NFC and stripped of control and Unicode111 // Text fields are normalized to NFC and stripped of control and Unicode
103 // bidirectional characters (line breaks and tabs stay in bodies and comments).112 // bidirectional characters (line breaks and tabs stay in bodies and comments).
104 // The title is one line of 1 to 120 code points; body and comment text are at113 // The title is one line of 1 to 120 code points; body and comment text are at
105 // most 10,000 code points and a comment must not be blank. A text that breaks114 // most 10,000 code points and a comment must not be blank. A text that breaks
106 // a rule is rejected with invalid_argument. A comment on an issue that already115 // a rule is rejected with invalid_argument. A comment on an issue that already
107-// holds 1,000 comments gives resource_exhausted. Closing an issue that is not116+// holds 1,000 comments gives resource_exhausted. Closing or resolving an issue
108-// open, or reopening one that is not closed, gives failed_precondition.117+// that is not open, or reopening one that is neither closed nor resolved,
118+// gives failed_precondition.
109 //119 //
110-// The ordinary RPCs only return issues in state OPEN or CLOSED, and120+// The ordinary RPCs return issues in state OPEN, CLOSED or RESOLVED, and
111-// ListIssues with state ISSUE_STATE_PENDING is invalid_argument. Submissions121+// ListIssues accepts these three states; ISSUE_STATE_PENDING is
122+// invalid_argument. Submissions
112 // from the public form wait as PendingIssue records, reachable only through123 // from the public form wait as PendingIssue records, reachable only through
113 // the three moderation RPCs (ListPendingIssues, ApproveIssue, RejectIssue).124 // the three moderation RPCs (ListPendingIssues, ApproveIssue, RejectIssue).
114 // These need owner rights (root, an owner session, or a token holding every125 // These need owner rights (root, an owner session, or a token holding every
@@ -126,7 +137,10 @@ service IssueService {
126 rpc AddIssueComment(AddIssueCommentRequest) returns (AddIssueCommentResponse);137 rpc AddIssueComment(AddIssueCommentRequest) returns (AddIssueCommentResponse);
127 // CloseIssue closes an issue. Needs the issue:write scope.138 // CloseIssue closes an issue. Needs the issue:write scope.
128 rpc CloseIssue(CloseIssueRequest) returns (CloseIssueResponse);139 rpc CloseIssue(CloseIssueRequest) returns (CloseIssueResponse);
129- // ReopenIssue reopens an issue. Needs the issue:write scope.140+ // ResolveIssue marks an open issue as resolved. Needs the issue:write scope.
141+ rpc ResolveIssue(ResolveIssueRequest) returns (ResolveIssueResponse);
142+ // ReopenIssue reopens a closed or resolved issue. Needs the issue:write
143+ // scope.
130 rpc ReopenIssue(ReopenIssueRequest) returns (ReopenIssueResponse);144 rpc ReopenIssue(ReopenIssueRequest) returns (ReopenIssueResponse);
131 // ListPendingIssues lists issues awaiting moderation, oldest first. Owner145 // ListPendingIssues lists issues awaiting moderation, oldest first. Owner
132 // rights only; anyone else gets NOT_FOUND.146 // rights only; anyone else gets NOT_FOUND.
@@ -196,6 +210,9 @@ message GetIssueResponse {
196 // References are the merge requests naming the issue, ascending by number,210 // References are the merge requests naming the issue, ascending by number,
197 // at most 100.211 // at most 100.
198 repeated IssueReference references = 3;212 repeated IssueReference references = 3;
213+ // Events are the history of the issue, oldest first, at most 500 (a server
214+ // limit). Clients interleave them with the comments by created_at.
215+ repeated IssueEvent events = 4;
199 }216 }
200 217
201 // AddIssueCommentRequest describes the comment to add.218 // AddIssueCommentRequest describes the comment to add.
@@ -228,6 +245,20 @@ message CloseIssueResponse {
228 Issue issue = 1;245 Issue issue = 1;
229 }246 }
230 247
248+// ResolveIssueRequest names the issue to resolve.
249+message ResolveIssueRequest {
250+ // Repo is the repository name.
251+ string repo = 1;
252+ // Number is the issue number.
253+ int64 number = 2;
254+}
255+
256+// ResolveIssueResponse holds the issue after resolving.
257+message ResolveIssueResponse {
258+ // Issue is the resolved issue.
259+ Issue issue = 1;
260+}
261+
231 // ReopenIssueRequest names the issue to reopen.262 // ReopenIssueRequest names the issue to reopen.
232 message ReopenIssueRequest {263 message ReopenIssueRequest {
233 // Repo is the repository name.264 // Repo is the repository name.
M proto/ermite/merge_request.proto +78 -0
@@ -402,6 +402,76 @@ message ListMergeRequestsResponse {
402402 string next_page_token = 2;
403403 }
404404
405+// MergeRequestIssueState is where an issue named by a merge request is in its
406+// life. Values share their numbers with IssueState (3, awaiting moderation,
407+// is never shown here). It exists because issue.proto imports this file and
408+// cannot be imported back.
409+enum MergeRequestIssueState {
410+ // Not set. Never returned by the server.
411+ MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED = 0;
412+ // The issue is open.
413+ MERGE_REQUEST_ISSUE_STATE_OPEN = 1;
414+ // The issue is closed without being resolved.
415+ MERGE_REQUEST_ISSUE_STATE_CLOSED = 2;
416+ // The issue was resolved, by a merge or by hand.
417+ MERGE_REQUEST_ISSUE_STATE_RESOLVED = 4;
418+}
419+
420+// MergeRequestIssue is an issue of the same repository that a merge request
421+// names ("#N").
422+message MergeRequestIssue {
423+ // Number is the number of the issue.
424+ int64 number = 1;
425+ // Title is the title of the issue.
426+ string title = 2;
427+ // State is where the issue is in its life.
428+ MergeRequestIssueState state = 3;
429+ // Closes says that a closing reference names the issue: merging the request
430+ // resolves it.
431+ bool closes = 4;
432+}
433+
434+// IssueEventKind is what happened in an IssueEvent.
435+enum IssueEventKind {
436+ // Not set. Never returned by the server.
437+ ISSUE_EVENT_KIND_UNSPECIFIED = 0;
438+ // A merge request started naming the issue; closes says whether with a
439+ // closing reference.
440+ ISSUE_EVENT_KIND_REFERENCED = 1;
441+ // The issue was closed without being resolved.
442+ ISSUE_EVENT_KIND_CLOSED = 2;
443+ // The issue was reopened.
444+ ISSUE_EVENT_KIND_REOPENED = 3;
445+ // The issue was resolved; merge_request is set when a merge resolved it.
446+ ISSUE_EVENT_KIND_RESOLVED = 4;
447+}
448+
449+// IssueEvent is one entry in the history of an issue. Events are append-only:
450+// a reference that later disappears does not remove its event.
451+message IssueEvent {
452+ // Id identifies the event within its issue. Opaque. Events of different
453+ // issues can share an id: key them by (issue, id).
454+ string id = 1;
455+ // Kind is what happened.
456+ IssueEventKind kind = 2;
457+ // Issue is the number of the issue.
458+ int64 issue = 3;
459+ // MergeRequest is the number of the merge request involved; 0 if none.
460+ int64 merge_request = 4;
461+ // MergeRequestTitle is the title of that merge request at read time; empty
462+ // if none.
463+ string merge_request_title = 5;
464+ // Closes says that the reference was a closing one. Only set for
465+ // ISSUE_EVENT_KIND_REFERENCED.
466+ bool closes = 6;
467+ // Actor names who caused the event, like Issue.author: the label of the
468+ // token or session. For events triggered by a merge, the label of who
469+ // merged.
470+ string actor = 7;
471+ // CreatedAt is when the event happened.
472+ google.protobuf.Timestamp created_at = 8;
473+}
474+
405475 // GetMergeRequestRequest selects a merge request.
406476 message GetMergeRequestRequest {
407477 // Repo is the repository name.
@@ -452,6 +522,14 @@ message GetMergeRequestResponse {
452522 // Verdicts are the current verdicts, one per author who gave one, ordered
453523 // by the comment that carries them, oldest first.
454524 repeated AuthorVerdict verdicts = 10;
525+ // Issues are the issues of the same repository that the merge request names,
526+ // ascending by number, at most 100. Empty when issues are off.
527+ repeated MergeRequestIssue issues = 11;
528+ // IssueEvents are the history entries that involve this merge request: the
529+ // REFERENCED and RESOLVED events of the issues it names or once named,
530+ // oldest first, at most 500. An event can name an issue that is no longer
531+ // in issues. Empty when issues are off.
532+ repeated IssueEvent issue_events = 12;
455533 }
456534
457535 // AddCommentRequest describes the comment to add.
@@ -402,6 +402,76 @@ message ListMergeRequestsResponse {
402 string next_page_token = 2;402 string next_page_token = 2;
403 }403 }
404 404
405+// MergeRequestIssueState is where an issue named by a merge request is in its
406+// life. Values share their numbers with IssueState (3, awaiting moderation,
407+// is never shown here). It exists because issue.proto imports this file and
408+// cannot be imported back.
409+enum MergeRequestIssueState {
410+ // Not set. Never returned by the server.
411+ MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED = 0;
412+ // The issue is open.
413+ MERGE_REQUEST_ISSUE_STATE_OPEN = 1;
414+ // The issue is closed without being resolved.
415+ MERGE_REQUEST_ISSUE_STATE_CLOSED = 2;
416+ // The issue was resolved, by a merge or by hand.
417+ MERGE_REQUEST_ISSUE_STATE_RESOLVED = 4;
418+}
419+
420+// MergeRequestIssue is an issue of the same repository that a merge request
421+// names ("#N").
422+message MergeRequestIssue {
423+ // Number is the number of the issue.
424+ int64 number = 1;
425+ // Title is the title of the issue.
426+ string title = 2;
427+ // State is where the issue is in its life.
428+ MergeRequestIssueState state = 3;
429+ // Closes says that a closing reference names the issue: merging the request
430+ // resolves it.
431+ bool closes = 4;
432+}
433+
434+// IssueEventKind is what happened in an IssueEvent.
435+enum IssueEventKind {
436+ // Not set. Never returned by the server.
437+ ISSUE_EVENT_KIND_UNSPECIFIED = 0;
438+ // A merge request started naming the issue; closes says whether with a
439+ // closing reference.
440+ ISSUE_EVENT_KIND_REFERENCED = 1;
441+ // The issue was closed without being resolved.
442+ ISSUE_EVENT_KIND_CLOSED = 2;
443+ // The issue was reopened.
444+ ISSUE_EVENT_KIND_REOPENED = 3;
445+ // The issue was resolved; merge_request is set when a merge resolved it.
446+ ISSUE_EVENT_KIND_RESOLVED = 4;
447+}
448+
449+// IssueEvent is one entry in the history of an issue. Events are append-only:
450+// a reference that later disappears does not remove its event.
451+message IssueEvent {
452+ // Id identifies the event within its issue. Opaque. Events of different
453+ // issues can share an id: key them by (issue, id).
454+ string id = 1;
455+ // Kind is what happened.
456+ IssueEventKind kind = 2;
457+ // Issue is the number of the issue.
458+ int64 issue = 3;
459+ // MergeRequest is the number of the merge request involved; 0 if none.
460+ int64 merge_request = 4;
461+ // MergeRequestTitle is the title of that merge request at read time; empty
462+ // if none.
463+ string merge_request_title = 5;
464+ // Closes says that the reference was a closing one. Only set for
465+ // ISSUE_EVENT_KIND_REFERENCED.
466+ bool closes = 6;
467+ // Actor names who caused the event, like Issue.author: the label of the
468+ // token or session. For events triggered by a merge, the label of who
469+ // merged.
470+ string actor = 7;
471+ // CreatedAt is when the event happened.
472+ google.protobuf.Timestamp created_at = 8;
473+}
474+
405 // GetMergeRequestRequest selects a merge request.475 // GetMergeRequestRequest selects a merge request.
406 message GetMergeRequestRequest {476 message GetMergeRequestRequest {
407 // Repo is the repository name.477 // Repo is the repository name.
@@ -452,6 +522,14 @@ message GetMergeRequestResponse {
452 // Verdicts are the current verdicts, one per author who gave one, ordered522 // Verdicts are the current verdicts, one per author who gave one, ordered
453 // by the comment that carries them, oldest first.523 // by the comment that carries them, oldest first.
454 repeated AuthorVerdict verdicts = 10;524 repeated AuthorVerdict verdicts = 10;
525+ // Issues are the issues of the same repository that the merge request names,
526+ // ascending by number, at most 100. Empty when issues are off.
527+ repeated MergeRequestIssue issues = 11;
528+ // IssueEvents are the history entries that involve this merge request: the
529+ // REFERENCED and RESOLVED events of the issues it names or once named,
530+ // oldest first, at most 500. An event can name an issue that is no longer
531+ // in issues. Empty when issues are off.
532+ repeated IssueEvent issue_events = 12;
455 }533 }
456 534
457 // AddCommentRequest describes the comment to add.535 // AddCommentRequest describes the comment to add.

Comments0 open / 0

no comments yet.

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