diff --git a/git-ref/src/store/file/find.rs b/git-ref/src/store/file/find.rs index f709420b99..f60c85b8be 100644 --- a/git-ref/src/store/file/find.rs +++ b/git-ref/src/store/file/find.rs @@ -124,7 +124,12 @@ impl file::Store { }; let relative_path = base.join(inbetween).join(relative_path); - let contents = match self.ref_contents(&relative_path)? { + let contents = match self + .ref_contents(&relative_path) + .map_err(|err| Error::ReadFileContents { + err, + path: relative_path.to_owned(), + })? { None => { if is_definitely_absolute { if let Some(packed) = packed { @@ -302,9 +307,8 @@ mod error { from() source(err) } - ReadFileContents(err: io::Error) { - display("The ref file could not be read in full") - from() + ReadFileContents{err: io::Error, path: PathBuf} { + display("The ref file '{}' could not be read in full", path.display()) source(err) } ReferenceCreation{ err: file::loose::reference::decode::Error, relative_path: PathBuf } { diff --git a/git-ref/src/store/file/loose/iter.rs b/git-ref/src/store/file/loose/iter.rs index 428ddbbb55..f745e3c1b4 100644 --- a/git-ref/src/store/file/loose/iter.rs +++ b/git-ref/src/store/file/loose/iter.rs @@ -128,7 +128,10 @@ impl Iterator for Loose { self.buf.clear(); f.read_to_end(&mut self.buf) }) - .map_err(loose::Error::ReadFileContents) + .map_err(|err| loose::Error::ReadFileContents { + err, + path: validated_path.to_owned(), + }) .and_then(|_| { let relative_path = validated_path .strip_prefix(&self.ref_paths.base) @@ -234,8 +237,8 @@ pub mod loose { display("The file system could not be traversed") source(err) } - ReadFileContents(err: io::Error) { - display("The ref file could not be read in full") + ReadFileContents{err: io::Error, path: PathBuf} { + display("The ref file '{}' could not be read in full", path.display()) source(err) } ReferenceCreation{ err: file::loose::reference::decode::Error, relative_path: PathBuf } { diff --git a/git-ref/src/store/file/overlay_iter.rs b/git-ref/src/store/file/overlay_iter.rs index 61304f2e6a..c343994c2f 100644 --- a/git-ref/src/store/file/overlay_iter.rs +++ b/git-ref/src/store/file/overlay_iter.rs @@ -64,7 +64,10 @@ impl<'p, 's> LooseThenPacked<'p, 's> { self.buf.clear(); f.read_to_end(&mut self.buf) }) - .map_err(Error::ReadFileContents)?; + .map_err(|err| Error::ReadFileContents { + err, + path: refpath.to_owned(), + })?; loose::Reference::try_from_path(name, &self.buf) .map_err(|err| Error::ReferenceCreation { err, @@ -245,8 +248,8 @@ mod error { display("The file system could not be traversed") source(err) } - ReadFileContents(err: io::Error) { - display("The ref file could not be read in full") + ReadFileContents{err: io::Error, path: PathBuf} { + display("The ref file '{}' could not be read in full", path.display()) source(err) } ReferenceCreation{ err: file::loose::reference::decode::Error, relative_path: PathBuf } {