##// END OF EJS Templates
dirstate: Use the Rust implementation of DirstateItem when Rust is enabled...
dirstate: Use the Rust implementation of DirstateItem when Rust is enabled … instead of the C implementation, with C/Rust conversions at the FFI boundary Differential Revision: https://phab.mercurial-scm.org/D11486

File last commit:

r48858:d5528ac9 default
r48858:d5528ac9 default
Show More
dirstate.rs
72 lines | 2.0 KiB | application/rls-services+xml | RustLexer
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 // dirstate.rs
//
// 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.
//! Bindings for the `hg::dirstate` module provided by the
//! `hg-core` package.
//!
//! From Python, this will be seen as `mercurial.rustext.dirstate`
Raphaël Gomès
rust-dirstate: rust-cpython bridge for dirstatemap...
r42999 mod copymap;
Raphaël Gomès
rust-dirstate: create dirstate submodule in hg-cpython...
r42991 mod dirs_multiset;
Raphaël Gomès
rust-dirstate: rust-cpython bridge for dirstatemap...
r42999 mod dirstate_map;
Simon Sapin
rust: Add Python bindings for DirstateEntry as rustext.dirstate.DirstateItem...
r48857 mod item;
Raphaël Gomès
rust-dirstatemap: add `NonNormalEntries` class...
r44779 mod non_normal_entries;
Raphaël Gomès
rust-dirstate-status: rust-cpython bindings for `dirstate.status`...
r43567 mod status;
Simon Sapin
rust: Add Python bindings for DirstateEntry as rustext.dirstate.DirstateItem...
r48857 use self::item::DirstateItem;
Raphaël Gomès
rust-status: update rust-cpython bridge to account for the changes in core...
r45016 use crate::{
dirstate::{
dirs_multiset::Dirs, dirstate_map::DirstateMap, status::status_wrapper,
},
exceptions,
Raphaël Gomès
rust-dirstate-status: rust-cpython bindings for `dirstate.status`...
r43567 };
Simon Sapin
dirstate: Use the Rust implementation of DirstateItem when Rust is enabled...
r48858 use cpython::{PyBytes, PyDict, PyList, PyModule, PyObject, PyResult, Python};
Simon Sapin
dirstate-v2: Change the on-disk format when the requirement is enabled...
r48055 use hg::dirstate_tree::on_disk::V2_FORMAT_MARKER;
dirstate-item: also build DistateItem in dirstate.directories()...
r48367
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 /// Create the module, with `__package__` given from parent
pub fn init_module(py: Python, package: &str) -> PyResult<PyModule> {
let dotted_name = &format!("{}.dirstate", package);
let m = PyModule::new(py, dotted_name)?;
Raphaël Gomès
rust-dirstate: add "dirs" rust-cpython binding...
r42737
Raphaël Gomès
rust-cpython: switch logging facade from `simple_logger` to `env_logger`...
r46090 env_logger::init();
Raphaël Gomès
rust: add logging utils...
r45027
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 m.add(py, "__package__", package)?;
m.add(py, "__doc__", "Dirstate - Rust implementation")?;
Raphaël Gomès
rust-status: update rust-cpython bridge to account for the changes in core...
r45016 m.add(
py,
"FallbackError",
py.get_type::<exceptions::FallbackError>(),
)?;
Raphaël Gomès
rust-dirstate: add "dirs" rust-cpython binding...
r42737 m.add_class::<Dirs>(py)?;
Raphaël Gomès
rust-dirstate: rust-cpython bridge for dirstatemap...
r42999 m.add_class::<DirstateMap>(py)?;
Simon Sapin
rust: Add Python bindings for DirstateEntry as rustext.dirstate.DirstateItem...
r48857 m.add_class::<DirstateItem>(py)?;
Simon Sapin
dirstate-v2: Change the on-disk format when the requirement is enabled...
r48055 m.add(py, "V2_FORMAT_MARKER", PyBytes::new(py, V2_FORMAT_MARKER))?;
Raphaël Gomès
rust-dirstate-status: rust-cpython bindings for `dirstate.status`...
r43567 m.add(
py,
"status",
py_fn!(
py,
status_wrapper(
dmap: DirstateMap,
root_dir: PyObject,
Raphaël Gomès
rust-dirstate-status: update bridge for new rust version of `dirstate.status`...
r44368 matcher: PyObject,
Raphaël Gomès
rust-status: update rust-cpython bridge to account for the changes in core...
r45016 ignorefiles: PyList,
check_exec: bool,
Raphaël Gomès
rust-dirstate-status: rust-cpython bindings for `dirstate.status`...
r43567 last_normal_time: i64,
Raphaël Gomès
rust-status: update rust-cpython bridge to account for the changes in core...
r45016 list_clean: bool,
list_ignored: bool,
Raphaël Gomès
rust-hg-cpython: update status bridge with the new `traversedir` support...
r45354 list_unknown: bool,
collect_traversed_dirs: bool
Raphaël Gomès
rust-dirstate-status: rust-cpython bindings for `dirstate.status`...
r43567 )
),
)?;
Raphaël Gomès
rust-dirstate: add "dirs" rust-cpython binding...
r42737
Raphaël Gomès
rust-dirstate: add rust-cpython bindings to the new parse/pack functions...
r42489 let sys = PyModule::import(py, "sys")?;
let sys_modules: PyDict = sys.get(py, "modules")?.extract(py)?;
sys_modules.set_item(py, dotted_name, &m)?;
Ok(m)
}