On Wed, Nov 19, 2008 at 6:18 PM, Eric Kow <[EMAIL PROTECTED]> wrote: > Dmitry: how do you feel about reviewing this one? I'm asking > specifically because I want to have more people looking into > the "deep" parts of darcs and starting to understand it.
Will do. "Understand" part can take time, but should be fun ;) Regards, Dmitry > > Hi David, > > On Wed, Nov 19, 2008 at 10:06:37 -0500, David Roundy wrote: >> Here's a fix for issue1043 > > Hooray! > >> (which recently bit a friend) > > Boo. This also bit us a few times (although only in the working > directory, with the workaround being to revert some stuff before > pulling more patches). Trent's also submitted a duplicate of > this variant of issue1043: > http://bugs.darcs.net/issue1198 > > And speaking of deep bugs, I still need to locate a sufficiently large > round tuit to boil > http://bugs.darcs.net/issue1211 > down into a test case. > >> Wed Nov 19 10:02:34 EST 2008 David Roundy <[EMAIL PROTECTED]> >> * resolve issue1043: avoid use of sort_coalesceFL in Patch.Real. >> The trouble was that sort_coalesceFL does the "coalescing" which isn't >> governed by strict rules. This might have been fixed by changing >> sort_coalesceFL to also run canonize, but the cleaner solution is to >> simply acknowledge that what I really wanted was just to join together >> pairs of inverses, which is much easier than the problem >> sort_coalesceFL is trying to solve. >> > > Content-Description: A darcs patch for your repository! >> >> New patches: >> >> [resolve issue1043: avoid use of sort_coalesceFL in Patch.Real. >> David Roundy <[EMAIL PROTECTED]>**20081119150234 >> Ignore-this: 79003144c8571ef746108e09192cb4ed >> The trouble was that sort_coalesceFL does the "coalescing" which isn't >> governed by strict rules. This might have been fixed by changing >> sort_coalesceFL to also run canonize, but the cleaner solution is to >> simply acknowledge that what I really wanted was just to join together >> pairs of inverses, which is much easier than the problem >> sort_coalesceFL is trying to solve. >> ] hunk ./src/Darcs/Patch/Real.hs 33 >> import Data.List ( partition, nub ) >> import Darcs.Patch.Prim ( Prim, FromPrim(..), ToFromPrim(..), Conflict(..), >> Effect(..), >> showPrim, FileNameFormat(NewFormat), >> - sort_coalesceFL, IsConflictedPrim(..), >> ConflictState(..) ) >> + IsConflictedPrim(..), ConflictState(..) ) >> import Darcs.Patch.Read ( readPrim ) >> import Darcs.Patch.Patchy >> import Darcs.Ordered >> hunk ./src/Darcs/Patch/Real.hs 126 >> case merge (ps :\/: qs) of >> qs' :/\: _ -> mcn (Sealed (c >> +>+ ps +>+ qs'):zs) >> >> -sort_coalesce_effects :: FL RealPatch C(x y) -> FL Prim C(x y) >> -sort_coalesce_effects = sort_coalesceFL . effect >> +sort_coalesce_effects :: Effect p => p C(x y) -> FL Prim C(x y) >> +sort_coalesce_effects = join_inverses . effect >> + where join_inverses :: FL Prim C(x y) -> FL Prim C(x y) >> + join_inverses NilFL = NilFL >> + join_inverses (p:>:ps) = case removeFL (invert p) ps' of >> + Just ps'' -> ps'' >> + Nothing -> p :>: ps' >> + where ps' = join_inverses ps >> >> assertConsistent :: RealPatch C(x y) -> RealPatch C(x y) >> assertConsistent x = assertDoc (do e <- is_consistent x >> hunk ./src/Darcs/Patch/Real.hs 175 >> a:>p':>b -> >> do (b',xs') <- mac b xs >> goneby >> --traceDoc (greenText >> "foo1" $$ >> - -- showPatch >> (sort_coalesceFL $ >> - -- >> effect $ p':<:a)) $ Just () >> - NilFL <- return $ >> sort_coalesceFL $ effect $ p':<:a >> + -- showPatch >> (sort_coalesce_effects $ p':<:a)) $ Just () >> + NilFL <- return $ >> sort_coalesce_effects $ p':<:a >> return (reverseRL >> (p':<:a)+>+b', xs') >> `mplus` do NilFL <- >> return goneby >> hunk ./src/Darcs/Patch/Real.hs 179 >> - NilFL <- >> return $ sort_coalesceFL $ >> - >> effect (p:<:ps) >> + NilFL <- >> return $ sort_coalesce_effects (p:<:ps) >> return >> (reverseRL (p:<:ps), >> >> mapFL_FL Normal xs) >> Right (l:>p'') -> >> hunk ./src/Darcs/Patch/Real.hs 190 >> a:>p':>b -> >> do (b',xs') <- mac b xs >> goneby >> --traceDoc (greenText >> "foo2" $$ >> - -- showPatch >> (sort_coalesceFL $ >> - -- >> effect $ p':<:a)) $ Just () >> - NilFL <- return $ >> sort_coalesceFL $ effect $ p':<:a >> + -- showPatch >> (sort_coalesce_effects $ p':<:a)) $ Just () >> + NilFL <- return $ >> sort_coalesce_effects $ p':<:a >> return $ (reverseRL >> (p':<:a)+>+b', xs') >> >> geteff :: [Non RealPatch C(x)] -> FL Prim C(x y) -> ([Non RealPatch C(x)], >> FL RealPatch C(x y)) >> replace ./src/Darcs/Patch/Real.hs [A-Za-z_0-9] sort_coalesce_effects >> join_effects >> > > -- > Eric Kow <http://www.nltg.brighton.ac.uk/home/Eric.Kow> > PGP Key ID: 08AC04F9 > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.9 (GNU/Linux) > > iEYEARECAAYFAkkkLk0ACgkQBUrOwgisBPnBGQCbBLaoqUbLHKkOhxjO0plI6Hre > YxAAmwVuK028SoSUT4J5aPEHXaErrZOR > =YlX8 > -----END PGP SIGNATURE----- > > _______________________________________________ darcs-users mailing list [email protected] http://lists.osuosl.org/mailman/listinfo/darcs-users
