Re: Error:non-monotonic index after failed recursive "sed" command
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 14, 2013, 19:06 UTC
- Message-ID
- <7v622zbn3s.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <50F3F852.8060800@viscovery.net>
Johannes Sixt <j.sixt@viscovery.net> writes:
Show 24 quoted lines
> Am 1/14/2013 12:40, schrieb George Karpenkov:
>> I've managed to corrupt my very valuable repository with a recursive
>> sed which went wrong.
>> I wanted to convert all tabs to spaces with the following command:
>>
>> find ./ -name '*.*' -exec sed -i 's/\t/ /g' {} \;
>>
>> I think that has changed not only the files in the repo, but the data
>> files in .git directory itself. As a result, my index became
>> corrupted, and almost every single command dies:
>>
>>> git log
>> error: non-monotonic index
>> ..git/objects/pack/pack-314b1944adebea645526b6724b2044c1313241f5.idx
>> error: non-monotonic index
>> ..git/objects/pack/pack-75c95b0defe1968b61e4f4e1ab7040d35110bfdc.idx
>> ....
> ...
> Try the reverse edit:
>
> find .git -name '*.*' -exec sed -i 's/ /\t/g' {} \;
>
> Remove .git/index; it can be reconstructed (of course, assuming you
> started all this with a clean index; if not, you lose the staged changes).Everybody seems to be getting an impression that .idx is the only thing that got corrupt. Where does that come from?
I do not see anything that prevents the original command line from touching *.pack files. Loose objects may have been left unmolested as their names do not match '*.*', though.