feat(api): extend commit and diff services with new functionality
- Add FindCommit, ListCommitsByOid, CommitIsAncestor RPCs to CommitService - Add CheckObjectsExist, CommitsByMessage, GetCommitStats RPCs to CommitService - Add LastCommitForPath, CountCommits, CountDivergingCommits RPCs to CommitService - Add RawDiff, RawPatch, FindChangedPaths RPCs to DiffService - Add FindMergeBase, WriteRef, SearchFilesByContent RPCs to RepositoryService - Add SearchFilesByName, ObjectsSize, RepositorySize RPCs to RepositoryService - Add FindLicense, OptimizeRepository, GetRawChanges RPCs to RepositoryService - Add FetchRemote, CreateRepositoryFromURL RPCs to RepositoryService - Implement server handlers for all new RPC methods - Add new modules for commit counting, finding, and querying features - Add new modules for diff changed paths and raw operations - Add new modules for refs and remote operations - Remove unnecessary comments from various source files - Update proto definitions with new message types and service methods
This commit is contained in:
+180
-3
@@ -139,7 +139,6 @@ message RepositoryMaintenanceResponse {
|
||||
string stderr = 3;
|
||||
}
|
||||
|
||||
// ── Hooks Management ──────────────────────────────────────────────────
|
||||
|
||||
message ListHooksRequest {
|
||||
RepositoryHeader repository = 1;
|
||||
@@ -166,7 +165,6 @@ message RemoveCustomHookRequest {
|
||||
string hook_name = 2;
|
||||
}
|
||||
|
||||
// ── Snapshot ──────────────────────────────────────────────────────────
|
||||
|
||||
enum SnapshotStorage {
|
||||
SNAPSHOT_STORAGE_LOCAL = 0;
|
||||
@@ -215,7 +213,6 @@ message DeleteSnapshotRequest {
|
||||
SnapshotStorage storage = 2;
|
||||
}
|
||||
|
||||
// ── Repository Move ──────────────────────────────────────────────────
|
||||
|
||||
enum MoveRepositoryState {
|
||||
MOVE_STATE_UNKNOWN = 0;
|
||||
@@ -246,6 +243,172 @@ message FetchRepositoryDataResponse {
|
||||
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);
|
||||
@@ -276,4 +439,18 @@ service RepositoryService {
|
||||
// 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