Hi,

I've been working on implementing some of the pieces we need to continue the migration to the Haskell zlib [1] in the face of the repos out there with corrupted CRCs [2].

So far I've updated zlib to report errors in a way that also returns the data produced so far and allows the caller to decide whether to use it, and updated the file reading code to make use of this interface and produce a warning. You can look at the code for this work here [3]. I designed the zlib changes together with Duncan and have now submitted them to him.

The next issue is how to actually repair the broken files. Once the relevant files have been appropriately identified, the mechanics are straightforward, but I'd like to be sure that all possible cases are covered. Looking back through history, I think the corrupted files could have been written out by all versions of darcs >=1.0.4 and <2.2.0.

One question I have is whether it's possible for corrupted files to exist in places other than _darcs/patches. For example what about the global patch cache, and the hashed pristine? The answers to this question will determine how widely the repair command needs to operate.

My current plan is for the repair command to be a special option to darcs repair, --patchcrcs, which will *only* repair bad CRCs and nothing else. It will do so on all files it finds in _darcs/patches (and elsewhere if appropriate), rather than just the ones mentioned in the current inventory, because (a) that's actually easier and (b) I think it's a better idea.

Cheers,

Ganesh

[1] http://lists.osuosl.org/pipermail/darcs-users/2008-November/016276.html [2] http://lists.osuosl.org/pipermail/darcs-users/2008-November/016271.html
[3]
http://code.haskell.org/darcs/sprint-2009-04/{crcs-zlib,crcs-darcs}
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to