syntax = "proto3";

package gitaly;

import "lint.proto";
import "shared.proto";

option go_package = "gitlab.com/gitlab-org/gitaly/v15/proto/go/gitalypb";

// CleanupService provides RPCs to clean up a repository's contents.
service CleanupService {

  // This comment is left unintentionally blank.
  rpc ApplyBfgObjectMapStream(stream ApplyBfgObjectMapStreamRequest) returns (stream ApplyBfgObjectMapStreamResponse) {
    option (op_type) = {
      op: MUTATOR
    };
  }

}

// This comment is left unintentionally blank.
message ApplyBfgObjectMapStreamRequest {
  // Only available on the first message
  Repository repository = 1 [(target_repository)=true];

  // 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;
}

// This comment is left unintentionally blank.
message ApplyBfgObjectMapStreamResponse {
  // We send back each parsed entry in the request's object map so the client
  // can take action
  message Entry {
    // This comment is left unintentionally blank.
    ObjectType type = 1;
    // This comment is left unintentionally blank.
    string old_oid = 2;
    // This comment is left unintentionally blank.
    string new_oid = 3;
  }

  // This comment is left unintentionally blank.
  repeated Entry entries = 1;
}
