Conversation BlobService::GetBlob
Stages:
-
RPC Design: gitaly-proto!28 (merged) gitaly-proto!31 (merged) -
~"Client Implementation": https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/12104 https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/12313 https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/12712 gitlab-workhorse!182 (merged) gitlab-workhorse!174 (merged) -
~"Acceptance Testing": #363 (closed) #567 (closed)
Issues:
Blocked On:
- #538 (closed)
- https://gitlab.com/gitlab-org/gitlab-ce/issues/37431
-
https://gitlab.com/gitlab-org/gitlab-ce/issues/37599<- calls TreeEntry, not GetBlob - #756 (closed)
Feature Flags:
git_blob_load_all_data
gitaly_git_blob_raw
workhorse_raw_show
RPC Endpoints:
BlobService::GetBlob
Known Client Routes:
- Known client endpoints
Feature flag for Gitlab::Git::Blob.raw
: gitaly_git_blob_raw
This can be implemented using the TreeEntry RPC we already have. See Gitlab::Git::Blob.find_by_gitaly for how to handle binary detection.
We need a new RPC that can get blobs by OID.
service BlobService {
// Use a stream to return a chunked arbitrarily large binary response
rpc GetBlob(GetBlobRequest) returns (stream GetBlobResonse) {}
}
message GetBlobRequest {
Repository repository = 1;
string oid = 2;
}
message GetBlobResponse {
int64 size = 1; // Blob size; present only in first response message
bytes data = 2; // Chunk of blob data
}
Edited by Andrew Newdigate