Mercurial > public > mercurial-scm > hg
view rust/hg-cpython/src/update.rs @ 52180:735bf027dd1d
rust-vfs: add tests to `AtomicFile`
This also makes it more usable from Rust by separating `from_file` and `new`.
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Tue, 08 Oct 2024 16:10:30 +0200 |
parents | 8b7123c8947b |
children | e6a44bc91bc2 |
line wrap: on
line source
// 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}, }; pub fn update_from_null_fast_path( py: Python, repo_path: PyObject, to: BaseRevision, ) -> PyResult<usize> { log::trace!("Using update from null fastpath"); let repo = repo_from_path(py, repo_path)?; let progress: &dyn Progress = &HgProgressBar::new("updating"); hgerror_to_pyerr(py, update_from_null(&repo, to.into(), progress)) } 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,) ), )?; 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) }