Re: [PUB]corrupt repos does not return error with `git fsck`
From: Jeff King <hidden>
Date: 2016-06-15 23:04:50
On Wed, May 20, 2015 at 02:22:19PM -0400, Jeff King wrote:
On Wed, May 20, 2015 at 11:02:14AM -0700, Stefan Beller wrote:quoted
$ git clone https://github.com/fmitha/SICL cd SICL $ git show 280c12ab49223c64c6f914944287a7d049cf4dd0 fatal: bad object 280c12ab49223c64c6f914944287a7d049cf4dd0 $ git show 12323213123 # just to be sure to have a different error message for non existing objects. fatal: ambiguous argument '12323213123': unknown revision or path not in the working tree.Yeah, this is well-known. If you give a partial hash, the error comes from get_sha1(), which says "hey, this doesn't look like anything I know about". If you feed a whole hash, we skip all that and say "well, you _definitely_ meant this sha1", and then later code complains when it cannot be read. We could add a has_sha1_file() check in get_sha1 for this case. I can't think offhand of any reason it would need to be called with a non-existent object, but there may be some lurking corner case (e.g., "cat-file -e" or something).
I should have looked before replying. It would indeed break "cat-file -e" horribly. So the right answer may be to just improve the "bad object" message (probably by checking has_sha1_file there and diagnosing it either as missing or corrupted). -Peff