Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-core/src/revlog/index.rs @ 52069:652149ed64f0
rust: improve `InvalidRevision` error message
I encountered this when debugging earlier and felt like we were losing some
information along the way, which we were!
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Tue, 01 Oct 2024 13:20:40 +0200 |
parents | 609700e5d8df |
children | f2eab4967bfc |
line wrap: on
line diff
--- a/rust/hg-core/src/revlog/index.rs Mon Sep 30 17:19:35 2024 +0200 +++ b/rust/hg-core/src/revlog/index.rs Tue Oct 01 13:20:40 2024 +0200 @@ -829,7 +829,7 @@ } let [mut p1, mut p2] = self .parents(rev) - .map_err(|_| RevlogError::InvalidRevision)?; + .map_err(|e| RevlogError::InvalidRevision(e.to_string()))?; while let Some(p1_entry) = self.get_entry(p1) { if p1_entry.compressed_len() != 0 || p1.0 == 0 { break; @@ -839,9 +839,9 @@ if parent_base.0 == p1.0 { break; } - p1 = self - .check_revision(parent_base) - .ok_or(RevlogError::InvalidRevision)?; + p1 = self.check_revision(parent_base).ok_or( + RevlogError::InvalidRevision(parent_base.to_string()), + )?; } while let Some(p2_entry) = self.get_entry(p2) { if p2_entry.compressed_len() != 0 || p2.0 == 0 { @@ -852,16 +852,16 @@ if parent_base.0 == p2.0 { break; } - p2 = self - .check_revision(parent_base) - .ok_or(RevlogError::InvalidRevision)?; + p2 = self.check_revision(parent_base).ok_or( + RevlogError::InvalidRevision(parent_base.to_string()), + )?; } if base == p1.0 || base == p2.0 { return Ok(false); } rev = self .check_revision(base.into()) - .ok_or(RevlogError::InvalidRevision)?; + .ok_or(RevlogError::InvalidRevision(base.to_string()))?; } Ok(rev == NULL_REVISION) }