diff --git a/CHANGELOG.md b/CHANGELOG.md index d4c28ebcf7..208a90e48a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed bugs +* The `snapshot.max-new-file-size` option can now handle raw integer literals, + interpreted as a number of bytes, where previously it could only handle string + literals. This means that `snapshot.max-new-file-size="0"` and + `snapshot.max-new-file-size=0` are now equivalent. + ## [0.16.0] - 2024-04-03 ### Deprecations diff --git a/cli/tests/test_working_copy.rs b/cli/tests/test_working_copy.rs index e54437b28b..461125b7f6 100644 --- a/cli/tests/test_working_copy.rs +++ b/cli/tests/test_working_copy.rs @@ -20,7 +20,7 @@ fn test_snapshot_large_file() { test_env.jj_cmd_ok(test_env.env_root(), &["init", "repo", "--git"]); let repo_path = test_env.env_root().join("repo"); - test_env.add_config(r#"snapshot.max-new-file-size = "10""#); + test_env.add_config(r#"snapshot.max-new-file-size = 10"#); std::fs::write(repo_path.join("large"), "a lot of text").unwrap(); let stderr = test_env.jj_cmd_failure(&repo_path, &["files"]); insta::assert_snapshot!(stderr, @r###" diff --git a/lib/src/settings.rs b/lib/src/settings.rs index 1eb572469b..475f091f4c 100644 --- a/lib/src/settings.rs +++ b/lib/src/settings.rs @@ -357,27 +357,22 @@ impl<'de> serde::Deserialize<'de> for HumanByteSize { write!(formatter, "a size in bytes with an optional binary unit") } - fn visit_u64(self, v: u64) -> Result - where - E: Error, - { - Ok(HumanByteSize(v)) - } - fn visit_str(self, v: &str) -> Result where E: Error, { - let bytes = parse_human_byte_size(v).map_err(Error::custom)?; - Ok(HumanByteSize(bytes)) + let res = v.parse::(); + match res { + Ok(bytes) => Ok(HumanByteSize(bytes)), + Err(_) => { + let bytes = parse_human_byte_size(v).map_err(Error::custom)?; + Ok(HumanByteSize(bytes)) + } + } } } - if deserializer.is_human_readable() { - deserializer.deserialize_any(Visitor) - } else { - deserializer.deserialize_u64(Visitor) - } + deserializer.deserialize_str(Visitor) } }