##// END OF EJS Templates
rust: implement conversion of RevlogError into HgError...
rust: implement conversion of RevlogError into HgError The conversion already exists in rhg, where we need to convert to CommandError. This commit moves it to hg core. This makes it easier to code some middleware where we need to carry around a type that represents any type of hg error (HgError).

File last commit:

r53187:a3fa37bd default
r53241:09a36de5 default
Show More
debugdata.rs
45 lines | 1.3 KiB | application/rls-services+xml | RustLexer
// 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::exit_codes;
use crate::repo::Repo;
use crate::revlog::options::default_revlog_options;
use crate::revlog::{Revlog, 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,
default_revlog_options(
repo.config(),
repo.requirements(),
RevlogType::Changelog,
)?,
)?;
let rev =
crate::revset::resolve_rev_number_or_hex_prefix(revset, &revlog)?;
let data = revlog.get_data(rev)?;
Ok(data.into_owned())
}