diff --git a/lib/protos/working_copy.proto b/lib/protos/working_copy.proto index b47823713..7104208c5 100644 --- a/lib/protos/working_copy.proto +++ b/lib/protos/working_copy.proto @@ -43,6 +43,7 @@ message Checkout { // config? That way users can rename a workspace. string workspace_id = 3; // The checked-out commit, which can be viewed as a cache of the checkout - // recorded in `operation_id`'s operation. + // recorded in `operation_id`'s operation. No longer used. + // TODO: Delete this mid 2022 or so bytes commit_id = 1; } diff --git a/lib/src/working_copy.rs b/lib/src/working_copy.rs index f8f703418..816748872 100644 --- a/lib/src/working_copy.rs +++ b/lib/src/working_copy.rs @@ -719,28 +719,24 @@ pub struct WorkingCopy { state_path: PathBuf, operation_id: RefCell>, workspace_id: RefCell>, - commit_id: RefCell>, tree_state: RefCell>, } impl WorkingCopy { /// Initializes a new working copy at `working_copy_path`. The working - /// copy's state will be stored in the `state_path` directory. The - /// working copy will be recorded as being already checked out at commit - /// pointed to by `commit_id`; this function doesn't update the working - /// copy file to that commit. + /// copy's state will be stored in the `state_path` directory. The working + /// copy will have the empty tree checked out. pub fn init( store: Arc, working_copy_path: PathBuf, state_path: PathBuf, operation_id: OperationId, workspace_id: WorkspaceId, - commit_id: CommitId, + _commit_id: CommitId, ) -> WorkingCopy { let mut proto = crate::protos::working_copy::Checkout::new(); proto.operation_id = operation_id.to_bytes(); proto.workspace_id = workspace_id.as_str().to_string(); - proto.commit_id = commit_id.to_bytes(); let mut file = OpenOptions::new() .create_new(true) .write(true) @@ -753,7 +749,6 @@ impl WorkingCopy { state_path, operation_id: RefCell::new(Some(operation_id)), workspace_id: RefCell::new(Some(workspace_id)), - commit_id: RefCell::new(Some(commit_id)), tree_state: RefCell::new(None), } } @@ -765,7 +760,6 @@ impl WorkingCopy { state_path, operation_id: RefCell::new(None), workspace_id: RefCell::new(None), - commit_id: RefCell::new(None), tree_state: RefCell::new(None), } } @@ -796,7 +790,6 @@ impl WorkingCopy { WorkspaceId::new(proto.workspace_id) }; self.workspace_id.replace(Some(workspace_id)); - self.commit_id.replace(Some(CommitId::new(proto.commit_id))); } pub fn operation_id(&self) -> OperationId { @@ -815,18 +808,6 @@ impl WorkingCopy { self.workspace_id.borrow().as_ref().unwrap().clone() } - /// The id of the commit that's currently checked out in the working copy. - /// Note that the View is the source of truth for which commit *should* - /// be checked out. That should be kept up to date within a Transaction. - /// The WorkingCopy is only updated at the end. - pub fn current_commit_id(&self) -> CommitId { - if self.commit_id.borrow().is_none() { - self.load_proto(); - } - - self.commit_id.borrow().as_ref().unwrap().clone() - } - fn tree_state(&self) -> RefMut> { if self.tree_state.borrow().is_none() { self.tree_state.replace(Some(TreeState::load( @@ -854,7 +835,6 @@ impl WorkingCopy { let mut proto = crate::protos::working_copy::Checkout::new(); proto.operation_id = self.operation_id().to_bytes(); proto.workspace_id = self.workspace_id().as_str().to_string(); - proto.commit_id = self.current_commit_id().to_bytes(); self.write_proto(proto); } @@ -944,10 +924,9 @@ impl LockedWorkingCopy<'_> { self.wc.tree_state().as_mut().unwrap().reset(new_tree) } - pub fn finish(mut self, operation_id: OperationId, commit_id: CommitId) { + pub fn finish(mut self, operation_id: OperationId, _commit_id: CommitId) { self.wc.tree_state().as_mut().unwrap().save(); self.wc.operation_id.replace(Some(operation_id)); - self.wc.commit_id.replace(Some(commit_id)); self.wc.save(); // TODO: Clear the "pending_checkout" file here. self.closed = true;