diff --git a/rust/rhg/src/main.rs b/rust/rhg/src/main.rs --- a/rust/rhg/src/main.rs +++ b/rust/rhg/src/main.rs @@ -643,6 +643,11 @@ const SUPPORTED_EXTENSIONS: &[&[u8]] = &[b"blackbox", b"share", b"sparse", b"narrow", b"*"]; fn check_extensions(config: &Config) -> Result<(), CommandError> { + if let Some(b"*") = config.get(b"rhg", b"ignored-extensions") { + // All extensions are to be ignored, nothing to do here + return Ok(()); + } + let enabled: HashSet<&[u8]> = config .get_section_keys(b"extensions") .into_iter() diff --git a/tests/test-rhg.t b/tests/test-rhg.t --- a/tests/test-rhg.t +++ b/tests/test-rhg.t @@ -391,3 +391,17 @@ The `:required` extension suboptions are $ echo "*:required = yes" >> $HGRCPATH $ rhg files a + +We can ignore all extensions at once + + $ echo "[extensions]" >> $HGRCPATH + $ echo "thisextensionbetternotexist=" >> $HGRCPATH + $ echo "thisextensionbetternotexisteither=" >> $HGRCPATH + $ $NO_FALLBACK rhg files + unsupported feature: extensions: thisextensionbetternotexist, thisextensionbetternotexisteither (consider adding them to 'rhg.ignored-extensions' config) + [252] + + $ echo "[rhg]" >> $HGRCPATH + $ echo "ignored-extensions=*" >> $HGRCPATH + $ $NO_FALLBACK rhg files + a