115 lines · 3.1 KB · Text
RawDownload
// Copyright 2020 The Jujutsu Authors//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at//// https://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License. syntax = "proto3"; package op_store; message RefConflictLegacy {  repeated bytes removes = 1 [deprecated = true];  repeated bytes adds = 2 [deprecated = true];} message RefConflict {  message Term {    optional bytes value = 1;  }  repeated Term removes = 1;  repeated Term adds = 2;} message RefTarget {  // New `RefConflict` type represents both `commit_id` and `conflict_legacy`.  oneof value {    bytes commit_id = 1 [deprecated = true];    RefConflictLegacy conflict_legacy = 2 [deprecated = true];    RefConflict conflict = 3;  }} enum RemoteRefState {  New = 0;  Tracked = 1;} message RemoteBookmark {  string remote_name = 1;  RefTarget target = 2;  // Introduced in jj 0.11.  optional RemoteRefState state = 3;} message Bookmark {  string name = 1;  // Unset if the bookmark has been deleted locally.  RefTarget local_target = 2;  // TODO: How would we support renaming remotes while having undo work? If  // the remote name is stored in config, it's going to become a mess if the  // remote is renamed but the configs are left unchanged. Should each remote  // be identified (here and in configs) by a UUID?  repeated RemoteBookmark remote_bookmarks = 3;} message GitRef {  string name = 1;  // This field is just for historical reasons (before we had the RefTarget  // type). New GitRefs have (only) the target field.  // TODO: Delete support for the old format.  bytes commit_id = 2;  RefTarget target = 3;} message Tag {  string name = 1;  RefTarget target = 2;} message View {  repeated bytes head_ids = 1;  reserved 4;  bytes wc_commit_id = 2 [deprecated = true];  map<string, bytes> wc_commit_ids = 8;  repeated Bookmark bookmarks = 5;  repeated Tag tags = 6;  // Only a subset of the refs. For example, does not include refs/notes/.  repeated GitRef git_refs = 3;  // This field is just for historical reasons (before we had the RefTarget  // type). New Views have (only) the target field.  // TODO: Delete support for the old format.  bytes git_head_legacy = 7 [deprecated = true];  RefTarget git_head = 9;  reserved 10;} message Operation {  bytes view_id = 1;  repeated bytes parents = 2;  OperationMetadata metadata = 3;} // TODO: Share with store.proto? Do we even need the timezone here?message Timestamp {  int64 millis_since_epoch = 1;  int32 tz_offset = 2;} message OperationMetadata {  Timestamp start_time = 1;  Timestamp end_time = 2;  string description = 3;  string hostname = 4;  string username = 5;  bool is_snapshot = 7;  map<string, string> tags = 6;}