syntax = "proto3"; package gitaly; import "lint.proto"; import "shared.proto"; option go_package = "gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"; // CleanupService provides RPCs to clean up a repository's contents. service CleanupService { // ApplyBfgObjectMapStream ... rpc ApplyBfgObjectMapStream(stream ApplyBfgObjectMapStreamRequest) returns (stream ApplyBfgObjectMapStreamResponse) { option (op_type) = { op: MUTATOR }; } // RewriteHistory redacts targeted strings and deletes requested blobs in a // repository and updates all references to point to the rewritten commit // history. This is useful for removing inadvertently pushed secrets from your // repository and purging large blobs. This is a dangerous operation. // // The following known error conditions may happen: // // - `InvalidArgument` in the following situations: // - The provided repository can't be validated. // - The repository field is set on any request other than the initial one. // - Any request, including the initial one, does not contain either blobs to // remove or redaction patterns to redact. // - A blob object ID is invalid. // - A redaction pattern contains a newline character. rpc RewriteHistory(stream RewriteHistoryRequest) returns (RewriteHistoryResponse) { option (op_type) = { op : MUTATOR }; } } // ApplyBfgObjectMapStreamRequest ... message ApplyBfgObjectMapStreamRequest { // repository ... // Only available on the first message Repository repository = 1 [(target_repository)=true]; // object_map is a raw object-map file as generated by BFG: https://rtyley.github.io/bfg-repo-cleaner // Each line in the file has two object SHAs, space-separated - the original // SHA of the object, and the SHA after BFG has rewritten the object. bytes object_map = 2; } // ApplyBfgObjectMapStreamResponse ... message ApplyBfgObjectMapStreamResponse { // Entry refers to each parsed entry in the request's object map so the client // can take action. message Entry { // type ... ObjectType type = 1; // old_oid ... string old_oid = 2; // new_oid ... string new_oid = 3; } // entries ... repeated Entry entries = 1; } // RewriteHistoryRequest is a request for the RewriteHistory RPC. // Each request must contain blobs, redactions, or both. message RewriteHistoryRequest { // repository is the repository that shall be rewritten. // Must be sent on the first request only. Repository repository = 1 [(target_repository)=true]; // blobs is the list of blob object ids that will be removed from history. repeated string blobs = 2; // redactions is the list of literals or patterns that will be replaced // with "***REMOVED***". Items cannot contain newline characters. // See https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html // for a full explanation of what patterns are supported. repeated bytes redactions = 3; } // RewriteHistoryResponse a response for the RewriteHistory RPC. message RewriteHistoryResponse { }