1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
syntax = "proto3";
package gitaly;
import "google/protobuf/timestamp.proto";
import "lint.proto";
import "shared.proto";
option go_package = "gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb";
// ConflictsService is a service which provides RPCs to interact with conflicts
// resulting from a merge.
service ConflictsService {
// ListConflictFiles returns all conflicting files which result from a merge
// of two specified commit objects.
rpc ListConflictFiles(ListConflictFilesRequest) returns (stream ListConflictFilesResponse) {
option (op_type) = {
op: ACCESSOR
};
}
// ResolveConflicts tries to resolve a conflicting merge with a set of
// user-provided merge resolutions. If resolving the conflict succeeds, the
// result will be a new merge commit.
rpc ResolveConflicts(stream ResolveConflictsRequest) returns (ResolveConflictsResponse) {
option (op_type) = {
op: MUTATOR
};
}
}
// This comment is left unintentionally blank.
message ListConflictFilesRequest {
// This comment is left unintentionally blank.
Repository repository = 1 [(target_repository)=true];
// This comment is left unintentionally blank.
string our_commit_oid = 2;
// This comment is left unintentionally blank.
string their_commit_oid = 3;
// AllowTreeConflicts will not cause the request to fail in case there are
// tree conflicts. If set to true, then responses may contain conflict files
// where some of the paths are unset.
bool allow_tree_conflicts = 4;
}
// This comment is left unintentionally blank.
message ConflictFileHeader {
reserved 1;
// This comment is left unintentionally blank.
string commit_oid = 2;
// This comment is left unintentionally blank.
bytes their_path = 3;
// This comment is left unintentionally blank.
bytes our_path = 4;
// This comment is left unintentionally blank.
int32 our_mode = 5;
// This comment is left unintentionally blank.
bytes ancestor_path = 6;
}
// This comment is left unintentionally blank.
message ConflictFile {
oneof conflict_file_payload {
// This comment is left unintentionally blank.
ConflictFileHeader header = 1;
// This comment is left unintentionally blank.
bytes content = 2;
}
}
// This comment is left unintentionally blank.
message ListConflictFilesResponse {
// This comment is left unintentionally blank.
repeated ConflictFile files = 1;
}
// ResolveConflictsRequestHeader is the first message that must be sent for
// each ResolveConflicts call.
message ResolveConflictsRequestHeader {
// Repository is the repository in which conflicts shall be resolved and
// where SourceBranch shall be updated with the resolved conflict.
Repository repository = 1 [(gitaly.target_repository)=true];
// OurCommitOid is the OID of the commit representing the local commit.
string our_commit_oid = 2;
// TargetRepository is the repository from which TheirCommitOid shall be
// retrieved.
Repository target_repository = 3;
// TheirCommitOid is the OID of the commit representing the remote commit
// which is to be merged into the local commit.
string their_commit_oid = 4;
// SourceBranch is the branch on which the new commit shall be created.
bytes source_branch = 5;
// TargetBranch identifies the branch which will be fetched from
// TargetRepository in case TheirCommitOid does not exist in Repository.
bytes target_branch = 6;
// CommitMessage is the message of the newly created merge commit.
bytes commit_message = 7;
// User is the user used as author and committer of the newly created merge
// commit.
User user = 8;
// timestamp is the optional timestamp to use for the commit as committer
// date. If it's not set, the current time will be used.
google.protobuf.Timestamp timestamp = 9;
}
// ResolveConflictsRequest is a request for the ResolveConflicts RPC.
message ResolveConflictsRequest {
// RequestPayload is the payload part of the request. The first message sent
// must always be a ResolveConflictsRequestHeader, whereas all remaining
// requests must be FilesJson requests.
oneof resolve_conflicts_request_payload {
// Header is the initial message specifying parameters of the RPC call.
ResolveConflictsRequestHeader header = 1;
// FilesJson is a JSON-encoded list of conflicts resolutions.
bytes files_json = 2;
}
}
// ResolveConflictsResponse is a response of the ResolveConflicts RPC. Conflict
// resolution may have failed even if the RPC has returned OK. The user must
// check ResolutionError to verify whether the merge commit was correctly
// computed or not.
message ResolveConflictsResponse {
// ResolutionError contains a description of why conflict resolution has
// failed.
string resolution_error = 1;
}
|