##// END OF EJS Templates
hgignore: add a GlobSuffix type, instead of passing byte arrays...
hgignore: add a GlobSuffix type, instead of passing byte arrays I think this makes it easier to understand the purpose of this extra argument.

File last commit:

r53110:96b113d2 stable
r53249:2ff004fb default
Show More
update.rs
63 lines | 1.7 KiB | application/rls-services+xml | RustLexer
// debug.rs
//
// Copyright 2024 Mercurial developers
//
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.
//! Module for updating a repository.
use cpython::{PyDict, PyModule, PyObject, PyResult, Python};
use hg::{
progress::{HgProgressBar, Progress},
update::update_from_null,
BaseRevision,
};
use crate::{
exceptions::FallbackError,
utils::{hgerror_to_pyerr, repo_from_path, with_sigint_wrapper},
};
pub fn update_from_null_fast_path(
py: Python,
repo_path: PyObject,
to: BaseRevision,
num_cpus: Option<usize>,
) -> PyResult<usize> {
log::trace!("Using update from null fastpath");
let repo = repo_from_path(py, repo_path)?;
let progress: &dyn Progress = &HgProgressBar::new("updating");
let res = with_sigint_wrapper(py, || {
update_from_null(&repo, to.into(), progress, num_cpus)
})?;
hgerror_to_pyerr(py, res)
}
pub fn init_module(py: Python, package: &str) -> PyResult<PyModule> {
let dotted_name = &format!("{}.update", package);
let m = PyModule::new(py, dotted_name)?;
m.add(py, "__package__", package)?;
m.add(py, "__doc__", "Rust module for updating a repository")?;
m.add(py, "FallbackError", py.get_type::<FallbackError>())?;
m.add(
py,
"update_from_null",
py_fn!(
py,
update_from_null_fast_path(
repo_path: PyObject,
to: BaseRevision,
num_cpus: Option<usize>
)
),
)?;
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)
}