147 lines · 3.9 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 simple_op_store; message RefConflictLegacy {  repeated bytes removes = 1 [deprecated = true];  repeated bytes adds = 2 [deprecated = true];} // This is redundant with `RefTargetTerm`. It exists for historical reasons.// TODO: Consider deprecating it.message RefConflict {  message Term {    optional bytes value = 1;  }  repeated Term removes = 1;  repeated Term adds = 2;} // RefTarget that may be serialized in legacy form.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;  }} // RefTarget term that should be serialized in native form, in which positive// and negative terms alternate.message RefTargetTerm {  optional bytes value = 1;} 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;  // Deprecated since jj 0.34.  repeated RemoteBookmark remote_bookmarks = 3 [deprecated = true];} 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 [deprecated = true];  RefTarget target = 3;} message RemoteRef {  string name = 1;  repeated RefTargetTerm target_terms = 2;  RemoteRefState state = 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;  // Local bookmarks and remote bookmarks in legacy form.  repeated Bookmark bookmarks = 5;  repeated Tag local_tags = 6;  // Introduced in jj 0.34.  repeated RemoteView remote_views = 11;  // 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;  // Whether "@git" tags have been migrated to remote_views.  bool has_git_refs_migrated_to_remote_tags = 12;  reserved 10;} message RemoteView {  string name = 1;  repeated RemoteRef bookmarks = 2;  repeated RemoteRef tags = 3;} message Operation {  bytes view_id = 1;  repeated bytes parents = 2;  OperationMetadata metadata = 3;  // Introduced in jj 0.30.  repeated CommitPredecessors commit_predecessors = 4;  // Whether or not `commit_predecessors` is recorded.  bool stores_commit_predecessors = 5;} // 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;} message CommitPredecessors {  bytes commit_id = 1;  repeated bytes predecessor_ids = 2;}