##// END OF EJS Templates
dirstate-v2: Support appending to the same data file...
dirstate-v2: Support appending to the same data file For now we’re still writing the entire data every time, so appending is not useful yet. Later we’ll have new nodes pointing to some existing data for nodes and paths that haven’t changed. The decision whether to append is pseudo-random in order to make tests exercise both code paths. This will be replaced by a heuristic based on the amount of unused existing data. Differential Revision: https://phab.mercurial-scm.org/D11094

File last commit:

r48478:065e6162 default
r48478:065e6162 default
Show More
dispatch.rs
219 lines | 5.3 KiB | application/rls-services+xml | RustLexer
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 use crate::dirstate::owning::OwningDirstateMap;
use hg::dirstate::parsers::Timestamp;
use hg::dirstate_tree::dispatch::DirstateMapMethods;
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 use hg::dirstate_tree::on_disk::DirstateV2ParseError;
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 use hg::matchers::Matcher;
use hg::utils::hg_path::{HgPath, HgPathBuf};
use hg::CopyMapIter;
use hg::DirstateEntry;
use hg::DirstateError;
use hg::DirstateParents;
use hg::DirstateStatus;
use hg::PatternFileWarning;
use hg::StateMapIter;
use hg::StatusError;
use hg::StatusOptions;
use std::path::PathBuf;
impl DirstateMapMethods for OwningDirstateMap {
fn clear(&mut self) {
self.get_mut().clear()
}
fn add_file(
&mut self,
filename: &HgPath,
entry: DirstateEntry,
dirstate: use a `added` parameter to _addpath...
r48314 added: bool,
dirstate: use a `merged` parameter to _addpath...
r48316 merged: bool,
dirstate: move the handling of special case within the dirstatemap...
r48310 from_p2: bool,
possibly_dirty: bool,
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 ) -> Result<(), DirstateError> {
dirstate: use a `added` parameter to _addpath...
r48314 self.get_mut().add_file(
filename,
entry,
added,
dirstate: use a `merged` parameter to _addpath...
r48316 merged,
dirstate: use a `added` parameter to _addpath...
r48314 from_p2,
possibly_dirty,
)
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 }
fn remove_file(
&mut self,
filename: &HgPath,
dirstate: move most of the `remove` logic with dirstatemap `removefile`...
r48300 in_merge: bool,
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 ) -> Result<(), DirstateError> {
dirstate: move most of the `remove` logic with dirstatemap `removefile`...
r48300 self.get_mut().remove_file(filename, in_merge)
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 }
dirstate: no longer pass `oldstate` to the `dropfile`...
r48324 fn drop_file(&mut self, filename: &HgPath) -> Result<bool, DirstateError> {
self.get_mut().drop_file(filename)
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 }
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 fn clear_ambiguous_times(
&mut self,
filenames: Vec<HgPathBuf>,
now: i32,
) -> Result<(), DirstateV2ParseError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get_mut().clear_ambiguous_times(filenames, now)
}
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 fn non_normal_entries_contains(
&mut self,
key: &HgPath,
) -> Result<bool, DirstateV2ParseError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get_mut().non_normal_entries_contains(key)
}
fn non_normal_entries_remove(&mut self, key: &HgPath) {
self.get_mut().non_normal_entries_remove(key)
}
fn non_normal_or_other_parent_paths(
&mut self,
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 ) -> Box<dyn Iterator<Item = Result<&HgPath, DirstateV2ParseError>> + '_>
{
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get_mut().non_normal_or_other_parent_paths()
}
fn set_non_normal_other_parent_entries(&mut self, force: bool) {
self.get_mut().set_non_normal_other_parent_entries(force)
}
fn iter_non_normal_paths(
&mut self,
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 ) -> Box<
dyn Iterator<Item = Result<&HgPath, DirstateV2ParseError>> + Send + '_,
> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get_mut().iter_non_normal_paths()
}
fn iter_non_normal_paths_panic(
&self,
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 ) -> Box<
dyn Iterator<Item = Result<&HgPath, DirstateV2ParseError>> + Send + '_,
> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get().iter_non_normal_paths_panic()
}
fn iter_other_parent_paths(
&mut self,
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 ) -> Box<
dyn Iterator<Item = Result<&HgPath, DirstateV2ParseError>> + Send + '_,
> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get_mut().iter_other_parent_paths()
}
fn has_tracked_dir(
&mut self,
directory: &HgPath,
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 ) -> Result<bool, DirstateError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get_mut().has_tracked_dir(directory)
}
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 fn has_dir(&mut self, directory: &HgPath) -> Result<bool, DirstateError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get_mut().has_dir(directory)
}
Simon Sapin
dirstate-v2: Change the on-disk format when the requirement is enabled...
r48055 fn pack_v1(
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 &mut self,
parents: DirstateParents,
now: Timestamp,
) -> Result<Vec<u8>, DirstateError> {
Simon Sapin
dirstate-v2: Change the on-disk format when the requirement is enabled...
r48055 self.get_mut().pack_v1(parents, now)
}
Simon Sapin
dirstate-v2: Support appending to the same data file...
r48478 fn pack_v2(
&mut self,
now: Timestamp,
can_append: bool,
) -> Result<(Vec<u8>, bool), DirstateError> {
self.get_mut().pack_v2(now, can_append)
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 }
fn status<'a>(
&'a mut self,
matcher: &'a (dyn Matcher + Sync),
root_dir: PathBuf,
ignore_files: Vec<PathBuf>,
options: StatusOptions,
) -> Result<(DirstateStatus<'a>, Vec<PatternFileWarning>), StatusError>
{
self.get_mut()
.status(matcher, root_dir, ignore_files, options)
}
fn copy_map_len(&self) -> usize {
self.get().copy_map_len()
}
fn copy_map_iter(&self) -> CopyMapIter<'_> {
self.get().copy_map_iter()
}
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 fn copy_map_contains_key(
&self,
key: &HgPath,
) -> Result<bool, DirstateV2ParseError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get().copy_map_contains_key(key)
}
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 fn copy_map_get(
&self,
key: &HgPath,
) -> Result<Option<&HgPath>, DirstateV2ParseError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get().copy_map_get(key)
}
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 fn copy_map_remove(
&mut self,
key: &HgPath,
) -> Result<Option<HgPathBuf>, DirstateV2ParseError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get_mut().copy_map_remove(key)
}
fn copy_map_insert(
&mut self,
key: HgPathBuf,
value: HgPathBuf,
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 ) -> Result<Option<HgPathBuf>, DirstateV2ParseError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get_mut().copy_map_insert(key, value)
}
fn len(&self) -> usize {
self.get().len()
}
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 fn contains_key(
&self,
key: &HgPath,
) -> Result<bool, DirstateV2ParseError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get().contains_key(key)
}
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 fn get(
&self,
key: &HgPath,
) -> Result<Option<DirstateEntry>, DirstateV2ParseError> {
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 self.get().get(key)
}
fn iter(&self) -> StateMapIter<'_> {
self.get().iter()
}
Simon Sapin
dirstate-v2: Add --dirs to debugdirstate command...
r48140
fn iter_directories(
&self,
) -> Box<
dyn Iterator<
Item = Result<
(&HgPath, Option<Timestamp>),
DirstateV2ParseError,
>,
> + Send
+ '_,
> {
self.get().iter_directories()
}
Simon Sapin
dirstate-tree: Make `DirstateMap` borrow from a bytes buffer...
r47893 }