Mercurial > public > mercurial-scm > hg
diff rust/rhg/src/main.rs @ 45537:2f8227a12592
rhg: add `--revision` argument to `rhg files`
Add the option to list the tracked files of a revision given its number
or full node id.
Benched on a clone of moz-central
where tip is 1671467:81deaa1a68ebb28db0490954034ab38ab269409d
files -r 81deaa1a68ebb28db0490954034ab38ab269409d > out.txt
hg 0m1.633s
rhg 0m0.157s
files -r 81deaa1a68ebb28db0490954034ab38ab269409d > /dev/null
hg 0m0.415s
rhg 0m0.143s
Differential Revision: https://phab.mercurial-scm.org/D9015
author | Antoine Cezar <antoine.cezar@octobus.net> |
---|---|
date | Wed, 09 Sep 2020 14:53:15 +0200 |
parents | b1cea0dc9db0 |
children | 33ded2d3f4fc |
line wrap: on
line diff
--- a/rust/rhg/src/main.rs Fri Sep 18 16:52:16 2020 +0200 +++ b/rust/rhg/src/main.rs Wed Sep 09 14:53:15 2020 +0200 @@ -26,7 +26,16 @@ SubCommand::with_name("root").about(commands::root::HELP_TEXT), ) .subcommand( - SubCommand::with_name("files").about(commands::files::HELP_TEXT), + SubCommand::with_name("files") + .arg( + Arg::with_name("rev") + .help("search the repository as it is in REV") + .short("-r") + .long("--revision") + .value_name("REV") + .takes_value(true), + ) + .about(commands::files::HELP_TEXT), ) .subcommand( SubCommand::with_name("debugdata") @@ -86,7 +95,9 @@ ) -> Result<(), CommandError> { match matches.subcommand() { ("root", _) => commands::root::RootCommand::new().run(&ui), - ("files", _) => commands::files::FilesCommand::new().run(&ui), + ("files", Some(matches)) => { + commands::files::FilesCommand::try_from(matches)?.run(&ui) + } ("debugdata", Some(matches)) => { commands::debugdata::DebugDataCommand::try_from(matches)?.run(&ui) } @@ -94,6 +105,15 @@ } } +impl<'a> TryFrom<&'a ArgMatches<'_>> for commands::files::FilesCommand<'a> { + type Error = CommandError; + + fn try_from(args: &'a ArgMatches) -> Result<Self, Self::Error> { + let rev = args.value_of("rev"); + Ok(commands::files::FilesCommand::new(rev)) + } +} + impl<'a> TryFrom<&'a ArgMatches<'_>> for commands::debugdata::DebugDataCommand<'a> {