chore(infra): add gRPC layer, update protobufs, remove immediate module
- Add gRPC service modules: auth, channel, channel settings, member, permission - Update protobuf definitions and generated code - Remove immediate/ real-time module (superseded by IM service) - Update etcd discovery and registration - Update cache, error, config, and build infrastructure - Add ADR documentation - Update OpenAPI spec
This commit is contained in:
@@ -154,6 +154,102 @@ message CompareCommitsResponse {
|
||||
Oid merge_base = 4;
|
||||
}
|
||||
|
||||
|
||||
message FindCommitRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
ObjectSelector revision = 2;
|
||||
bool include_stats = 3;
|
||||
}
|
||||
|
||||
message ListCommitsByOidRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
repeated bytes oids = 2; // binary OID values
|
||||
bool include_stats = 3;
|
||||
}
|
||||
|
||||
message ListCommitsByOidResponse {
|
||||
repeated Commit commits = 1;
|
||||
}
|
||||
|
||||
message CommitIsAncestorRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string ancestor_oid = 2;
|
||||
string descendant_oid = 3;
|
||||
}
|
||||
|
||||
message CommitIsAncestorResponse {
|
||||
bool is_ancestor = 1;
|
||||
}
|
||||
|
||||
message CheckObjectsExistRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
repeated string revisions = 2; // hex OIDs or rev expressions
|
||||
}
|
||||
|
||||
message RevisionExistence {
|
||||
string revision = 1;
|
||||
bool exists = 2;
|
||||
}
|
||||
|
||||
message CheckObjectsExistResponse {
|
||||
repeated RevisionExistence revisions = 1;
|
||||
}
|
||||
|
||||
message CommitsByMessageRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string query = 2; // regex or literal to search in commit messages
|
||||
string revision = 3; // limit to this branch/ref (empty = all branches)
|
||||
uint32 limit = 4;
|
||||
uint32 offset = 5;
|
||||
bool case_insensitive = 6;
|
||||
}
|
||||
|
||||
message CommitsByMessageResponse {
|
||||
repeated Commit commits = 1;
|
||||
}
|
||||
|
||||
|
||||
message GetCommitStatsRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
ObjectSelector revision = 2;
|
||||
}
|
||||
|
||||
message LastCommitForPathRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string path = 2;
|
||||
string revision = 3; // limit history to this ref
|
||||
bool literal_pathspec = 4;
|
||||
}
|
||||
|
||||
message LastCommitForPathResponse {
|
||||
Commit commit = 1;
|
||||
string path = 2;
|
||||
}
|
||||
|
||||
|
||||
message CountCommitsRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string revision = 2;
|
||||
string path = 3;
|
||||
string since = 4; // ISO 8601 date
|
||||
string until = 5;
|
||||
}
|
||||
|
||||
message CountCommitsResponse {
|
||||
uint64 count = 1;
|
||||
}
|
||||
|
||||
message CountDivergingCommitsRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string left = 2;
|
||||
string right = 3;
|
||||
}
|
||||
|
||||
message CountDivergingCommitsResponse {
|
||||
uint64 left_count = 1;
|
||||
uint64 right_count = 2;
|
||||
}
|
||||
|
||||
service CommitService {
|
||||
rpc ListCommits(ListCommitsRequest) returns (ListCommitsResponse);
|
||||
rpc GetCommit(GetCommitRequest) returns (Commit);
|
||||
@@ -162,4 +258,15 @@ service CommitService {
|
||||
rpc RevertCommit(RevertCommitRequest) returns (CreateCommitResponse);
|
||||
rpc CherryPickCommit(CherryPickCommitRequest) returns (CreateCommitResponse);
|
||||
rpc CompareCommits(CompareCommitsRequest) returns (CompareCommitsResponse);
|
||||
|
||||
rpc FindCommit(FindCommitRequest) returns (Commit);
|
||||
rpc ListCommitsByOid(ListCommitsByOidRequest) returns (ListCommitsByOidResponse);
|
||||
rpc CommitIsAncestor(CommitIsAncestorRequest) returns (CommitIsAncestorResponse);
|
||||
rpc CheckObjectsExist(CheckObjectsExistRequest) returns (CheckObjectsExistResponse);
|
||||
rpc CommitsByMessage(CommitsByMessageRequest) returns (CommitsByMessageResponse);
|
||||
rpc GetCommitStats(GetCommitStatsRequest) returns (CommitStats);
|
||||
rpc LastCommitForPath(LastCommitForPathRequest) returns (LastCommitForPathResponse);
|
||||
|
||||
rpc CountCommits(CountCommitsRequest) returns (CountCommitsResponse);
|
||||
rpc CountDivergingCommits(CountDivergingCommitsRequest) returns (CountDivergingCommitsResponse);
|
||||
}
|
||||
|
||||
@@ -132,9 +132,67 @@ message GetDiffStatsRequest {
|
||||
DiffOptions options = 4;
|
||||
}
|
||||
|
||||
|
||||
message RawDiffRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string base = 2; // revision or OID
|
||||
string head = 3;
|
||||
DiffOptions options = 4;
|
||||
}
|
||||
|
||||
message RawDiffResponse {
|
||||
bytes data = 1;
|
||||
}
|
||||
|
||||
message RawPatchRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string base = 2;
|
||||
string head = 3;
|
||||
}
|
||||
|
||||
message RawPatchResponse {
|
||||
bytes data = 1;
|
||||
}
|
||||
|
||||
|
||||
message FindChangedPathsRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string base = 2;
|
||||
string head = 3;
|
||||
repeated string paths = 4; // filter to these paths
|
||||
}
|
||||
|
||||
message ChangedPath {
|
||||
enum Status {
|
||||
CHANGED_PATH_STATUS_UNSPECIFIED = 0;
|
||||
CHANGED_PATH_STATUS_ADDED = 1;
|
||||
CHANGED_PATH_STATUS_MODIFIED = 2;
|
||||
CHANGED_PATH_STATUS_DELETED = 3;
|
||||
CHANGED_PATH_STATUS_RENAMED = 4;
|
||||
CHANGED_PATH_STATUS_COPIED = 5;
|
||||
CHANGED_PATH_STATUS_TYPE_CHANGED = 6;
|
||||
}
|
||||
|
||||
Status status = 1;
|
||||
string old_path = 2;
|
||||
string new_path = 3;
|
||||
uint32 additions = 4;
|
||||
uint32 deletions = 5;
|
||||
bool binary = 6;
|
||||
}
|
||||
|
||||
message FindChangedPathsResponse {
|
||||
repeated ChangedPath paths = 1;
|
||||
}
|
||||
|
||||
service DiffService {
|
||||
rpc GetDiff(GetDiffRequest) returns (GetDiffResponse);
|
||||
rpc GetCommitDiff(GetCommitDiffRequest) returns (GetDiffResponse);
|
||||
rpc GetPatch(GetPatchRequest) returns (stream GetPatchResponse);
|
||||
rpc GetDiffStats(GetDiffStatsRequest) returns (DiffStats);
|
||||
|
||||
rpc RawDiff(RawDiffRequest) returns (stream RawDiffResponse);
|
||||
rpc RawPatch(RawPatchRequest) returns (stream RawPatchResponse);
|
||||
|
||||
rpc FindChangedPaths(FindChangedPathsRequest) returns (FindChangedPathsResponse);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package gitks;
|
||||
|
||||
import "repository.proto";
|
||||
|
||||
// HookService provides gRPC callback hooks for git operations.
|
||||
// External services can implement this interface to receive hook callbacks.
|
||||
service HookService {
|
||||
// Pre-receive hook callback: validate push before it happens.
|
||||
rpc PreReceiveHook(PreReceiveHookRequest) returns (PreReceiveHookResponse);
|
||||
|
||||
// Update hook callback: validate each ref update individually.
|
||||
rpc UpdateHook(UpdateHookRequest) returns (UpdateHookResponse);
|
||||
|
||||
// Post-receive hook callback: notify after push has completed.
|
||||
rpc PostReceiveHook(PostReceiveHookRequest) returns (PostReceiveHookResponse);
|
||||
}
|
||||
|
||||
message PreReceiveHookRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
repeated RefUpdate ref_updates = 2;
|
||||
string push_options = 3;
|
||||
}
|
||||
|
||||
message PreReceiveHookResponse {
|
||||
bool accept = 1;
|
||||
string rejection_message = 2;
|
||||
}
|
||||
|
||||
message UpdateHookRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string ref_name = 2;
|
||||
string old_oid = 3;
|
||||
string new_oid = 4;
|
||||
}
|
||||
|
||||
message UpdateHookResponse {
|
||||
bool accept = 1;
|
||||
string rejection_message = 2;
|
||||
}
|
||||
|
||||
message PostReceiveHookRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
repeated RefUpdate ref_updates = 2;
|
||||
}
|
||||
|
||||
message PostReceiveHookResponse {
|
||||
repeated HookAction actions = 1;
|
||||
}
|
||||
|
||||
message RefUpdate {
|
||||
string old_oid = 1;
|
||||
string new_oid = 2;
|
||||
string ref_name = 3;
|
||||
}
|
||||
|
||||
message HookAction {
|
||||
string action_type = 1; // "trigger_ci", "update_index", etc.
|
||||
string payload = 2;
|
||||
}
|
||||
@@ -10,6 +10,7 @@ message GitProtocolFeatures {
|
||||
repeated string capabilities = 2;
|
||||
repeated string server_options = 3;
|
||||
repeated string agent = 4;
|
||||
bool stateless = 5;
|
||||
}
|
||||
|
||||
message ReferenceAdvertisement {
|
||||
@@ -24,11 +25,13 @@ message AdvertiseRefsRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
GitProtocolFeatures protocol = 2;
|
||||
string service = 3;
|
||||
bool raw = 4;
|
||||
}
|
||||
|
||||
message AdvertiseRefsResponse {
|
||||
repeated ReferenceAdvertisement references = 1;
|
||||
repeated string capabilities = 2;
|
||||
bytes raw_data = 3;
|
||||
}
|
||||
|
||||
message UploadPackRequest {
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package gitks;
|
||||
|
||||
import "google/protobuf/empty.proto";
|
||||
import "oid.proto";
|
||||
import "repository.proto";
|
||||
|
||||
|
||||
message FindDefaultBranchNameRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
}
|
||||
|
||||
message FindDefaultBranchNameResponse {
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
message RefExistsRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string ref_name = 2;
|
||||
}
|
||||
|
||||
message RefExistsResponse {
|
||||
bool exists = 1;
|
||||
}
|
||||
|
||||
|
||||
message RefUpdateEntry {
|
||||
string ref_name = 1;
|
||||
string new_oid = 2;
|
||||
string old_oid = 3; // expected old OID (empty = no check)
|
||||
}
|
||||
|
||||
message UpdateReferencesRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
repeated RefUpdateEntry updates = 2;
|
||||
}
|
||||
|
||||
message UpdateReferencesResponse {
|
||||
repeated string failed_refs = 1;
|
||||
string error = 2;
|
||||
}
|
||||
|
||||
message DeleteRefsRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
repeated string ref_names = 2;
|
||||
}
|
||||
|
||||
message DeleteRefsResponse {
|
||||
repeated string failed_refs = 1;
|
||||
string error = 2;
|
||||
}
|
||||
|
||||
|
||||
message FindRefsByOIDRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string oid = 2;
|
||||
RefFilter filter = 3;
|
||||
}
|
||||
|
||||
message RefFilter {
|
||||
repeated string prefixes = 1; // e.g. ["refs/heads/", "refs/tags/"]
|
||||
uint32 limit = 2;
|
||||
}
|
||||
|
||||
message FoundRef {
|
||||
string ref_name = 1;
|
||||
string target_oid = 2;
|
||||
bool symbolic = 3;
|
||||
string symbolic_target = 4;
|
||||
}
|
||||
|
||||
message FindRefsByOIDResponse {
|
||||
repeated FoundRef refs = 1;
|
||||
}
|
||||
|
||||
|
||||
message ListRefsRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
repeated string prefixes = 2;
|
||||
string pattern = 3; // glob pattern, e.g. "refs/heads/*"
|
||||
repeated string containing_oids = 4;
|
||||
SortDirection sort_direction = 5;
|
||||
Pagination pagination = 6;
|
||||
}
|
||||
|
||||
message ListRefsResponse {
|
||||
repeated FoundRef refs = 1;
|
||||
PageInfo page_info = 2;
|
||||
}
|
||||
|
||||
service RefService {
|
||||
rpc FindDefaultBranchName(FindDefaultBranchNameRequest) returns (FindDefaultBranchNameResponse);
|
||||
rpc RefExists(RefExistsRequest) returns (RefExistsResponse);
|
||||
rpc UpdateReferences(UpdateReferencesRequest) returns (UpdateReferencesResponse);
|
||||
rpc DeleteRefs(DeleteRefsRequest) returns (DeleteRefsResponse);
|
||||
rpc FindRefsByOID(FindRefsByOIDRequest) returns (FindRefsByOIDResponse);
|
||||
rpc ListRefs(ListRefsRequest) returns (ListRefsResponse);
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package gitks;
|
||||
|
||||
import "oid.proto";
|
||||
import "repository.proto";
|
||||
|
||||
|
||||
message FindRemoteRepositoryRequest {
|
||||
string remote_url = 1;
|
||||
}
|
||||
|
||||
message RemoteHead {
|
||||
string ref_name = 1;
|
||||
string target_oid = 2;
|
||||
bool symbolic = 3;
|
||||
string symbolic_target = 4;
|
||||
}
|
||||
|
||||
message FindRemoteRepositoryResponse {
|
||||
repeated RemoteHead refs = 1;
|
||||
bool exists = 2;
|
||||
}
|
||||
|
||||
message FindRemoteRootRefRequest {
|
||||
string remote_url = 1;
|
||||
}
|
||||
|
||||
message FindRemoteRootRefResponse {
|
||||
string ref_name = 1;
|
||||
string target_oid = 2;
|
||||
}
|
||||
|
||||
|
||||
message UpdateRemoteMirrorRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string remote_url = 2;
|
||||
string remote_name = 3; // defaults to "origin"
|
||||
bool force = 4;
|
||||
bool prune = 5;
|
||||
repeated string refspecs = 6; // if empty, fetch all refs
|
||||
}
|
||||
|
||||
message UpdateRemoteMirrorResponse {
|
||||
bool ok = 1;
|
||||
string error = 2;
|
||||
}
|
||||
|
||||
service RemoteService {
|
||||
rpc FindRemoteRepository(FindRemoteRepositoryRequest) returns (FindRemoteRepositoryResponse);
|
||||
rpc FindRemoteRootRef(FindRemoteRootRefRequest) returns (FindRemoteRootRefResponse);
|
||||
rpc UpdateRemoteMirror(UpdateRemoteMirrorRequest) returns (UpdateRemoteMirrorResponse);
|
||||
}
|
||||
@@ -139,6 +139,276 @@ message RepositoryMaintenanceResponse {
|
||||
string stderr = 3;
|
||||
}
|
||||
|
||||
|
||||
message ListHooksRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
}
|
||||
|
||||
message HookInfo {
|
||||
string hook_type = 1;
|
||||
string level = 2; // "server" or "custom"
|
||||
string path = 3;
|
||||
}
|
||||
|
||||
message ListHooksResponse {
|
||||
repeated HookInfo hooks = 1;
|
||||
}
|
||||
|
||||
message SetCustomHookRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string hook_name = 2; // "pre-receive", "update", "post-receive"
|
||||
string content = 3; // Hook script content
|
||||
}
|
||||
|
||||
message RemoveCustomHookRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string hook_name = 2;
|
||||
}
|
||||
|
||||
|
||||
enum SnapshotStorage {
|
||||
SNAPSHOT_STORAGE_LOCAL = 0;
|
||||
SNAPSHOT_STORAGE_S3 = 1;
|
||||
SNAPSHOT_STORAGE_GCS = 2;
|
||||
}
|
||||
|
||||
message SnapshotInfo {
|
||||
string snapshot_id = 1;
|
||||
string relative_path = 2;
|
||||
uint64 size_bytes = 3;
|
||||
string created_at = 4; // ISO 8601
|
||||
string head_oid = 5;
|
||||
}
|
||||
|
||||
message CreateSnapshotRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
SnapshotStorage storage = 2;
|
||||
string storage_path = 3;
|
||||
}
|
||||
|
||||
message CreateSnapshotResponse {
|
||||
string snapshot_id = 1;
|
||||
uint64 size_bytes = 2;
|
||||
string head_oid = 3;
|
||||
}
|
||||
|
||||
message RestoreSnapshotRequest {
|
||||
RepositoryHeader target_repository = 1;
|
||||
string snapshot_id = 2;
|
||||
SnapshotStorage storage = 3;
|
||||
string storage_path = 4;
|
||||
}
|
||||
|
||||
message ListSnapshotsRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
uint32 limit = 2;
|
||||
}
|
||||
|
||||
message ListSnapshotsResponse {
|
||||
repeated SnapshotInfo snapshots = 1;
|
||||
}
|
||||
|
||||
message DeleteSnapshotRequest {
|
||||
string snapshot_id = 1;
|
||||
SnapshotStorage storage = 2;
|
||||
}
|
||||
|
||||
|
||||
enum MoveRepositoryState {
|
||||
MOVE_STATE_UNKNOWN = 0;
|
||||
MOVE_STATE_PREPARING = 1;
|
||||
MOVE_STATE_TRANSFERRING = 2;
|
||||
MOVE_STATE_VERIFYING = 3;
|
||||
MOVE_STATE_COMPLETED = 4;
|
||||
MOVE_STATE_FAILED = 5;
|
||||
MOVE_STATE_CANCELLED = 6;
|
||||
}
|
||||
|
||||
message MoveRepositoryRequest {
|
||||
RepositoryHeader source_repository = 1;
|
||||
RepositoryHeader target_repository = 2;
|
||||
}
|
||||
|
||||
message MoveRepositoryResponse {
|
||||
MoveRepositoryState state = 1;
|
||||
string error_message = 2;
|
||||
}
|
||||
|
||||
message FetchRepositoryDataRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
}
|
||||
|
||||
message FetchRepositoryDataResponse {
|
||||
bytes data = 1;
|
||||
bool done = 2;
|
||||
}
|
||||
|
||||
|
||||
message FindMergeBaseRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
repeated bytes revisions = 2; // hex OIDs to find merge-base for
|
||||
}
|
||||
|
||||
message FindMergeBaseResponse {
|
||||
string base_oid = 1;
|
||||
}
|
||||
|
||||
|
||||
message WriteRefRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string ref_name = 2;
|
||||
string new_oid = 3;
|
||||
string old_oid = 4; // expected old OID (empty = no check)
|
||||
bool force = 5;
|
||||
}
|
||||
|
||||
message WriteRefResponse {
|
||||
bool ok = 1;
|
||||
string error = 2;
|
||||
}
|
||||
|
||||
|
||||
message SearchFilesByContentRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string query = 2; // regex pattern
|
||||
string revision = 3; // tree-ish to search in (default HEAD)
|
||||
uint32 max_results = 4; // default 100
|
||||
bool case_sensitive = 5;
|
||||
}
|
||||
|
||||
message SearchFilesByContentResponse {
|
||||
repeated SearchResult results = 1;
|
||||
}
|
||||
|
||||
message SearchFilesByNameRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string query = 2; // regex pattern for file names
|
||||
string revision = 3;
|
||||
uint32 max_results = 4;
|
||||
bool recursive = 5;
|
||||
}
|
||||
|
||||
message SearchFilesByNameResponse {
|
||||
repeated SearchResult results = 1;
|
||||
}
|
||||
|
||||
message SearchResult {
|
||||
string path = 1;
|
||||
uint32 line = 2; // 0 for name-only search
|
||||
string matched_text = 3; // the surrounding line content
|
||||
}
|
||||
|
||||
|
||||
message ObjectsSizeRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
repeated string oids = 2;
|
||||
}
|
||||
|
||||
message ObjectsSizeResponse {
|
||||
repeated ObjectSize sizes = 1;
|
||||
}
|
||||
|
||||
message ObjectSize {
|
||||
string oid = 1;
|
||||
uint64 size = 2;
|
||||
bool found = 3;
|
||||
}
|
||||
|
||||
message RepositorySizeRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
}
|
||||
|
||||
message RepositorySizeResponse {
|
||||
uint64 size_bytes = 1;
|
||||
}
|
||||
|
||||
|
||||
message FindLicenseRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
}
|
||||
|
||||
message FindLicenseResponse {
|
||||
string license_spdx = 1; // SPDX identifier, e.g. "MIT"
|
||||
string license_name = 2; // human-readable name
|
||||
double confidence = 3; // 0.0 — 1.0
|
||||
string license_path = 4; // path to LICENSE file
|
||||
}
|
||||
|
||||
|
||||
enum OptimizeStrategy {
|
||||
OPTIMIZE_STRATEGY_UNSPECIFIED = 0;
|
||||
OPTIMIZE_STRATEGY_HEURISTIC = 1; // auto-decide based on repo state
|
||||
OPTIMIZE_STRATEGY_AGGRESSIVE = 2;
|
||||
OPTIMIZE_STRATEGY_INCREMENTAL = 3;
|
||||
}
|
||||
|
||||
message OptimizeRepositoryRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
OptimizeStrategy strategy = 2;
|
||||
}
|
||||
|
||||
message OptimizeRepositoryResponse {
|
||||
bool ok = 1;
|
||||
string stdout = 2;
|
||||
string stderr = 3;
|
||||
}
|
||||
|
||||
|
||||
message GetRawChangesRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string base = 2; // revision or OID
|
||||
string head = 3;
|
||||
}
|
||||
|
||||
message RawChange {
|
||||
enum Operation {
|
||||
RAW_CHANGE_OPERATION_UNSPECIFIED = 0;
|
||||
RAW_CHANGE_OPERATION_ADDED = 1;
|
||||
RAW_CHANGE_OPERATION_MODIFIED = 2;
|
||||
RAW_CHANGE_OPERATION_DELETED = 3;
|
||||
RAW_CHANGE_OPERATION_RENAMED = 4;
|
||||
RAW_CHANGE_OPERATION_COPIED = 5;
|
||||
}
|
||||
|
||||
Operation operation = 1;
|
||||
string old_path = 2;
|
||||
string new_path = 3;
|
||||
uint32 old_mode = 4;
|
||||
uint32 new_mode = 5;
|
||||
string old_oid = 6;
|
||||
string new_oid = 7;
|
||||
double similarity = 8;
|
||||
}
|
||||
|
||||
message GetRawChangesResponse {
|
||||
repeated RawChange changes = 1;
|
||||
}
|
||||
|
||||
|
||||
message FetchRemoteRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string remote_url = 2;
|
||||
string remote_name = 3; // defaults to "origin"
|
||||
repeated string refspecs = 4;
|
||||
bool force = 5;
|
||||
bool prune = 6;
|
||||
}
|
||||
|
||||
message FetchRemoteResponse {
|
||||
bool ok = 1;
|
||||
string error = 2;
|
||||
}
|
||||
|
||||
message CreateRepositoryFromURLRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
string remote_url = 2;
|
||||
bool mirror = 3;
|
||||
}
|
||||
|
||||
message CreateRepositoryFromURLResponse {
|
||||
Repository repository = 1;
|
||||
}
|
||||
|
||||
service RepositoryService {
|
||||
rpc GetRepository(GetRepositoryRequest) returns (Repository);
|
||||
rpc InitRepository(InitRepositoryRequest) returns (Repository);
|
||||
@@ -154,4 +424,33 @@ service RepositoryService {
|
||||
rpc GarbageCollect(GarbageCollectRequest) returns (RepositoryMaintenanceResponse);
|
||||
rpc Repack(RepackRequest) returns (RepositoryMaintenanceResponse);
|
||||
rpc WriteCommitGraph(WriteCommitGraphRequest) returns (RepositoryMaintenanceResponse);
|
||||
|
||||
// Hooks management
|
||||
rpc ListHooks(ListHooksRequest) returns (ListHooksResponse);
|
||||
rpc SetCustomHook(SetCustomHookRequest) returns (google.protobuf.Empty);
|
||||
rpc RemoveCustomHook(RemoveCustomHookRequest) returns (google.protobuf.Empty);
|
||||
|
||||
// Snapshot operations
|
||||
rpc CreateSnapshot(CreateSnapshotRequest) returns (CreateSnapshotResponse);
|
||||
rpc RestoreSnapshot(RestoreSnapshotRequest) returns (google.protobuf.Empty);
|
||||
rpc ListSnapshots(ListSnapshotsRequest) returns (ListSnapshotsResponse);
|
||||
rpc DeleteSnapshot(DeleteSnapshotRequest) returns (google.protobuf.Empty);
|
||||
|
||||
// Repository move
|
||||
rpc MoveRepository(MoveRepositoryRequest) returns (MoveRepositoryResponse);
|
||||
rpc FetchRepositoryData(FetchRepositoryDataRequest) returns (stream FetchRepositoryDataResponse);
|
||||
|
||||
rpc FindMergeBase(FindMergeBaseRequest) returns (FindMergeBaseResponse);
|
||||
rpc WriteRef(WriteRefRequest) returns (WriteRefResponse);
|
||||
rpc SearchFilesByContent(SearchFilesByContentRequest) returns (SearchFilesByContentResponse);
|
||||
rpc SearchFilesByName(SearchFilesByNameRequest) returns (SearchFilesByNameResponse);
|
||||
|
||||
rpc ObjectsSize(ObjectsSizeRequest) returns (ObjectsSizeResponse);
|
||||
rpc RepositorySize(RepositorySizeRequest) returns (RepositorySizeResponse);
|
||||
rpc FetchRemote(FetchRemoteRequest) returns (FetchRemoteResponse);
|
||||
rpc CreateRepositoryFromURL(CreateRepositoryFromURLRequest) returns (CreateRepositoryFromURLResponse);
|
||||
|
||||
rpc FindLicense(FindLicenseRequest) returns (FindLicenseResponse);
|
||||
rpc OptimizeRepository(OptimizeRepositoryRequest) returns (OptimizeRepositoryResponse);
|
||||
rpc GetRawChanges(GetRawChangesRequest) returns (GetRawChangesResponse);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user