| @@ -19,28 +19,31 @@ pub enum Error<E: std::error::Error + 'static> { · 18 unmodified lines |
| 19 | #[error(transparent)] | 19 | #[error(transparent)] |
| 20 | Commit(#[from] file::commit::Error), | 20 | Commit(#[from] file::commit::Error), |
| 21 | #[error("commit at file position {pos} has invalid ID {id}")] | 21 | #[error("commit at file position {pos} has invalid ID {id}")] |
| 22 | CommitId { id: git_hash::Id, pos: file::Position }, | 22 | CommitId { |
| | 23 | id: git_hash::ObjectId, |
| | 24 | pos: file::Position, |
| | 25 | }, |
| 23 | #[error("commit at file position {pos} with ID {id} is out of order relative to its predecessor with ID {predecessor_id}")] | 26 | #[error("commit at file position {pos} with ID {id} is out of order relative to its predecessor with ID {predecessor_id}")] |
| 24 | CommitsOutOfOrder { | 27 | CommitsOutOfOrder { |
| 25 | id: git_hash::Id, | 28 | id: git_hash::ObjectId, |
| 26 | pos: file::Position, | 29 | pos: file::Position, |
| 27 | predecessor_id: git_hash::Id, | 30 | predecessor_id: git_hash::ObjectId, |
| 28 | }, | 31 | }, |
| 29 | #[error("commit-graph filename should be {0}")] | 32 | #[error("commit-graph filename should be {0}")] |
| 30 | Filename(String), | 33 | Filename(String), |
| 31 | #[error("commit {id} has invalid generation {generation}")] | 34 | #[error("commit {id} has invalid generation {generation}")] |
| 32 | Generation { generation: u32, id: git_hash::Id }, | 35 | Generation { generation: u32, id: git_hash::ObjectId }, |
| 33 | #[error("checksum mismatch: expected {expected}, got {actual}")] | 36 | #[error("checksum mismatch: expected {expected}, got {actual}")] |
| 34 | Mismatch { | 37 | Mismatch { |
| 35 | actual: git_hash::Id, | 38 | actual: git_hash::ObjectId, |
| 36 | expected: git_hash::Id, | 39 | expected: git_hash::ObjectId, |
| 37 | }, | 40 | }, |
| 38 | #[error("{0}")] | 41 | #[error("{0}")] |
| 39 | Processor(#[source] E), | 42 | Processor(#[source] E), |
| 40 | #[error("commit {id} has invalid root tree ID {root_tree_id}")] | 43 | #[error("commit {id} has invalid root tree ID {root_tree_id}")] |
| 41 | RootTreeId { | 44 | RootTreeId { |
| 42 | id: git_hash::Id, | 45 | id: git_hash::ObjectId, |
| 43 | root_tree_id: git_hash::Id, | 46 | root_tree_id: git_hash::ObjectId, |
| 44 | }, | 47 | }, |
| 45 | } | 48 | } |
| 46 | | 49 | |
| @@ -142,7 +145,7 @@ impl File { · 95 unmodified lines |
| 142 | /// checksum itself. | 145 | /// checksum itself. |
| 143 | /// | 146 | /// |
| 144 | /// Return the actual checksum on success or `(actual checksum, expected checksum)` if there is a mismatch. | 147 | /// Return the actual checksum on success or `(actual checksum, expected checksum)` if there is a mismatch. |
| 145 | pub fn verify_checksum(&self) -> Result<git_hash::Id, (git_hash::Id, git_hash::Id)> { | 148 | pub fn verify_checksum(&self) -> Result<git_hash::ObjectId, (git_hash::ObjectId, git_hash::ObjectId)> { |
| 146 | // Even though we could use git_features::hash::bytes_of_file(…), this would require using our own | 149 | // Even though we could use git_features::hash::bytes_of_file(…), this would require using our own |
| 147 | // Error type to support io::Error and Mismatch. As we only gain progress, there probably isn't much value | 150 | // Error type to support io::Error and Mismatch. As we only gain progress, there probably isn't much value |
| 148 | // as these files are usually small enough to process them in less than a second, even for the large ones. | 151 | // as these files are usually small enough to process them in less than a second, even for the large ones. |
| @@ -150,7 +153,7 @@ impl File { · 1 unmodified line |
| 150 | let data_len_without_trailer = self.data.len() - SHA1_SIZE; | 153 | let data_len_without_trailer = self.data.len() - SHA1_SIZE; |
| 151 | let mut hasher = git_features::hash::Sha1::default(); | 154 | let mut hasher = git_features::hash::Sha1::default(); |
| 152 | hasher.update(&self.data[..data_len_without_trailer]); | 155 | hasher.update(&self.data[..data_len_without_trailer]); |
| 153 | let actual = git_hash::Id::new_sha1(hasher.digest()); | 156 | let actual = git_hash::ObjectId::new_sha1(hasher.digest()); |
| 154 | | 157 | |
| 155 | let expected = self.checksum(); | 158 | let expected = self.checksum(); |
| 156 | if actual.to_borrowed() == expected { | 159 | if actual.to_borrowed() == expected { |
| @@ -172,8 +175,10 @@ fn verify_split_chain_filename_hash( · 15 unmodified lines |
| 172 | .and_then(|filename| filename.to_str()) | 175 | .and_then(|filename| filename.to_str()) |
| 173 | .and_then(|filename| filename.strip_suffix(".graph")) | 176 | .and_then(|filename| filename.strip_suffix(".graph")) |
| 174 | .and_then(|stem| stem.strip_prefix("graph-")) | 177 | .and_then(|stem| stem.strip_prefix("graph-")) |
| 175 | .map_or(Ok(()), |hex| match git_hash::Id::from_40_bytes_in_hex(hex.as_bytes()) { | 178 | .map_or(Ok(()), |hex| { |
| 176 | Ok(actual) if actual.to_borrowed() == expected => Ok(()), | 179 | match git_hash::ObjectId::from_40_bytes_in_hex(hex.as_bytes()) { |
| 177 | _ => Err(format!("graph-{}.graph", expected.to_sha1_hex().as_bstr())), | 180 | Ok(actual) if actual.to_borrowed() == expected => Ok(()), |
| | 181 | _ => Err(format!("graph-{}.graph", expected.to_sha1_hex().as_bstr())), |
| | 182 | } |
| 178 | }) | 183 | }) |
| 179 | } | 184 | } |