D10141: rhg: Silently ignore missing files in config %include
SimonSapin
phabricator at mercurial-scm.org
Tue Mar 9 09:42:45 UTC 2021
SimonSapin created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D10141
AFFECTED FILES
rust/hg-core/src/config/layer.rs
CHANGE DETAILS
diff --git a/rust/hg-core/src/config/layer.rs b/rust/hg-core/src/config/layer.rs
--- a/rust/hg-core/src/config/layer.rs
+++ b/rust/hg-core/src/config/layer.rs
@@ -160,20 +160,28 @@
// `Path::join` with an absolute argument correctly ignores the
// base path
let filename = dir.join(&get_path_from_bytes(&filename_bytes));
- let data = std::fs::read(&filename).map_err(|io_error| {
- ConfigParseError {
- origin: ConfigOrigin::File(src.to_owned()),
- line,
- message: format_bytes!(
- b"cannot include {} ({})",
- filename_bytes,
- format_bytes::Utf8(io_error)
- ),
+ match std::fs::read(&filename) {
+ Ok(data) => {
+ layers.push(current_layer);
+ layers.extend(Self::parse(&filename, &data)?);
+ current_layer =
+ Self::new(ConfigOrigin::File(src.to_owned()));
}
- })?;
- layers.push(current_layer);
- layers.extend(Self::parse(&filename, &data)?);
- current_layer = Self::new(ConfigOrigin::File(src.to_owned()));
+ Err(error) => {
+ if error.kind() != std::io::ErrorKind::NotFound {
+ return Err(ConfigParseError {
+ origin: ConfigOrigin::File(src.to_owned()),
+ line,
+ message: format_bytes!(
+ b"cannot include {} ({})",
+ filename_bytes,
+ format_bytes::Utf8(error)
+ ),
+ }
+ .into());
+ }
+ }
+ }
} else if let Some(_) = EMPTY_RE.captures(&bytes) {
} else if let Some(m) = SECTION_RE.captures(&bytes) {
section = m[1].to_vec();
To: SimonSapin, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list