D11874: rhg: support the new extension suboptions syntax
Alphare (Raphaël Gomès)
phabricator at mercurial-scm.org
Tue Dec 7 11:35:26 UTC 2021
Alphare created this revision.
Alphare added a comment.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
Pending CI refresh
REVISION SUMMARY
See inline comments
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D11874
AFFECTED FILES
rust/rhg/src/main.rs
tests/test-rhg.t
CHANGE DETAILS
diff --git a/tests/test-rhg.t b/tests/test-rhg.t
--- a/tests/test-rhg.t
+++ b/tests/test-rhg.t
@@ -380,3 +380,13 @@
$ rhg files
a
$ rm .hgsub
+
+The `:required` extension suboptions are correctly ignored
+
+ $ echo "[extensions]" >> $HGRCPATH
+ $ echo "blackbox:required = yes" >> $HGRCPATH
+ $ rhg files
+ a
+ $ echo "*:required = yes" >> $HGRCPATH
+ $ rhg files
+ a
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
@@ -11,6 +11,7 @@
use hg::repo::{Repo, RepoError};
use hg::utils::files::{get_bytes_from_os_str, get_path_from_bytes};
use hg::utils::SliceExt;
+use std::collections::HashSet;
use std::ffi::OsString;
use std::path::PathBuf;
use std::process::Command;
@@ -593,11 +594,23 @@
}
}
+/// The `*` extension is an edge-case for config sub-options that apply to all
+/// extensions. For now, only `:required` exists, but that may change in the
+/// future.
const SUPPORTED_EXTENSIONS: &[&[u8]] =
- &[b"blackbox", b"share", b"sparse", b"narrow"];
+ &[b"blackbox", b"share", b"sparse", b"narrow", b"*"];
fn check_extensions(config: &Config) -> Result<(), CommandError> {
- let enabled = config.get_section_keys(b"extensions");
+ let enabled: HashSet<&[u8]> = config
+ .get_section_keys(b"extensions")
+ .into_iter()
+ .map(|extension| {
+ // Ignore extension suboptions. Only `required` exists for now.
+ // `rhg` either supports an extension or doesn't, so it doesn't
+ // make sense to consider the loading of an extension.
+ extension.split_2(b':').unwrap_or((extension, b"")).0
+ })
+ .collect();
let mut unsupported = enabled;
for supported in SUPPORTED_EXTENSIONS {
To: Alphare, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list