Philip Martin <phi...@codematters.co.uk> writes:

> There are a couple of options:
>
>   A) disable rep-caching by editing fsfs.conf inside the repository
>
>   B) reset the mapping by deleting/renaming the file db/rep-cache.db
>      inside the repository (but please rename rather than delete if you
>      want to help us identify the corruption)
>
> Doing either of these should allow the commit to succeed.

To verify the corruption start with the rep-cache:

  sqlite3 db/rep-cache.db "select * from rep_cache where 
hash='db11617ef1454332336e00abc311d44bc698f3b3'"

That should give you five numbers: the hash, the revision (604440), the
offset, the size and the expanded size.

Then examine the revision file for r604440.  It could be unpacked:

  grep -a "^text: 604440.*/_" db/revs/604/604440

or packed:

  grep -a "^text: 604440.*/_" db/revs/604.pack/pack

One of the lines from grep should contain the hash and that line should
start:

  text: 604440

followed by three more numbers then hashes and other stuff.  The three
numbers are the offset, size and expanded size and should match the
values from the rep-cache but I suspect the rep-cache has the wrong
offset.

-- 
Philip

Reply via email to