##// END OF EJS Templates
dirstate-v2: hash the source of the ignore patterns as well...
dirstate-v2: hash the source of the ignore patterns as well Fixes the test introduced in the last changeset. This caused the hash to change, which means that the check in the test had to be adapted. Since this hash is only done as a caching mechanism, invalidation does not pose any backwards compatibility issues.

File last commit:

r45500:26114bd6 default
r50453:363923bd stable
Show More
utils.rs
44 lines | 1.5 KiB | application/rls-services+xml | RustLexer
Georges Racinet
rust-nodemap: add utils to create `Node`s from Python objects...
r44992 use cpython::exc::ValueError;
use cpython::{PyBytes, PyDict, PyErr, PyObject, PyResult, PyTuple, Python};
use hg::revlog::Node;
use std::convert::TryFrom;
Raphaël Gomès
rust-utils: introduce a debug util to print the python stack trace...
r43545
#[allow(unused)]
pub fn print_python_trace(py: Python) -> PyResult<PyObject> {
eprintln!("===============================");
eprintln!("Printing Python stack from Rust");
eprintln!("===============================");
let traceback = py.import("traceback")?;
let sys = py.import("sys")?;
let kwargs = PyDict::new(py);
kwargs.set_item(py, "file", sys.get(py, "stderr")?)?;
traceback.call(py, "print_stack", PyTuple::new(py, &[]), Some(&kwargs))
}
Georges Racinet
rust-nodemap: add utils to create `Node`s from Python objects...
r44992
// Necessary evil for the time being, could maybe be moved to
// a TryFrom in Node itself
const NODE_BYTES_LENGTH: usize = 20;
type NodeData = [u8; NODE_BYTES_LENGTH];
/// Copy incoming Python bytes given as `PyObject` into `Node`,
/// doing the necessary checks
pub fn node_from_py_object<'a>(
py: Python,
bytes: &'a PyObject,
) -> PyResult<Node> {
let as_py_bytes: &'a PyBytes = bytes.extract(py)?;
node_from_py_bytes(py, as_py_bytes)
}
/// Clone incoming Python bytes given as `PyBytes` as a `Node`,
/// doing the necessary checks.
Raphaël Gomès
rust: do a clippy pass...
r45500 pub fn node_from_py_bytes(py: Python, bytes: &PyBytes) -> PyResult<Node> {
Georges Racinet
rust-nodemap: add utils to create `Node`s from Python objects...
r44992 <NodeData>::try_from(bytes.data(py))
.map_err(|_| {
PyErr::new::<ValueError, _>(
py,
format!("{}-byte hash required", NODE_BYTES_LENGTH),
)
})
Raphaël Gomès
rust: do a clippy pass...
r45500 .map(Into::into)
Georges Racinet
rust-nodemap: add utils to create `Node`s from Python objects...
r44992 }