##// END OF EJS Templates
hghave: disallow symlinks on Windows...
hghave: disallow symlinks on Windows Symlinks on Windows require either a special priviledge, or enabling Developer Mode. It's probably the latter that is enabled on the new CI machine. But since Mercurial itself is saying no to symlinks on Windows, the tests for symlinks shouldn't be attempted. This should fix a lot of the noise in the py3 tests. Differential Revision: https://phab.mercurial-scm.org/D7233

File last commit:

r43742:a77d4fe3 default
r43760:6792da44 default
Show More
lib.rs
152 lines | 4.0 KiB | application/rls-services+xml | RustLexer
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 // Copyright 2018 Georges Racinet <gracinet@anybox.fr>
//
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.
mod ancestors;
Georges Racinet on ishtar.racinet.fr
rust: dagop.headrevs() Rust counterparts...
r41278 pub mod dagops;
Georges Racinet
rust: core implementation for lazyancestors...
r41084 pub use ancestors::{AncestorsIterator, LazyAncestors, MissingAncestors};
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 mod dirstate;
Georges Racinet
rust-discovery: starting core implementation...
r42355 pub mod discovery;
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 pub mod testing; // unconditionally built, for use from integration tests
pub use dirstate::{
Yuya Nishihara
rust-dirstate: specify concrete return type of DirsMultiset::iter()...
r43155 dirs_multiset::{DirsMultiset, DirsMultisetIter},
Raphaël Gomès
rust-dirstate: rust implementation of dirstatemap...
r42998 dirstate_map::DirstateMap,
Raphaël Gomès
rust-parsers: switch to parse/pack_dirstate to mutate-on-loop...
r42993 parsers::{pack_dirstate, parse_dirstate, PARENT_SIZE},
Raphaël Gomès
rust-dirstate-status: add first Rust implementation of `dirstate.status`...
r43565 status::status,
Yuya Nishihara
rust-dirstate: provide CopyMapIter and StateMapIter types...
r43156 CopyMap, CopyMapIter, DirstateEntry, DirstateParents, EntryState,
StateMap, StateMapIter,
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 };
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514 mod filepatterns;
Raphaël Gomès
rust-matchers: add `Matcher` trait and implement `AlwaysMatcher`...
r43742 pub mod matchers;
Raphaël Gomès
rust-utils: add docstrings and doctests for utils.rs...
r42829 pub mod utils;
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514
Raphaël Gomès
rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf...
r43227 use crate::utils::hg_path::HgPathBuf;
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514 pub use filepatterns::{
build_single_regex, read_pattern_file, PatternSyntax, PatternTuple,
};
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307
/// Mercurial revision numbers
///
/// As noted in revlog.c, revision numbers are actually encoded in
/// 4 bytes, and are liberally converted to ints, whence the i32
pub type Revision = i32;
Georges Racinet
rust: itering less on MissingAncestors.bases for max()...
r41866 /// Marker expressing the absence of a parent
///
/// Independently of the actual representation, `NULL_REVISION` is guaranteed
/// to be smaller that all existing revisions.
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 pub const NULL_REVISION: Revision = -1;
Georges Racinet
rust: working directory revision number constant...
r41384 /// Same as `mercurial.node.wdirrev`
///
/// This is also equal to `i32::max_value()`, but it's better to spell
/// it out explicitely, same as in `mercurial.node`
pub const WORKING_DIRECTORY_REVISION: Revision = 0x7fffffff;
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 /// The simplest expression of what we need of Mercurial DAGs.
pub trait Graph {
Georges Racinet
rust: translation of missingancestors...
r40995 /// Return the two parents of the given `Revision`.
///
/// Each of the parents can be independently `NULL_REVISION`
Raphaël Gomès
rust: switch hg-core and hg-cpython to rust 2018 edition...
r42828 fn parents(&self, rev: Revision) -> Result<[Revision; 2], GraphError>;
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 }
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514 pub type LineNumber = usize;
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 #[derive(Clone, Debug, PartialEq)]
pub enum GraphError {
ParentOutOfRange(Revision),
Georges Racinet
rust: error for WdirUnsupported with cpython conversion as exception...
r41385 WorkingDirectoryUnsupported,
Georges Racinet
rust: pure Rust lazyancestors iterator...
r40307 }
Raphaël Gomès
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`...
r42488
#[derive(Clone, Debug, PartialEq)]
pub enum DirstateParseError {
TooLittleData,
Overflow,
CorruptedEntry(String),
Raphaël Gomès
rust-parsers: switch to parse/pack_dirstate to mutate-on-loop...
r42993 Damaged,
Raphaël Gomès
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`...
r42488 }
Raphaël Gomès
rust-dirstate: use EntryState enum instead of literals...
r42994 impl From<std::io::Error> for DirstateParseError {
fn from(e: std::io::Error) -> Self {
DirstateParseError::CorruptedEntry(e.to_string())
}
}
impl ToString for DirstateParseError {
fn to_string(&self) -> String {
use crate::DirstateParseError::*;
match self {
TooLittleData => "Too little data for dirstate.".to_string(),
Overflow => "Overflow in dirstate.".to_string(),
CorruptedEntry(e) => format!("Corrupted entry: {:?}.", e),
Damaged => "Dirstate appears to be damaged.".to_string(),
}
}
}
Raphaël Gomès
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`...
r42488 #[derive(Debug, PartialEq)]
pub enum DirstatePackError {
CorruptedEntry(String),
CorruptedParent,
BadSize(usize, usize),
}
Raphaël Gomès
rust-dirstate: use EntryState enum instead of literals...
r42994 impl From<std::io::Error> for DirstatePackError {
fn from(e: std::io::Error) -> Self {
DirstatePackError::CorruptedEntry(e.to_string())
}
}
Raphaël Gomès
rust-dirstate: add "dirs" Rust implementation...
r42736 #[derive(Debug, PartialEq)]
pub enum DirstateMapError {
Raphaël Gomès
rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf...
r43227 PathNotFound(HgPathBuf),
Raphaël Gomès
rust-dirstate: add "dirs" Rust implementation...
r42736 EmptyPath,
}
Raphaël Gomès
rust-dirstate: use EntryState enum instead of literals...
r42994 pub enum DirstateError {
Parse(DirstateParseError),
Pack(DirstatePackError),
Map(DirstateMapError),
IO(std::io::Error),
}
impl From<DirstateParseError> for DirstateError {
fn from(e: DirstateParseError) -> Self {
DirstateError::Parse(e)
Raphaël Gomès
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`...
r42488 }
}
Raphaël Gomès
rust-dirstate: use EntryState enum instead of literals...
r42994 impl From<DirstatePackError> for DirstateError {
fn from(e: DirstatePackError) -> Self {
DirstateError::Pack(e)
Raphaël Gomès
rust-dirstate: add rust implementation of `parse_dirstate` and `pack_dirstate`...
r42488 }
}
Raphaël Gomès
rust-filepatterns: add a Rust implementation of pattern-related utils...
r42514
#[derive(Debug)]
pub enum PatternError {
UnsupportedSyntax(String),
}
#[derive(Debug)]
pub enum PatternFileError {
IO(std::io::Error),
Pattern(PatternError, LineNumber),
}
impl From<std::io::Error> for PatternFileError {
fn from(e: std::io::Error) -> Self {
PatternFileError::IO(e)
}
}
Raphaël Gomès
rust-dirstate: use EntryState enum instead of literals...
r42994
impl From<DirstateMapError> for DirstateError {
fn from(e: DirstateMapError) -> Self {
DirstateError::Map(e)
}
}
impl From<std::io::Error> for DirstateError {
fn from(e: std::io::Error) -> Self {
DirstateError::IO(e)
}
}