##// END OF EJS Templates
rhg: set the expected temp file permissions (0o666 minus umask)...
rhg: set the expected temp file permissions (0o666 minus umask) This continues the theme of a48c688d3e80, and fixes the bug #6375, which was causing some problems for us, where a non-group-readable file can't be copied, which breaks some tools that copy the repo. This affects both the `checkexec` file and the temporary file we use for filesystem time measurement, since either of these files remaining on disk can cause this problem, and the 0666 permissions are just the better default here.

File last commit:

r53240:393ad268 default
r53422:66e34bc4 default
Show More
debugdata.rs
72 lines | 2.0 KiB | application/rls-services+xml | RustLexer
use crate::error::CommandError;
use clap::Arg;
use clap::ArgGroup;
use hg::operations::debug_data;
use hg::revlog::RevlogType;
pub const HELP_TEXT: &str = "
Dump the contents of a data file revision
";
pub fn args() -> clap::Command {
clap::command!("debugdata")
.arg(
Arg::new("changelog")
.help("open changelog")
.short('c')
.action(clap::ArgAction::SetTrue),
)
.arg(
Arg::new("manifest")
.help("open manifest")
.short('m')
.action(clap::ArgAction::SetTrue),
)
.group(
ArgGroup::new("revlog")
.args(["changelog", "manifest"])
.required(true),
)
.arg(
Arg::new("rev")
.help("revision")
.required(true)
.value_name("REV"),
)
.about(HELP_TEXT)
}
#[logging_timer::time("trace")]
pub fn run(invocation: &crate::CliInvocation) -> Result<(), CommandError> {
let args = invocation.subcommand_args;
let rev = args
.get_one::<String>("rev")
.expect("rev should be a required argument");
let kind = match (
args.get_one::<bool>("changelog").unwrap(),
args.get_one::<bool>("manifest").unwrap(),
) {
(true, false) => RevlogType::Changelog,
(false, true) => RevlogType::Manifestlog,
(true, true) => {
unreachable!("Should not happen since options are exclusive")
}
(false, false) => {
unreachable!("Should not happen since options are required")
}
};
let repo = invocation.repo?;
if repo.has_narrow() {
return Err(CommandError::unsupported(
"support for ellipsis nodes is missing and repo has narrow enabled",
));
}
let data = debug_data(repo, rev, kind)?;
let mut stdout = invocation.ui.stdout_buffer();
stdout.write_all(&data)?;
stdout.flush()?;
Ok(())
}