Mercurial > public > mercurial-scm > hg
view rust/hg-core/src/operations/debugdata.rs @ 52050:ea0467ed76aa
rust-dirstate-map: use a more precise identity
This is closer to the behavior of what Python does. So far, we were checking
only the inode, but this might not be good enough for the v1 case.
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Thu, 03 Oct 2024 16:35:31 +0200 |
parents | 69b804c8e09e |
children | 039b7caeb4d9 |
line wrap: on
line source
// debugdata.rs // // Copyright 2020 Antoine Cezar <antoine.cezar@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. use crate::errors::HgError; use crate::repo::Repo; use crate::revlog::Revlog; use crate::{exit_codes, RevlogError, RevlogType}; /// Dump the contents data of a revision. pub fn debug_data( repo: &Repo, revset: &str, kind: RevlogType, ) -> Result<Vec<u8>, RevlogError> { let index_file = match kind { RevlogType::Changelog => "00changelog.i", RevlogType::Manifestlog => "00manifest.i", _ => { return Err(RevlogError::Other(HgError::abort( format!("invalid revlog type {}", kind), exit_codes::ABORT, None, ))) } }; let revlog = Revlog::open( &repo.store_vfs(), index_file, None, repo.default_revlog_options(RevlogType::Changelog)?, )?; let rev = crate::revset::resolve_rev_number_or_hex_prefix(revset, &revlog)?; let data = revlog.get_rev_data_for_checked_rev(rev)?; Ok(data.into_owned()) }