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:
zhenyi
2026-06-08 15:37:08 +08:00
parent 8f472a0443
commit 66afd932ed
43 changed files with 3070 additions and 75 deletions
-4
View File
@@ -68,7 +68,6 @@ impl ClusterManager {
///
/// Returns `Err` if etcd is unreachable (caller should fall back to standalone).
pub async fn start(config: ClusterConfig) -> GitResult<Self> {
// ── Step 1: Start NodeServer ──
let node_server = spawn_node_server(&config).await?;
tracing::info!(
port = config.cluster_port,
@@ -76,7 +75,6 @@ impl ClusterManager {
"NodeServer started"
);
// ── Step 2: Connect to etcd and register ──
let cluster_addr = format!("{}:{}", config.cluster_hostname, config.cluster_port);
let peer_info = PeerInfo {
storage_name: config.storage_name.clone(),
@@ -96,7 +94,6 @@ impl ClusterManager {
.map_err(|e| GitError::Internal(format!("etcd registration failed: {e}")))?,
);
// ── Step 3: Discover existing peers and connect ──
let peers = registry
.discover_peers()
.await
@@ -106,7 +103,6 @@ impl ClusterManager {
connect_to_peer(&node_server, peer, &config.storage_name).await;
}
// ── Step 4: Start background tasks ──
let keepalive_handle = registry.start_keepalive();
let ns_for_watch = node_server.clone();