##// END OF EJS Templates
exchange: improve computation of relevant markers for large repos...
exchange: improve computation of relevant markers for large repos Find the candidates for nodes with relevant markers by going over all markers instead of iterating over all nodes. Most nodes will not have markers anyway. Further optimize the code by allowing revsets as well, which reduces the materialization cost.

File last commit:

r51872:4c5f6e95 default
r52537:f28c52a9 default
Show More
exceptions.rs
63 lines | 2.0 KiB | application/rls-services+xml | RustLexer
Georges Racinet
rust-cpython: rustdoc improvements...
r41220 // ancestors.rs
//
// 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.
//! Bindings for Rust errors
//!
//! [`GraphError`] exposes `hg::GraphError` as a subclass of `ValueError`
Georges Racinet
rust: error for WdirUnsupported with cpython conversion as exception...
r41385 //! but some variants of `hg::GraphError` can be converted directly to other
//! existing Python exceptions if appropriate.
Georges Racinet
rust-cpython: rustdoc improvements...
r41220 //!
//! [`GraphError`]: struct.GraphError.html
Raphaël Gomès
rust: switch hg-core and hg-cpython to rust 2018 edition...
r42828 use cpython::{
Raphaël Gomès
rust-filepatterns: remove bridge code for filepatterns-related functions...
r44589 exc::{RuntimeError, ValueError},
Raphaël Gomès
rust: switch hg-core and hg-cpython to rust 2018 edition...
r42828 py_exception, PyErr, Python,
};
Georges Racinet
rust-cpython: start cpython crate bindings...
r41001 use hg;
Raphaël Gomès
rust: make `Revision` a newtype...
r51872 use crate::PyRevision;
Georges Racinet
rust-cpython: start cpython crate bindings...
r41001 py_exception!(rustext, GraphError, ValueError);
impl GraphError {
pub fn pynew(py: Python, inner: hg::GraphError) -> PyErr {
match inner {
hg::GraphError::ParentOutOfRange(r) => {
Raphaël Gomès
rust: make `Revision` a newtype...
r51872 GraphError::new(py, ("ParentOutOfRange", PyRevision(r.0)))
Georges Racinet
rust-cpython: start cpython crate bindings...
r41001 }
Raphaël Gomès
rust-filepatterns: add `rust-cpython` bindings for `filepatterns`...
r42515 }
}
pacien
hg-cpython: use ancestor iterator impls from vcsgraph...
r49350
pub fn pynew_from_vcsgraph(
py: Python,
inner: vcsgraph::graph::GraphReadError,
) -> PyErr {
match inner {
vcsgraph::graph::GraphReadError::InconsistentGraphData => {
GraphError::new(py, "InconsistentGraphData")
}
vcsgraph::graph::GraphReadError::InvalidKey => {
GraphError::new(py, "ParentOutOfRange")
}
vcsgraph::graph::GraphReadError::KeyedInvalidKey(r) => {
GraphError::new(py, ("ParentOutOfRange", r))
}
vcsgraph::graph::GraphReadError::WorkingDirectoryUnsupported => {
match py
.import("mercurial.error")
.and_then(|m| m.get(py, "WdirUnsupported"))
{
Err(e) => e,
Ok(cls) => PyErr::from_instance(py, cls),
}
}
}
}
Raphaël Gomès
rust-filepatterns: add `rust-cpython` bindings for `filepatterns`...
r42515 }
Raphaël Gomès
rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf...
r43227 py_exception!(rustext, HgPathPyError, RuntimeError);
Raphaël Gomès
rust-status: update rust-cpython bridge to account for the changes in core...
r45016 py_exception!(rustext, FallbackError, RuntimeError);
py_exception!(shared_ref, AlreadyBorrowed, RuntimeError);