Mercurial > hg
view rust/hg-cpython/src/dirstate.rs @ 48851:d739cd69bb6a
revlog: return 0 for the fast_rank of nullrev
By convention, the rank of the null revision is 0. This particular revision is
never "physically" stored in the changelog, so it is a special case.
For consistency, the value `None` is still being returned for revlogs which do
not store the fast_rank property for any revision.
Differential Revision: https://phab.mercurial-scm.org/D12208
author | pacien <pacien.trangirard@pacien.net> |
---|---|
date | Mon, 21 Feb 2022 15:53:03 +0100 |
parents | b80e5e75d51e |
children | ea0467ed76aa |
line wrap: on
line source
// 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` mod copymap; mod dirs_multiset; mod dirstate_map; mod item; mod status; use self::item::DirstateItem; use crate::{ dirstate::{ dirs_multiset::Dirs, dirstate_map::DirstateMap, status::status_wrapper, }, exceptions, }; use cpython::{PyBytes, PyDict, PyList, PyModule, PyObject, PyResult, Python}; use hg::dirstate_tree::on_disk::V2_FORMAT_MARKER; /// 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)?; env_logger::init(); m.add(py, "__package__", package)?; m.add(py, "__doc__", "Dirstate - Rust implementation")?; m.add( py, "FallbackError", py.get_type::<exceptions::FallbackError>(), )?; m.add_class::<Dirs>(py)?; m.add_class::<DirstateMap>(py)?; m.add_class::<DirstateItem>(py)?; m.add(py, "V2_FORMAT_MARKER", PyBytes::new(py, V2_FORMAT_MARKER))?; m.add( py, "status", py_fn!( py, status_wrapper( dmap: DirstateMap, root_dir: PyObject, matcher: PyObject, ignorefiles: PyList, check_exec: bool, list_clean: bool, list_ignored: bool, list_unknown: bool, collect_traversed_dirs: bool ) ), )?; 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) }