rust/rhg/src/commands/status.rs
changeset 47965 f9e6f2bb721d
parent 47964 796206e74b10
child 47969 87e3f878e65f
--- a/rust/rhg/src/commands/status.rs	Mon Sep 13 18:09:10 2021 +0200
+++ b/rust/rhg/src/commands/status.rs	Mon Sep 13 18:48:48 2021 +0200
@@ -10,17 +10,13 @@
 use clap::{Arg, SubCommand};
 use hg;
 use hg::dirstate_tree::dispatch::DirstateMapMethods;
-use hg::errors::{HgError, IoResultExt};
+use hg::errors::HgError;
 use hg::manifest::Manifest;
 use hg::matchers::AlwaysMatcher;
 use hg::repo::Repo;
 use hg::utils::hg_path::{hg_path_to_os_string, HgPath};
 use hg::{HgPathCow, StatusOptions};
 use log::{info, warn};
-use std::convert::TryInto;
-use std::fs;
-use std::io::BufReader;
-use std::io::Read;
 
 pub const HELP_TEXT: &str = "
 Show changed files in the working directory
@@ -279,26 +275,7 @@
     })?;
     let contents_in_p1 = filelog_entry.data()?;
 
-    let fs_path = repo
-        .working_directory_vfs()
-        .join(hg_path_to_os_string(hg_path).expect("HgPath conversion"));
-    let hg_data_len: u64 = match contents_in_p1.len().try_into() {
-        Ok(v) => v,
-        Err(_) => {
-            // conversion of data length to u64 failed,
-            // good luck for any file to have this content
-            return Ok(true);
-        }
-    };
-    let fobj = fs::File::open(&fs_path).when_reading_file(&fs_path)?;
-    if fobj.metadata().when_reading_file(&fs_path)?.len() != hg_data_len {
-        return Ok(true);
-    }
-    for (fs_byte, &hg_byte) in BufReader::new(fobj).bytes().zip(contents_in_p1)
-    {
-        if fs_byte.when_reading_file(&fs_path)? != hg_byte {
-            return Ok(true);
-        }
-    }
-    Ok(false)
+    let fs_path = hg_path_to_os_string(hg_path).expect("HgPath conversion");
+    let fs_contents = repo.working_directory_vfs().read(fs_path)?;
+    return Ok(contents_in_p1 == &*fs_contents);
 }