##// END OF EJS Templates
packaging: add pygit2 to the py3 Windows installers...
packaging: add pygit2 to the py3 Windows installers This is needed to be able to use the git extension. The extension no longer complains about the library being not installed, but `hg log -r .` on a repo that works in WSL yielded a TypeError: ... File "mercurial.hg", line 188, in _peerorrepo File "mercurial.localrepo", line 3224, in instance File "mercurial.localrepo", line 623, in makelocalrepository File "hgext.git", line 117, in _makestore File "hgext.git", line 48, in __init__ TypeError: Repository unable to unpack backend. Differential Revision: https://phab.mercurial-scm.org/D9405

File last commit:

r46101:b1cea0dc default
r46596:d2649781 default
Show More
debugdata.rs
82 lines | 2.5 KiB | application/rls-services+xml | RustLexer
Antoine Cezar
rhg: add a `DebugData` `Command` to prepare the `rhg debugdata` subcommand...
r46099 use crate::commands::Command;
use crate::error::{CommandError, CommandErrorKind};
use crate::ui::utf8_to_local;
use crate::ui::Ui;
use hg::operations::{
DebugData, DebugDataError, DebugDataErrorKind, DebugDataKind,
};
Antoine Cezar
rhg: Add debug timing...
r46101 use micro_timer::timed;
Antoine Cezar
rhg: add a `DebugData` `Command` to prepare the `rhg debugdata` subcommand...
r46099
pub const HELP_TEXT: &str = "
Dump the contents of a data file revision
";
pub struct DebugDataCommand<'a> {
rev: &'a str,
kind: DebugDataKind,
}
impl<'a> DebugDataCommand<'a> {
pub fn new(rev: &'a str, kind: DebugDataKind) -> Self {
DebugDataCommand { rev, kind }
}
}
impl<'a> Command for DebugDataCommand<'a> {
Antoine Cezar
rhg: Add debug timing...
r46101 #[timed]
Antoine Cezar
rhg: add a `DebugData` `Command` to prepare the `rhg debugdata` subcommand...
r46099 fn run(&self, ui: &Ui) -> Result<(), CommandError> {
let mut operation = DebugData::new(self.rev, self.kind);
let data =
operation.run().map_err(|e| to_command_error(self.rev, e))?;
let mut stdout = ui.stdout_buffer();
stdout.write_all(&data)?;
stdout.flush()?;
Ok(())
}
}
/// Convert operation errors to command errors
fn to_command_error(rev: &str, err: DebugDataError) -> CommandError {
match err.kind {
DebugDataErrorKind::FindRootError(err) => CommandError::from(err),
DebugDataErrorKind::IoError(err) => CommandError {
kind: CommandErrorKind::Abort(Some(
utf8_to_local(&format!("abort: {}\n", err)).into(),
)),
},
DebugDataErrorKind::InvalidRevision => CommandError {
kind: CommandErrorKind::Abort(Some(
utf8_to_local(&format!(
"abort: invalid revision identifier{}\n",
rev
))
.into(),
)),
},
DebugDataErrorKind::UnsuportedRevlogVersion(version) => CommandError {
kind: CommandErrorKind::Abort(Some(
utf8_to_local(&format!(
"abort: unsupported revlog version {}\n",
version
))
.into(),
)),
},
DebugDataErrorKind::CorruptedRevlog => CommandError {
kind: CommandErrorKind::Abort(Some(
"abort: corrupted revlog\n".into(),
)),
},
DebugDataErrorKind::UnknowRevlogDataFormat(format) => CommandError {
kind: CommandErrorKind::Abort(Some(
utf8_to_local(&format!(
"abort: unknow revlog dataformat {:?}\n",
format
))
.into(),
)),
},
}
}