95 lines
3.3 KiB
Plaintext
95 lines
3.3 KiB
Plaintext
// Copyright 2022 Dolthub, Inc.
|
|
//
|
|
// 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
|
|
//
|
|
// http://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.
|
|
|
|
table WorkingSet {
|
|
// 20-byte hashes of root values.
|
|
working_root_addr:[ubyte] (required);
|
|
staged_root_addr:[ubyte];
|
|
|
|
// Meta
|
|
name:string (required);
|
|
email:string (required);
|
|
desc:string (required);
|
|
timestamp_millis:uint64;
|
|
|
|
merge_state:MergeState;
|
|
rebase_state:RebaseState;
|
|
}
|
|
|
|
table MergeState {
|
|
// An address for the working root value before the merge started.
|
|
pre_working_root_addr:[ubyte] (required);
|
|
|
|
// The commit that we are merging.
|
|
from_commit_addr:[ubyte] (required);
|
|
|
|
// The spec that was used to identify the commit that we are merging. Optional
|
|
// for backwards compatibility.
|
|
from_commit_spec_str:string;
|
|
|
|
unmergable_tables:[string];
|
|
|
|
is_cherry_pick:bool;
|
|
|
|
// is_revert is set to true when the in-progress merge is a revert operation.
|
|
// This distinguishes it from cherry-pick so that --continue and --abort can
|
|
// route to the correct operation.
|
|
is_revert:bool;
|
|
|
|
// The address of the HEAD commit at the time the merge/cherry-pick/revert started.
|
|
// Used by --abort to restore the branch HEAD pointer to its pre-operation state.
|
|
pre_merge_head_commit_addr:[ubyte];
|
|
|
|
// pending_commit_hashes holds the remaining commit hashes to be processed when a
|
|
// multi-commit operation (i.e. revert or cherry-pick) is interrupted by a conflict.
|
|
// After resolving the conflict and calling --continue, these commits are applied
|
|
// next, in order.
|
|
pending_commit_hashes:[string];
|
|
}
|
|
|
|
table RebaseState {
|
|
// The address of the working root value before the rebase started.
|
|
pre_working_root_addr:[ubyte] (required);
|
|
|
|
// The branch being rebased.
|
|
branch:[ubyte] (required);
|
|
|
|
// The commit that we are rebasing onto.
|
|
onto_commit_addr:[ubyte] (required);
|
|
|
|
// How to handle commits that start off empty
|
|
empty_commit_handling:uint8;
|
|
|
|
// How to handle commits that become empty during rebasing
|
|
commit_becomes_empty_handling:uint8;
|
|
|
|
// The last_attempted_step field indicates which step in the rebase plan was last executed. The step may have ended
|
|
// with a data conflict that the user has to manually resolve, or it may have been cherry-picked cleanly. This field
|
|
// is not valid unless the rebasing_started field is set to true.
|
|
last_attempted_step:float;
|
|
|
|
// The rebasing_started field indicates if execution of the rebase plan has been started or not. Once execution of the
|
|
// plan has been started, the last_attempted_step field holds a reference to the most recent plan step attempted.
|
|
rebasing_started:bool;
|
|
|
|
// When set to true, the rebase process will skip performing commit
|
|
// verification if it would otherwise run.
|
|
skip_verification:bool;
|
|
}
|
|
|
|
// KEEP THIS IN SYNC WITH fileidentifiers.go
|
|
file_identifier "WRST";
|
|
|
|
root_type WorkingSet;
|