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

Reply via email to