##// END OF EJS Templates
rust: make RevlogError AmbiguousPrefix case contain the actual prefix...
rust: make RevlogError AmbiguousPrefix case contain the actual prefix This brings the work started in `652149ed64f0` to its logical conclusion and makes the RevlogError self-sufficient so it can be directly converted to CommandError, without an extra rev text annotation. Without this change, it's confusing that the extra annotation is ignored in most-but-not-all cases.

File last commit:

r53198:79e8118c default
r53240:393ad268 default
Show More
dirstate.rs
100 lines | 2.3 KiB | application/rls-services+xml | RustLexer
Raphaël Gomès
rust-parsers: switch to parse/pack_dirstate to mutate-on-loop...
r42993 // dirstate module
//
// Copyright 2019 Raphaël Gomès <rgomes@octobus.net>
//
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.
Raphaël Gomès
rust-lib: move `Dirstate*Error` to the `dirstate` module...
r53198 use std::fmt;
Raphaël Gomès
rust-dirstate: merge `dirstate_tree` module into `dirstate`...
r53195 use crate::dirstate::on_disk::DirstateV2ParseError;
Raphaël Gomès
rust-lib: move `Dirstate*Error` to the `dirstate` module...
r53198 use crate::errors;
Simon Sapin
rhg: Add support for dirstate-v2...
r48165 use crate::revlog::node::NULL_NODE;
Simon Sapin
rust: Make `DirstateParents`’s fields typed `Node`s...
r47337 use crate::revlog::Node;
Raphaël Gomès
rust-lib: move `Dirstate*Error` to the `dirstate` module...
r53198 use crate::utils::hg_path::{HgPath, HgPathBuf, HgPathError};
Simon Sapin
rust: Move DirstateEntry to its own module...
r48830 use bytes_cast::BytesCast;
Raphaël Gomès
rust-dirstate: remove star exports...
r53196 use entry::DirstateEntry;
Raphaël Gomès
rust-parsers: switch to parse/pack_dirstate to mutate-on-loop...
r42993
Raphaël Gomès
rust: switch hg-core and hg-cpython to rust 2018 edition...
r42828 pub mod dirs_multiset;
Raphaël Gomès
rust-dirstate: merge `dirstate_tree` module into `dirstate`...
r53195 pub mod dirstate_map;
Simon Sapin
rust: Move DirstateEntry to its own module...
r48830 pub mod entry;
Raphaël Gomès
rust-dirstate: merge `dirstate_tree` module into `dirstate`...
r53195 pub mod on_disk;
pub mod owning;
Raphaël Gomès
rust: switch hg-core and hg-cpython to rust 2018 edition...
r42828 pub mod parsers;
Raphaël Gomès
rust-dirstate: merge `dirstate_tree` module into `dirstate`...
r53195 pub mod path_with_basename;
Raphaël Gomès
rust-dirstate-status: add first Rust implementation of `dirstate.status`...
r43565 pub mod status;
Raphaël Gomès
rust: switch hg-core and hg-cpython to rust 2018 edition...
r42828
Simon Sapin
rust: Add Repo::dirstate_map and use it in `rhg status`...
r48768 #[derive(Debug, PartialEq, Copy, Clone, BytesCast)]
Simon Sapin
rust: Rewrite dirstate parsing usin the `bytes-cast` crate...
r47336 #[repr(C)]
Raphaël Gomès
rust-parsers: switch to parse/pack_dirstate to mutate-on-loop...
r42993 pub struct DirstateParents {
Simon Sapin
rust: Make `DirstateParents`’s fields typed `Node`s...
r47337 pub p1: Node,
pub p2: Node,
Raphaël Gomès
rust: switch hg-core and hg-cpython to rust 2018 edition...
r42828 }
Simon Sapin
rhg: Add support for dirstate-v2...
r48165 impl DirstateParents {
pub const NULL: Self = Self {
p1: NULL_NODE,
p2: NULL_NODE,
};
Arseniy Alekseyev
rhg: make [rhg status -v] work when it needs no extra output...
r50334
pub fn is_merge(&self) -> bool {
Raphaël Gomès
rust-clippy: fix most warnings in `hg-core`...
r50825 !(self.p2 == NULL_NODE)
Arseniy Alekseyev
rhg: make [rhg status -v] work when it needs no extra output...
r50334 }
Simon Sapin
rhg: Add support for dirstate-v2...
r48165 }
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 pub type StateMapIter<'a> = Box<
dyn Iterator<
Item = Result<(&'a HgPath, DirstateEntry), DirstateV2ParseError>,
> + Send
+ 'a,
>;
Raphaël Gomès
rust: start plugging the dirstate tree behind a feature gate...
r46185
Simon Sapin
dirstate-v2: Make more APIs fallible, returning Result...
r48126 pub type CopyMapIter<'a> = Box<
dyn Iterator<Item = Result<(&'a HgPath, &'a HgPath), DirstateV2ParseError>>
+ Send
+ 'a,
>;
Raphaël Gomès
rust-lib: move `Dirstate*Error` to the `dirstate` module...
r53198
#[derive(Debug, PartialEq)]
pub enum DirstateMapError {
PathNotFound(HgPathBuf),
InvalidPath(HgPathError),
}
impl From<HgPathError> for DirstateMapError {
fn from(error: HgPathError) -> Self {
Self::InvalidPath(error)
}
}
impl fmt::Display for DirstateMapError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
DirstateMapError::PathNotFound(_) => {
f.write_str("expected a value, found none")
}
DirstateMapError::InvalidPath(path_error) => path_error.fmt(f),
}
}
}
#[derive(Debug, derive_more::From)]
pub enum DirstateError {
Map(DirstateMapError),
Common(errors::HgError),
}
impl From<HgPathError> for DirstateError {
fn from(error: HgPathError) -> Self {
Self::Map(DirstateMapError::InvalidPath(error))
}
}
impl fmt::Display for DirstateError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
DirstateError::Map(error) => error.fmt(f),
DirstateError::Common(error) => error.fmt(f),
}
}
}