diff -r 562a676e255a -r 6cd9f53aaed8 rust/rhg/src/main.rs --- a/rust/rhg/src/main.rs Wed Mar 03 18:43:05 2021 +0100 +++ b/rust/rhg/src/main.rs Wed Mar 03 19:02:06 2021 +0100 @@ -95,6 +95,25 @@ exit(&ui, on_unsupported, Err(error.into())) }); + if let Some(repo_path_bytes) = &early_args.repo { + lazy_static::lazy_static! { + static ref SCHEME_RE: regex::bytes::Regex = + // Same as `_matchscheme` in `mercurial/util.py` + regex::bytes::Regex::new("^[a-zA-Z0-9+.\\-]+:").unwrap(); + } + if SCHEME_RE.is_match(&repo_path_bytes) { + exit( + &ui, + OnUnsupported::from_config(&non_repo_config), + Err(CommandError::UnsupportedFeature { + message: format_bytes!( + b"URL-like --repository {}", + repo_path_bytes + ), + }), + ) + } + } let repo_path = early_args.repo.as_deref().map(get_path_from_bytes); let repo_result = match Repo::find(&non_repo_config, repo_path) { Ok(repo) => Ok(repo),