diff --git a/gix-status/src/index_as_worktree/function.rs b/gix-status/src/index_as_worktree/function.rs index 7e1b9c86465..82b50593091 100644 --- a/gix-status/src/index_as_worktree/function.rs +++ b/gix-status/src/index_as_worktree/function.rs @@ -348,7 +348,7 @@ impl<'index> State<'_, 'index> { Err(err) => return Err(Error::Io(err)), }; self.symlink_metadata_calls.fetch_add(1, Ordering::Relaxed); - let metadata = match worktree_path.symlink_metadata() { + let metadata = match gix_index::fs::Metadata::from_path_no_follow(worktree_path) { Ok(metadata) if metadata.is_dir() => { // index entries are normally only for files/symlinks // if a file turned into a directory it was removed diff --git a/gix-worktree-state/src/checkout/entry.rs b/gix-worktree-state/src/checkout/entry.rs index b913c3bbda3..77db18daa1e 100644 --- a/gix-worktree-state/src/checkout/entry.rs +++ b/gix-worktree-state/src/checkout/entry.rs @@ -161,7 +161,7 @@ where file.close()?; } - entry.stat = Stat::from_fs(&std::fs::symlink_metadata(dest)?)?; + entry.stat = Stat::from_fs(&gix_index::fs::Metadata::from_path_no_follow(dest)?)?; obj.data.len() } gix_index::entry::Mode::DIR => { @@ -285,7 +285,7 @@ pub(crate) fn finalize_entry( } // NOTE: we don't call `file.sync_all()` here knowing that some filesystems don't handle this well. // revisit this once there is a bug to fix. - entry.stat = Stat::from_fs(&file.metadata()?)?; + entry.stat = Stat::from_fs(&gix_index::fs::Metadata::from_file(&file)?)?; file.close()?; Ok(()) }