[darcs-users] [patch277] Resolve issue 1176: caches interfere with --remote-rep...
Eric Kow
kowey at darcs.net
Tue Jun 15 15:32:43 UTC 2010
I'll apply this first patch, but I have question about the second one
Resolve issue 1176: caches interfere with --remote-repo flag
------------------------------------------------------------
> - addLocal repo repos = modifyCache repo $ \ (Ca cache) -> Ca $ [Cache DarcsCache.Repo NotWritable r | r <- repos, isFile r ] ++ cache
> + addReposToCache repos (Ca cache) = Ca $ [ toReadOnlyCache r | r <- repos ] ++ cache
> + toReadOnlyCache = Cache DarcsCache.Repo NotWritable
Adolfo explained to me on IRC that the defaultrepo/remote repo are
actually treated as explicitly requested repos (via Darcs.RunCommand)
if no other arguments are passed.
So this looks fine.
I'll just say that
> + addReposToCache repos (Ca cache) = Ca $ [ toReadOnlyCache r | r <- repos ] ++ cache
probably is cleaner written like
addReposToCache repos (Ca cache) = Ca $ map toReadOnlyCache repos ++ cache
but I don't mind either way
> --- | Modifies the cache of a given repository with the function f
> +-- | Modifies the cache of a given repository with the function f.
> +-- No matter which modification is done over the cache, it always
> +-- returns a sorted cache where local < http < ssh
> modifyCache :: FORALL(p r u t) (RepoPatch p) => Repository p C(r u t) -> (Cache -> Cache) -> Repository p C(r u t)
> hunk ./src/Darcs/Repository/InternalTypes.hs 53
> -modifyCache (Repo dir opts rf (DarcsRepository pristine cache)) f =
> - Repo dir opts rf (DarcsRepository pristine (f cache))
> -
> +modifyCache (Repo dir opts rf (DarcsRepository pristine cache)) f = Repo dir opts rf dr
> + where dr = DarcsRepository pristine newCache
> + newCache = ( \ (Ca c) -> Ca $ sortBy compareByLocality c) $ f cache
Maybe Ca should be a Functor so you could just fmap (sortBy compareByLocality)
on it? (This could end up being one of those really bad ideas)
Removing duplicated entries in addReposToCache
----------------------------------------------
> builes.adolfo at googlemail.com**20100615150306
> Ignore-this: 47fbcc3221eee93719681bad059dafe2
> ] hunk ./src/Darcs/Commands/Pull.lhs 181
> applyPatches opts' repository r
> where
> opts' = mergeOpts opts
> - addReposToCache repos (Ca cache) = Ca $ [ toReadOnlyCache r | r <- repos ] ++ cache
> + addReposToCache repos (Ca cache) = Ca $ nub $ [ toReadOnlyCache r | r <- repos ] ++ cache
> toReadOnlyCache = Cache DarcsCache.Repo NotWritable
This seems like an improvement anyway, but why don't we nub in
modifyCache since we're happy to sort there?
--
Eric Kow <http://www.nltg.brighton.ac.uk/home/Eric.Kow>
PGP Key ID: 08AC04F9
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.osuosl.org/pipermail/darcs-users/attachments/20100615/87b15963/attachment.pgp>
More information about the darcs-users
mailing list