On Tue, Jul 26, 2011 at 11:39 AM, Jon Seymour <jon.seymour@gmail.com> wrote:
Show 40 quoted lines
> On Tue, Jul 26, 2011 at 8:44 AM, Clemens Buchacher <drizzd@aon.at> wrote:
>> On Tue, Jul 26, 2011 at 12:34:50AM +0200, Clemens Buchacher wrote:
>>> On Sun, Jul 24, 2011 at 02:48:20AM +1000, Jon Seymour wrote:
>>> >
>>> > I was wondering if there is a quick way to identify commits that
>>> > reference missing trees or blobs as identified by git fsck?
>>>
>>> The following command has served me well for this purpose. I apply
>>> it to each ref in git-for-each-ref:
>>>
>>> $ git rev-list --objects $ref | git cat-file --batch-check
>>
>> Oh, and here is the output you get for different situations. Exit
>> status is always 0 unfortunately.
>>
>> - missing blob
>>
>> fatal: missing blob object '78981922613b2afb6025042ff6bd878ac1994e85'
>> d165426eba5cb4c125bd6e100d1b5de7298eb601 commit 168
>> 848740929e99bda0e1a9783e7daa314c5a9732d5 missing
>>
>> - missing tree
>>
>> error: Could not read 84bf061d017459b4be45a49b8d8dc945e7a7fdf5
>> fatal: bad tree object 84bf061d017459b4be45a49b8d8dc945e7a7fdf5
>> abce3ad54002628ab74d72b7e2baa687abcb77f9 commit 168
>>
>> - missing parent commit
>>
>> error: Could not read 3aa66f30aa9799ac38a53b551ac4faca9cbd400b
>> fatal: Failed to traverse parents of commit 3cfb98a3cbd3f42852e20bd011c7b835b8750df7
>>
>> Clemens
>>
>
> Thanks for that.
>
> Junio, also pointed out in another thread that git rev-list --objects
> is quite useful for this purpose. His variant used git pack-objects
> which apparently does exit with zero status code.