rhg: ignore readonly FS error when saving dirstate stable
authorArseniy Alekseyev <aalekseyev@janestreet.com>
Thu, 01 Aug 2024 13:04:38 +0100
branchstable
changeset 51759 955084b4f74f
parent 51754 a431b41299fc
child 51760 7d9bd50afe3d
rhg: ignore readonly FS error when saving dirstate The error is already ignored when the .hg directory is read-only, so this is only fair. (the python hg is silent on readonly fs, too)
rust/Cargo.lock
rust/rhg/Cargo.toml
rust/rhg/src/commands/status.rs
--- a/rust/Cargo.lock	Thu Aug 01 16:34:37 2024 +0200
+++ b/rust/Cargo.lock	Thu Aug 01 13:04:38 2024 +0100
@@ -734,9 +734,9 @@
 
 [[package]]
 name = "libc"
-version = "0.2.137"
+version = "0.2.155"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
 
 [[package]]
 name = "libm"
@@ -1178,6 +1178,7 @@
  "hg-core",
  "home",
  "lazy_static",
+ "libc",
  "log",
  "logging_timer",
  "rayon",
--- a/rust/rhg/Cargo.toml	Thu Aug 01 16:34:37 2024 +0200
+++ b/rust/rhg/Cargo.toml	Thu Aug 01 13:04:38 2024 +0100
@@ -24,3 +24,4 @@
 whoami = "1.4"
 which = "4.3.0"
 rayon = "1.7.0"
+libc = "0.2.155"
--- a/rust/rhg/src/commands/status.rs	Thu Aug 01 16:34:37 2024 +0200
+++ b/rust/rhg/src/commands/status.rs	Thu Aug 01 13:04:38 2024 +0100
@@ -611,7 +611,11 @@
             log::info!("not writing dirstate from `status`: lock is held")
         }
         Err(LockError::Other(HgError::IoError { error, .. }))
-            if error.kind() == io::ErrorKind::PermissionDenied =>
+            if error.kind() == io::ErrorKind::PermissionDenied
+                || match error.raw_os_error() {
+                    None => false,
+                    Some(errno) => libc::EROFS == errno,
+                } =>
         {
             // `hg status` on a read-only repository is fine
         }