On Thu, Aug 13, 2009 at 8:48 AM, Petr Rockai <[email protected]> wrote:
> Hi again, > > Max Brown <[email protected]> writes: > > Here is what I did in the end, and this seems to have worked: > > 1) I pulled patches until I got to the patch that was failing. > > 2) I tried to apply the patch manually to see why it was failing (it > > replaced a line, where the text to be replaced in the actual file was > > different from the text that the patch wanted to replace...? I don't > > know how I managed to create that confusion in the first place.) > This sounds like a typical case of pristine corruption. Plain (non-hashed) > repositories are very susceptible to this, since they cannot detect the > problem > until they try to apply the resulting patch on a non-corrupt version of the > pristine (which could be months or years after the patch was first created, > in > private repositories... even for branches of public repositories, > discovering > this can take a rather long time). That's also why hashed repositories are > strongly encouraged. One more reason why older plain repos were suseptible to this: We didn't have type witnesses in the source code preventing improper sequence manipulations back then. And we still don't have them in some of the older repository handling code (separate from patch sequence manipulating). The hashed repository code does use them to some degree, and now all the core patch manipulation code has them. In other words, things are safer these days as we've eliminated an entire class of bugs at compile time. Now if I could just find some time to finish adding type witnesses to all the monadic code. Jason
_______________________________________________ darcs-users mailing list [email protected] http://lists.osuosl.org/mailman/listinfo/darcs-users
