[Request] [+- ] D11390: rhg: Switch rhg.ignored-extensions config to Python-compatible list syntax
SimonSapin
phabricator at mercurial-scm.org
Fri Sep 3 14:38:32 UTC 2021
SimonSapin created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
This includes the ability to have an extension name/path that contains a comma,
by double-quoting it.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D11390
AFFECTED FILES
rust/hg-core/src/config/config.rs
rust/rhg/src/main.rs
CHANGE DETAILS
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
@@ -567,11 +567,10 @@
unsupported.remove(supported);
}
- if let Some(ignored_list) =
- config.get_simple_list(b"rhg", b"ignored-extensions")
+ if let Some(ignored_list) = config.get_list(b"rhg", b"ignored-extensions")
{
for ignored in ignored_list {
- unsupported.remove(ignored);
+ unsupported.remove(ignored.as_slice());
}
}
diff --git a/rust/hg-core/src/config/config.rs b/rust/hg-core/src/config/config.rs
--- a/rust/hg-core/src/config/config.rs
+++ b/rust/hg-core/src/config/config.rs
@@ -13,7 +13,6 @@
ConfigError, ConfigLayer, ConfigOrigin, ConfigValue,
};
use crate::utils::files::get_bytes_from_os_str;
-use crate::utils::SliceExt;
use format_bytes::{write_bytes, DisplayBytes};
use std::collections::HashSet;
use std::env;
@@ -362,32 +361,6 @@
Ok(self.get_option(section, item)?.unwrap_or(false))
}
- /// Returns the corresponding list-value in the config if found, or `None`.
- ///
- /// This is appropriate for new configuration keys. The value syntax is
- /// **not** the same as most existing list-valued config, which has Python
- /// parsing implemented in `parselist()` in
- /// `mercurial/utils/stringutil.py`. Faithfully porting that parsing
- /// algorithm to Rust (including behavior that are arguably bugs)
- /// turned out to be non-trivial and hasnât been completed as of this
- /// writing.
- ///
- /// Instead, the "simple" syntax is: split on comma, then trim leading and
- /// trailing whitespace of each component. Quotes or backslashes are not
- /// interpreted in any way. Commas are mandatory between values. Values
- /// that contain a comma are not supported.
- pub fn get_simple_list(
- &self,
- section: &[u8],
- item: &[u8],
- ) -> Option<impl Iterator<Item = &[u8]>> {
- self.get(section, item).map(|value| {
- value
- .split(|&byte| byte == b',')
- .map(|component| component.trim())
- })
- }
-
/// If there is an `item` value in `section`, parse and return a list of
/// byte strings.
pub fn get_list(
To: SimonSapin, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20210903/2cedbad4/attachment-0001.html>
More information about the Mercurial-patches
mailing list