Continuing with the ByteString conversion marathon, today worked on converting the metadata types. Actually, metadata field names made more sense to change to Text, since they're limited to a subset of utf-8.

I lost 2 hours to a puzzling quickcheck failure of metadata serialization. It turned out to involve unicode non-breaking spaces. Aaargh. Otherwise, fairly straightforward changes, but metadata is used all over git-annex, so the final patch was nearly 1000 lines.

Benchmark time:

setting metadata in 1000 files...... 1% speedup
getting metadata from 1000 files.... 0.5% speedup
finding a single file out of 1000 that has a given metadata value... 5% speedup