[darcs-users] darcs patch: Simplify build dependencies: put is_tag ... (and 2 more)

Florent Becker florent.becker at ens-lyon.org
Tue Dec 9 09:59:17 UTC 2008


>
> some cleaning in progress.hs, move it to src/, split darcsish bits
> ------------------------------------------------------------------
> One objection: could you do the darcs replaces less invasively?
> Surely you can ask the shell to give you a list of files that
> mention Darcs.Progress and only do darcs replace on those?
>
> Maybe that grep foo | xargs darcs replace foo bar idiom should
> be documented somewhere.

Ok, I'll do that

> [ah, if only we had darcs transplant already!]
>
darcs record --working-dir is next on my todo list.

> resolve issue1165: tag feedback for progress in get
> ---------------------------------------------------
>> +-- | Evaluate an 'RL' list and report progress. In addition to  
>> printing
>> +-- the number of patches we got, show the name of the last tag we  
>> got.
>> +progressRLShowTags :: String -> RL (PatchInfoAnd p) C(x y)
>> +		   -> RL (PatchInfoAnd p) C(x y)
>> +progressRLShowTags _ NilRL = NilRL
>> +progressRLShowTags k (x:<:xs) = if l < minlist then x:<:xs
>> +                                       else startit x :<: pl xs
>> +    where l = lengthRL (x:<:xs)
>> +          startit y = unsafePerformIO $ do beginTedious k
>> +                                           tediousSize k l
>> +                                           return y
>> +          pl :: RL (PatchInfoAnd p) C(x y) -> RL (PatchInfoAnd p)  
>> C(x y)
>> +          pl NilRL = NilRL
>> +          pl (y:<:NilRL) = unsafePerformIO $ do endTedious k
>> +                                                return (y:<:NilRL)
>> +          pl (y:<:ys) =
>> +              if is_tag iy
>> +              then finishedOne k ("back to "++ just_name iy) y :<:  
>> pl ys
>> +              else progressKeepLatest k y :<: pl ys
>> +                  where
>> +                    iy = info y
>
> I don't understand the progress reporting code in general yet.  Maybe
> you can explain the basic principle here?  My guess we just march
> forward as usual, updating the counter at each patch, and if the patch
> happens to be a tag we spit out the tag name.
>
Exactly. And if the patch is not a tag, we are careful not to  
overwrite the last
tag's name with Nothing. Hence, we use progressKeepLatest instead of  
just
progress.
>
> The wording 'back to' might be a bit confusing.  Maybe it's worth
> checking with #darcs for an alternative?
>
Ok, any native speaker with a fine idea?



More information about the darcs-users mailing list