summaryrefslogtreecommitdiffstats
path: root/vendor/gix-index/src/file/verify.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gix-index/src/file/verify.rs')
-rw-r--r--vendor/gix-index/src/file/verify.rs34
1 files changed, 18 insertions, 16 deletions
diff --git a/vendor/gix-index/src/file/verify.rs b/vendor/gix-index/src/file/verify.rs
index 6743b37a7..3890acd95 100644
--- a/vendor/gix-index/src/file/verify.rs
+++ b/vendor/gix-index/src/file/verify.rs
@@ -14,8 +14,6 @@ mod error {
actual: gix_hash::ObjectId,
expected: gix_hash::ObjectId,
},
- #[error("Checksum of in-memory index wasn't computed yet")]
- NoChecksum,
}
}
pub use error::Error;
@@ -23,19 +21,23 @@ pub use error::Error;
impl File {
/// Verify the integrity of the index to assure its consistency.
pub fn verify_integrity(&self) -> Result<(), Error> {
- let checksum = self.checksum.ok_or(Error::NoChecksum)?;
- let num_bytes_to_hash = self.path.metadata()?.len() - checksum.as_bytes().len() as u64;
- let should_interrupt = AtomicBool::new(false);
- let actual = gix_features::hash::bytes_of_file(
- &self.path,
- num_bytes_to_hash as usize,
- checksum.kind(),
- &mut gix_features::progress::Discard,
- &should_interrupt,
- )?;
- (actual == checksum).then_some(()).ok_or(Error::ChecksumMismatch {
- actual,
- expected: checksum,
- })
+ let _span = gix_features::trace::coarse!("gix_index::File::verify_integrity()");
+ if let Some(checksum) = self.checksum {
+ let num_bytes_to_hash = self.path.metadata()?.len() - checksum.as_bytes().len() as u64;
+ let should_interrupt = AtomicBool::new(false);
+ let actual = gix_features::hash::bytes_of_file(
+ &self.path,
+ num_bytes_to_hash as usize,
+ checksum.kind(),
+ &mut gix_features::progress::Discard,
+ &should_interrupt,
+ )?;
+ (actual == checksum).then_some(()).ok_or(Error::ChecksumMismatch {
+ actual,
+ expected: checksum,
+ })
+ } else {
+ Ok(())
+ }
}
}