[darcs-devel] darcs patch: add context to HashedRepo.copy_repo (and 2 more)
David Roundy
droundy at darcs.net
Tue Mar 11 14:43:22 UTC 2008
I'm afraid I don't really understand what you're doing with the Context
type. As you hint, it does look scary. I'm in a break in a conference
here (a short break), so I haven't much time to concentrate on this. Could
you write up a short explanation of why you added Context and what it's
supposed to do? In particular, I'd be interested in hearing what problem
it's supposed to solve. At a quick glance, it looks like a wrapper around
unsafeCoerceP, and if that's the case, then it definitely should be called
something like UnsafeContext, and we should strive not to use it. But
maybe it's not that bad. I was trying to concentrate on the Physics talk I
was listening to while reading your patch. The next session will be even
more interesting...
David
On Mon, Mar 10, 2008 at 06:59:47PM -0700, Jason Dagit wrote:
> David,
>
> This patch bundle allows HashedRepo to compile with type witnesses.
>
> The bad news is that the type I created to make this easier (Context),
> doesn't provide as strong of guarantees as the usual approach. But, I
> do feel like this works fairly well here. I can give context to PatchInfo's
> and then take it away when it's no longer needed/helpful.
>
> Please let me know what you think. If you can think of ways to improve
> this approach I'd be interested to entertain them.
>
> I also did some reorganization in the process of getting the types
> to work out that may not be strictly necessary. I import ReadPatch
> now in HashedRepo. I import it from Patchy, but it should probably
> be available from the same module that exports readPatch. I'd be happy
> to fix that up if you think it's the right thing to do.
>
> Thanks,
> Jason
>
> Sun Mar 9 16:33:44 PDT 2008 Jason Dagit <dagit at codersbase.com>
> * add context to HashedRepo.copy_repo
>
> Mon Mar 10 18:01:44 PDT 2008 Jason Dagit <dagit at codersbase.com>
> * make HashedRepo compile with type witnesses
>
> Mon Mar 10 18:55:33 PDT 2008 Jason Dagit <dagit at codersbase.com>
> * Rename constructor of Context to match type name and make it a newtype.
>
Content-Description: A darcs patch for your repository!
>
> New patches:
>
> [add context to HashedRepo.copy_repo
> Jason Dagit <dagit at codersbase.com>**20080309233344] hunk ./src/Darcs/Repository/HashedRepo.lhs 198
> write_tentative_inventory :: RepoPatch p => Cache -> [DarcsFlag] -> PatchSet p C(x) -> IO ()
> write_tentative_inventory c opts = write_either_inventory c opts "tentative_hashed_inventory"
>
> -copy_repo :: forall p. RepoPatch p => Repository p -> [DarcsFlag] -> String -> IO ()
> +copy_repo :: forall p C(r u t). RepoPatch p => Repository p C(r u t) -> [DarcsFlag] -> String -> IO ()
> copy_repo repo@(Repo outr _ _ _) opts inr = do
> createDirectoryIfMissing False (outr++"/_darcs/inventories")
> copyFileOrUrl opts (inr++"/_darcs/hashed_inventory") (outr++"/_darcs/hashed_inventory")
> [make HashedRepo compile with type witnesses
> Jason Dagit <dagit at codersbase.com>**20080311010144] {
> hunk ./GNUmakefile 118
> witnesses: src/Darcs/Patch/Real.hi src/Darcs/Patch/Properties.hi src/Darcs/Patch.hi \
> src/Darcs/Repository/ApplyPatches.hi src/Darcs/Patch/Bundle.hi \
> src/Darcs/Patch/Match.hi src/Darcs/Patch/Depends.hi src/Darcs/Repository/HashedIO.hi \
> - src/Darcs/Repository/InternalTypes.hi
> + src/Darcs/Repository/InternalTypes.hi src/Darcs/Repository/HashedRepo.hi
>
> DARCS_FILES := $(DARCS_FILES_DEPS)\
> $(patsubst %,src/%,$(MODULES_AUTOCONF))\
> hunk ./src/Darcs/HopefullyPrivate.lhs 38
> import Darcs.Patch.Prim ( Effect(..), Conflict(..) )
> import Darcs.Patch.Patchy ( Patchy, ReadPatch(..), Apply(..), Invert(..),
> ShowPatch(..), Commute(..) )
> -import Darcs.Patch.Ordered ( MyEq, unsafeCompare, (:>)(..), (:\/:)(..), (:/\:)(..) )
> -import Darcs.Sealed ( Sealed(Sealed), seal, mapSeal )
> +import Darcs.Patch.Ordered ( MyEq, unsafeCompare, (:>)(..), (:\/:)(..), (:/\:)(..), Context(..) )
> +import Darcs.Sealed ( Sealed(Sealed) )
> import Darcs.Utils ( prettyException )
>
> data Hopefully a C(x y) = Hopefully (SimpleHopefully a C(x y)) | Hashed String (SimpleHopefully a C(x y))
> hunk ./src/Darcs/HopefullyPrivate.lhs 116
> actually :: a C(x y) -> Hopefully a C(x y)
> actually = Hopefully . Actually
>
> -createHashed :: String -> (String -> IO (Sealed (a C(x)))) -> IO (Sealed (Hopefully a C(x)))
> -createHashed h f = do mapSeal (Hashed h) `fmap` unsafeInterleaveIO (f' `catchNonSignal` handler)
> +createHashed :: Context String C(x y) -> (Context String C(x y) -> IO (a C(x y))) -> IO (Hopefully a C(x y))
> +createHashed ch@(Con h) f = (Hashed h) `fmap` unsafeInterleaveIO (f' `catchNonSignal` handler)
> where
> hunk ./src/Darcs/HopefullyPrivate.lhs 119
> - f' = do Sealed x <- f h
> - return (Sealed (Actually x))
> - handler e = return $ seal $ Unavailable $ prettyException e
> + f' = f ch >>= (return . Actually)
> + handler e = return $ Unavailable $ prettyException e
>
> extractHash :: PatchInfoAnd p C(a b) -> Either (Named p C(a b)) String
> extractHash (PIAP _ (Hashed s _)) = Right s
> hunk ./src/Darcs/Patch/Ordered.lhs 22
> {-# OPTIONS -fglasgow-exts #-}
> #include "gadts.h"
> module Darcs.Patch.Ordered ( EqCheck(..), isEq, (:>)(..), (:<)(..), (:\/:)(..), (:/\:)(..),
> - FL(..), RL(..),Proof(..),
> + FL(..), RL(..),Proof(..),Context(..),
> #ifndef GADT_WITNESSES
> unsafeUnFL, unsafeFL, unsafeRL, unsafeUnRL,
> #endif
> hunk ./src/Darcs/Patch/Ordered.lhs 115
> (:<:) :: a C(y z) -> RL a C(x y) -> RL a C(x z)
> NilRL :: RL a C(x x)
>
> +data Context a C(x y) = Con a
> +
> nullFL :: FL a C(x z) -> Bool
> nullFL NilFL = True
> nullFL _ = False
> hunk ./src/Darcs/Repository/HashedRepo.lhs 52
> import Darcs.Repository.InternalTypes ( Repository(..), extractCache )
> import Darcs.Hopefully ( PatchInfoAnd, patchInfoAndPatch, n2pia, info,
> extractHash, createHashed )
> +import Darcs.Patch.Patchy ( ReadPatch )
> import Darcs.SlurpDirectory ( Slurpy, empty_slurpy, slurp_remove, slurp )
> import Darcs.Patch ( RepoPatch, Patchy, Named, showPatch, patch2patchinfo, readPatch )
> import Darcs.Patch.Depends ( commute_to_end, slightly_optimize_patchset )
> hunk ./src/Darcs/Repository/HashedRepo.lhs 57
> import Darcs.Patch.Info ( PatchInfo, showPatchInfo, human_friendly, readPatchInfo )
> -import Darcs.Patch.Ordered ( unsafeCoerceP )
> +import Darcs.Patch.Ordered ( Context(..), unsafeCoerceP, unsafeMap_l2f, reverseFL )
> import FileName ( fp2fn )
> import FastPackedString ( PackedString, nilPS, nullPS, readFilePS,
> gzReadFilePS, takePS, dropPS, dropWhilePS,
> hunk ./src/Darcs/Repository/HashedRepo.lhs 72
> #include "impossible.h"
> import Darcs.Patch.Ordered ( FL(..), RL(..),
> mapRL, mapFL, lengthRL )
> -import Darcs.Sealed ( Sealed(..), FlippedSeal(..), seal, unseal )
> +import Darcs.Sealed ( Sealed(..), FlippedSeal(..), seal )
>
> revert_tentative_changes :: IO ()
> revert_tentative_changes =
> hunk ./src/Darcs/Repository/HashedRepo.lhs 165
> read_repo_private :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag]
> -> FilePath -> FilePath -> IO (SealedPatchSet p)
> read_repo_private repo opts d iname =
> - do inventories <- read_inventory_private repo opts (d++"/_darcs") iname
> - parseinvs inventories
> - where read_patches [] = return NilRL
> - read_patches allis@((i1,h1):is1) =
> - do Sealed p <- createHashed h1 (const $ speculate h1 allis >> parse i1 h1)
> + do Sealed inventories <- read_inventory_private repo opts (d++"/_darcs") iname
> + ps <- unsafeInterleaveIO $ parseinvs inventories
> + return $ seal ps
> + where read_patches :: ReadPatch p => RL (Context (PatchInfo, String)) C(x y) -> IO (RL (PatchInfoAnd p) C(x y))
> + read_patches NilRL = return NilRL
> + read_patches allis@(i1h1:<:is1) =
> + do p <- createHashed (hash i1h1) (const $ speculate (unContext (hash i1h1)) allisList >> parse (pinfo i1h1) (hash i1h1))
> rest <- unsafeInterleaveIO $ rp is1
> hunk ./src/Darcs/Repository/HashedRepo.lhs 173
> - return $ (i1 `patchInfoAndPatch` p) :<: rest
> - where rp [] = return NilRL
> - rp [(i,h),(il,hl)] =
> - do Sealed p <- createHashed h (const $ speculate h (reverse allis) >> parse i h)
> - rest <- rp [(il,hl)]
> - return $ (i `patchInfoAndPatch` p) :<: rest
> - rp ((i,h):is) = do Sealed p <- createHashed h (parse i)
> - rest <- unsafeInterleaveIO $ rp is
> - return $ (i `patchInfoAndPatch` p) :<: rest
> + return $ ((unContext (pinfo i1h1)) `patchInfoAndPatch` p) :<: rest
> + where rp :: ReadPatch p => RL (Context (PatchInfo, String)) C(x y) -> IO (RL (PatchInfoAnd p) C(x y))
> + rp NilRL = return NilRL
> + rp (ih:<:c@(Con (_,_):<:NilRL)) =
> + do p <- createHashed (hash ih) (const $ speculate (unContext (hash ih)) (reverse allisList) >> parse (pinfo ih) (hash ih))
> + rest <- rp c
> + return $ ((unContext (pinfo ih)) `patchInfoAndPatch` p) :<: rest
> + rp (ih:<:is) = do p <- createHashed (hash ih) (parse (pinfo ih))
> + rest <- unsafeInterleaveIO $ rp is
> + return $ ((unContext (pinfo ih)) `patchInfoAndPatch` p) :<: rest
> + allisList :: [(PatchInfo, String)]
> + allisList = mapRL unContext allis
> + unContext :: Context a C(x y) -> a
> + unContext (Con x) = x
> + hash :: Context (PatchInfo, String) C(x y) -> Context String C(x y)
> + hash (Con (_,h)) = Con h
> + pinfo :: Context (PatchInfo, String) C(x y) -> Context PatchInfo C(x y)
> + pinfo (Con (i,_)) = Con i
> + speculate :: String -> [(PatchInfo, String)] -> IO ()
> speculate h is = do already_got_one <- doesFileExist (d++"/_darcs/patches/"++h)
> unless already_got_one $
> mapM_ (speculateFileUsingCache (extractCache repo) "patches" . snd) is
> hunk ./src/Darcs/Repository/HashedRepo.lhs 195
> - parse i h = do debugMessage ("Reading patch file: "++ show (human_friendly i))
> - (fn,ps) <- readHashFile (extractCache repo) opts "patches" h
> - case readPatch ps of
> - Just (p,_) -> return p
> - Nothing -> fail $ unlines ["Couldn't parse file "++fn,
> - "which is patch",
> - renderString $ human_friendly i]
> - parseinvs :: RepoPatch p => [[(PatchInfo, String)]] -> IO (SealedPatchSet p)
> - parseinvs [] = return $ seal NilRL
> - parseinvs (i:is) = do x <- read_patches i
> - xs <- unsafeInterleaveIO $ parseinvs is
> - return $ Sealed $ (x :<:) `unseal` xs
> + parse :: ReadPatch p => Context PatchInfo C(x y) -> Context String C(x y) -> IO (p C(x y))
> + parse (Con i) (Con h) = do debugMessage ("Reading patch file: "++ show (human_friendly i))
> + (fn,ps) <- readHashFile (extractCache repo) opts "patches" h
> + case readPatch ps of
> + Just (Sealed p,_) -> return $ unsafeCoerceP p -- we know p has the right context, so we just tell the type system
> + Nothing -> fail $ unlines ["Couldn't parse file "++fn,
> + "which is patch",
> + renderString $ human_friendly i]
> + parseinvs :: ReadPatch p => RL (RL (Context (PatchInfo, String))) C(() y) -> IO (PatchSet p C(y))
> + parseinvs NilRL = return NilRL
> + parseinvs (i:<:is) = do x <- read_patches i
> + xs <- unsafeInterleaveIO $ parseinvs is
> + return $ x :<: xs
>
> write_tentative_inventory :: RepoPatch p => Cache -> [DarcsFlag] -> PatchSet p C(x) -> IO ()
> write_tentative_inventory c opts = write_either_inventory c opts "tentative_hashed_inventory"
> hunk ./src/Darcs/Repository/HashedRepo.lhs 261
> pihash (pinf,hash) = showPatchInfo pinf $$ text ("hash: " ++ hash ++ "\n")
>
> read_inventory_private :: Repository p C(r u t) -> [DarcsFlag] -> String -> String
> - -> IO [[(PatchInfo, String)]]
> + -> IO (Sealed (RL (RL (Context (PatchInfo, String))) C(())))
> read_inventory_private repo opts d iname = do
> i <- skip_pristine `fmap` fetchFilePS (d++"/"++iname) Uncachable
> hunk ./src/Darcs/Repository/HashedRepo.lhs 264
> - (rest,str) <- case breakOnPS '\n' i of
> - (swt,pistr) | swt == packString "Starting with inventory:" ->
> - case breakOnPS '\n' $ tailPS pistr of
> - (h,thisinv) | okayHash h ->
> - do r <- unsafeInterleaveIO $ read_inventories
> - (extractCache repo) opts (unpackPS h)
> - return (r,thisinv)
> - _ -> fail $ "Bad hash in " ++ d ++ "/_darcs/" ++ iname
> - _ -> return ([],i)
> - return $ reverse (read_patch_ids str) : rest
> + (Sealed rest,str) <- case breakOnPS '\n' i of
> + (swt,pistr) | swt == packString "Starting with inventory:" ->
> + case breakOnPS '\n' $ tailPS pistr of
> + (h,thisinv) | okayHash h ->
> + do r <- unsafeInterleaveIO $ read_inventories
> + (extractCache repo) opts (unpackPS h)
> + return (r,thisinv)
> + _ -> fail $ "Bad hash in " ++ d ++ "/_darcs/" ++ iname
> + _ -> return (seal NilRL,i)
> + return $ seal $ reverseFL (unsafeMap_l2f Con (read_patch_ids str)) :<: rest
>
> hunk ./src/Darcs/Repository/HashedRepo.lhs 275
> -read_inventories :: Cache -> [DarcsFlag] -> String -> IO [[(PatchInfo, String)]]
> +read_inventories :: Cache -> [DarcsFlag] -> String
> + -> IO (Sealed (RL (RL (Context (PatchInfo, String))) C(())))
> read_inventories cache opts ihash = do
> (fn,i_and_p) <- readHashFile cache opts "inventories" ihash
> let i = skip_pristine i_and_p
> hunk ./src/Darcs/Repository/HashedRepo.lhs 280
> - (rest,str) <- case breakOnPS '\n' i of
> - (swt,pistr) | swt == packString "Starting with inventory:" ->
> - case breakOnPS '\n' $ tailPS pistr of
> - (h,thisinv) | okayHash h ->
> - do r <- unsafeInterleaveIO $
> - read_inventories cache opts (unpackPS h)
> - return (r,thisinv)
> - _ -> fail $ "Bad hash in file " ++ fn
> - _ -> return ([],i)
> - return $ reverse (read_patch_ids str) : rest
> + (Sealed rest,str) <- case breakOnPS '\n' i of
> + (swt,pistr) | swt == packString "Starting with inventory:" ->
> + case breakOnPS '\n' $ tailPS pistr of
> + (h,thisinv) | okayHash h ->
> + do r <- unsafeInterleaveIO $
> + read_inventories cache opts (unpackPS h)
> + return (r,thisinv)
> + _ -> fail $ "Bad hash in file " ++ fn
> + _ -> return (seal NilRL,i)
> + return $ seal $ reverseFL (unsafeMap_l2f Con (read_patch_ids str)) :<: rest
>
> read_patch_ids :: PackedString -> [(PatchInfo, String)]
> read_patch_ids inv | nullPS inv = []
> }
> [Rename constructor of Context to match type name and make it a newtype.
> Jason Dagit <dagit at codersbase.com>**20080311015533] {
> hunk ./src/Darcs/HopefullyPrivate.lhs 117
> actually = Hopefully . Actually
>
> createHashed :: Context String C(x y) -> (Context String C(x y) -> IO (a C(x y))) -> IO (Hopefully a C(x y))
> -createHashed ch@(Con h) f = (Hashed h) `fmap` unsafeInterleaveIO (f' `catchNonSignal` handler)
> +createHashed ch@(Context h) f = (Hashed h) `fmap` unsafeInterleaveIO (f' `catchNonSignal` handler)
> where
> f' = f ch >>= (return . Actually)
> handler e = return $ Unavailable $ prettyException e
> hunk ./src/Darcs/Patch/Ordered.lhs 115
> (:<:) :: a C(y z) -> RL a C(x y) -> RL a C(x z)
> NilRL :: RL a C(x x)
>
> -data Context a C(x y) = Con a
> +newtype Context a C(x y) = Context a
>
> nullFL :: FL a C(x z) -> Bool
> nullFL NilFL = True
> hunk ./src/Darcs/Repository/HashedRepo.lhs 176
> return $ ((unContext (pinfo i1h1)) `patchInfoAndPatch` p) :<: rest
> where rp :: ReadPatch p => RL (Context (PatchInfo, String)) C(x y) -> IO (RL (PatchInfoAnd p) C(x y))
> rp NilRL = return NilRL
> - rp (ih:<:c@(Con (_,_):<:NilRL)) =
> + rp (ih:<:c@(_:<:NilRL)) =
> do p <- createHashed (hash ih) (const $ speculate (unContext (hash ih)) (reverse allisList) >> parse (pinfo ih) (hash ih))
> rest <- rp c
> return $ ((unContext (pinfo ih)) `patchInfoAndPatch` p) :<: rest
> hunk ./src/Darcs/Repository/HashedRepo.lhs 186
> allisList :: [(PatchInfo, String)]
> allisList = mapRL unContext allis
> unContext :: Context a C(x y) -> a
> - unContext (Con x) = x
> + unContext (Context x) = x
> hash :: Context (PatchInfo, String) C(x y) -> Context String C(x y)
> hunk ./src/Darcs/Repository/HashedRepo.lhs 188
> - hash (Con (_,h)) = Con h
> + hash (Context (_,h)) = Context h
> pinfo :: Context (PatchInfo, String) C(x y) -> Context PatchInfo C(x y)
> hunk ./src/Darcs/Repository/HashedRepo.lhs 190
> - pinfo (Con (i,_)) = Con i
> + pinfo (Context (i,_)) = Context i
> speculate :: String -> [(PatchInfo, String)] -> IO ()
> speculate h is = do already_got_one <- doesFileExist (d++"/_darcs/patches/"++h)
> unless already_got_one $
> hunk ./src/Darcs/Repository/HashedRepo.lhs 196
> mapM_ (speculateFileUsingCache (extractCache repo) "patches" . snd) is
> parse :: ReadPatch p => Context PatchInfo C(x y) -> Context String C(x y) -> IO (p C(x y))
> - parse (Con i) (Con h) = do debugMessage ("Reading patch file: "++ show (human_friendly i))
> - (fn,ps) <- readHashFile (extractCache repo) opts "patches" h
> - case readPatch ps of
> - Just (Sealed p,_) -> return $ unsafeCoerceP p -- we know p has the right context, so we just tell the type system
> - Nothing -> fail $ unlines ["Couldn't parse file "++fn,
> - "which is patch",
> - renderString $ human_friendly i]
> + parse (Context i) (Context h) =
> + do debugMessage ("Reading patch file: "++ show (human_friendly i))
> + (fn,ps) <- readHashFile (extractCache repo) opts "patches" h
> + case readPatch ps of
> + Just (Sealed p,_) -> return $ unsafeCoerceP p -- we know p has the right context, so we just tell the type system
> + Nothing -> fail $ unlines ["Couldn't parse file "++fn,
> + "which is patch",
> + renderString $ human_friendly i]
> parseinvs :: ReadPatch p => RL (RL (Context (PatchInfo, String))) C(() y) -> IO (PatchSet p C(y))
> parseinvs NilRL = return NilRL
> parseinvs (i:<:is) = do x <- read_patches i
> hunk ./src/Darcs/Repository/HashedRepo.lhs 274
> return (r,thisinv)
> _ -> fail $ "Bad hash in " ++ d ++ "/_darcs/" ++ iname
> _ -> return (seal NilRL,i)
> - return $ seal $ reverseFL (unsafeMap_l2f Con (read_patch_ids str)) :<: rest
> + return $ seal $ reverseFL (unsafeMap_l2f Context (read_patch_ids str)) :<: rest
>
> read_inventories :: Cache -> [DarcsFlag] -> String
> -> IO (Sealed (RL (RL (Context (PatchInfo, String))) C(())))
> hunk ./src/Darcs/Repository/HashedRepo.lhs 290
> return (r,thisinv)
> _ -> fail $ "Bad hash in file " ++ fn
> _ -> return (seal NilRL,i)
> - return $ seal $ reverseFL (unsafeMap_l2f Con (read_patch_ids str)) :<: rest
> + return $ seal $ reverseFL (unsafeMap_l2f Context (read_patch_ids str)) :<: rest
>
> read_patch_ids :: PackedString -> [(PatchInfo, String)]
> read_patch_ids inv | nullPS inv = []
> }
>
> Context:
>
> [still using crude debugging techniques on buildbots.
> David Roundy <droundy at darcs.net>**20080308192612]
> [try debugging test environment on buildbots a bit.
> David Roundy <droundy at darcs.net>**20080308185810]
> [make shell harness call bash explicitly.
> David Roundy <droundy at darcs.net>**20080308162027]
> [use bash in rollback.sh.
> David Roundy <droundy at darcs.net>**20080308155551]
> [simplify steve_and_monica_rollback.sh
> Mark Stosberg <mark at summersault.com>**20080308135132
> - remove sleep command (--ignore-time covers this)
> - remove use of "yes" command, (-a covers that).
> ]
> [Fix error handling in URL module, do not return CURLM_CALL_MULTI_PERFORM from Curl module.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080307022028]
> [resolve issue432: don't rely on OS giving correct error message.
> David Roundy <droundy at darcs.net>**20080307223559]
> [format error message a bit more nicely.
> David Roundy <droundy at darcs.net>**20080307214946]
> [always give feedback when mRemoveDirectory fails.
> David Roundy <droundy at darcs.net>**20080307211120]
> [display more output in rmdir.sh.
> David Roundy <droundy at darcs.net>**20080307164716]
> [speed up test_network test by only using --lazy.
> David Roundy <droundy at darcs.net>**20080307153639
> It seems some of the buildbots have too slow connections to run the entire
> test before they time out.
> ]
> [translate failing test into shell.
> David Roundy <droundy at darcs.net>**20080307145028]
> [simplify kind of Cache.
> David Roundy <droundy at darcs.net>**20080307141331
> We can do this, now that HashedRepo knows about Repository.
> ]
> [add fledgling network test suite to ensure networking code works.
> David Roundy <droundy at darcs.net>**20080306173708
> It's not part of the normal test suite, since we'd like to be able to run
> that even when the network is down. It's also slow, because network access
> tends to be slow, and there's little point in a network testsuite that
> never stresses the network.
> ]
> [fix type-witness build.
> David Roundy <droundy at darcs.net>**20080306173613]
> [make convert less lossy (may address issue585, at least partially).
> David Roundy <droundy at darcs.net>**20080306164945]
> [write function to convert an "unravelled" merger into a conflictor.
> David Roundy <droundy at darcs.net>**20080306164904
> Alas, this is a lossy sort of function, that doesn't always work.
> ]
> [export a "public" version of unravel that is type-witness-safe.
> David Roundy <droundy at darcs.net>**20080306164843]
> [simplify unravel to avoid reordering the possibilities.
> David Roundy <droundy at darcs.net>**20080306164730]
> [resolve issue726: truncate progress messages to 80 chars.
> David Roundy <droundy at darcs.net>**20080305175345]
> [reintroduce checking of file sizes in addition to file times.
> David Roundy <droundy at darcs.net>**20080305155303]
> [Use bash for shell tests (portability).
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080305152318]
> [run automated tests with --nocolor.
> Mark Stosberg <mark at summersault.com>**20080305041157
> I think this will fix the strange character output seen in the buildbot logs.
> ]
> [always include length when generating sha256 hashes.
> David Roundy <droundy at darcs.net>**20080304220019]
> [add option to store file lengths with hashes.
> David Roundy <droundy at darcs.net>**20080304171120
> This is a maneuver towards alleaviating the trouble with timestamps, since
> we can quickly check if a file length has changed.
> ]
> [change to not use bytestring by default.
> David Roundy <droundy at darcs.net>**20080304163326]
> [resolved issue706: encode spaces in filenames for darcs-2 format.
> David Roundy <droundy at darcs.net>**20080304161615]
> [add test for issue706.
> David Roundy <droundy at darcs.net>**20080304160310]
> [make HashedRepo more type witness compliant
> Jason Dagit <dagit at codersbase.com>**20080306233912
> Doing this required refactors in several other places
> and explicit kinding for Repository, RepoType and Cache.
> ]
> [make Darcs.Repository.InternalTypes compile with type witnesses
> Jason Dagit <dagit at codersbase.com>**20080306022147]
> [moved Pristine type into Darcs.Repository.InternalTypes
> Jason Dagit <dagit at codersbase.com>**20080306020349]
> [removed orphaned instance warning in Permutations
> Jason Dagit <dagit at codersbase.com>**20080306020314]
> [remove some orphan warnings
> Jason Dagit <dagit at codersbase.com>**20080305215437]
> [replace some uses of Cache with Repository
> Jason Dagit <dagit at codersbase.com>**20080305201755
> This refactor will make it easier to add type witnesses
> in HashedRepo.lhs.
> ]
> [add Darcs.Repository.InternalTypes
> Jason Dagit <dagit at codersbase.com>**20080305193712]
> [resolved conflict in HashedRepo
> Jason Dagit <dagit at codersbase.com>**20080304000833]
> [die properly when we get a signal.
> David Roundy <droundy at darcs.net>**20080303170653
> see http://www.cons.org/cracauer/sigint.html
> ]
> [I am happy with the behavior of changes --last N filename.
> David Roundy <droundy at darcs.net>**20080303160252]
> [remove some TODO stub tests.
> David Roundy <droundy at darcs.net>**20080303160127
> Someone's welcome to implement these tests, but I don't think that the TODO
> stubs are really triggering folks to do so, and it makes it harder to see
> what's gone wrong, and where real bugfixes/feature additions remain TODO.
> ]
> [remove debug output from push.pl.
> David Roundy <droundy at darcs.net>**20080303155449]
> [add more debug output when reading patch files.
> David Roundy <droundy at darcs.net>**20080303154536
> This is mostly useful for tracking down cases where we're insufficiently
> lazy in our IO. e.g. if unrecord --last 1 causes us to parse every patch
> in the repository, something's wrong!
> ]
> [avoid unsafeInterleaveIO and unsafeUnseal that are now unneeded.
> David Roundy <droundy at darcs.net>**20080303154509]
> [fix strictness bug with large performance implications.
> David Roundy <droundy at darcs.net>**20080303153520]
> [avoid excess output in issue279.pl test.
> David Roundy <droundy at darcs.net>**20080303150525]
> [avoid needless speculation in HashedIO (speeds up record).
> David Roundy <droundy at darcs.net>**20080303150427]
> [add reference to tests/README.test_maintainers.txt in README
> Jason Dagit <dagit at codersbase.com>**20080301032722]
> [remove unsafeUnseal from HashedRepo and prep for type witnesses
> Jason Dagit <dagit at codersbase.com>**20080301015115]
> [disable restrictive permissions test on extra-restrictive platforms.
> David Roundy <droundy at darcs.net>**20080229173645]
> [fix bug in reading of sha2 repositories.
> David Roundy <droundy at darcs.net>**20080229164301]
> [enable optional generation of sha2 hashes (probably buggy!)
> David Roundy <droundy at darcs.net>**20080229162200]
> [enable reading of repositories with sha2 hashes.
> David Roundy <droundy at darcs.net>**20080229161811]
> [another small refactor in Prefs, getting ready for sha2.
> David Roundy <droundy at darcs.net>**20080229155549]
> [add skeletal "microbench.hs" for easy micro-benchmarks.
> David Roundy <droundy at darcs.net>**20080229153724]
> [remove TODO test.
> David Roundy <droundy at darcs.net>**20080229144035
> I don't think it makes sense to continue doing a record after getting an IO
> error, in the hopes of having more IO errors to report.
> ]
> [fix bugs in conflict-doppleganger.pl
> David Roundy <droundy at darcs.net>**20080229143825
> I'm not sure where the bugs were entirely, so I did some crude cleanup
> stuff.
> ]
> [Add a test for 'resolution' dopplegangers.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080228172424
>
> Should identical resolutions of a conflict be treated as conflicting?
> ]
> [Avoid sleeping in conflict-doppleganger test.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080228165830
> Using record --ignore-times
> ]
> [avoid duplicate output of progress reports to pipes.
> David Roundy <droundy at darcs.net>**20080228214051]
> [add extra sanity check to restrictive_upstream_permissions.pl.
> David Roundy <droundy at darcs.net>**20080228213535]
> [clean up progress output to pipes (avoid printing lots of ugly spaces).
> David Roundy <droundy at darcs.net>**20080228205814]
> [report ghc version number in configure script.
> David Roundy <droundy at darcs.net>**20080228164106]
> [FastPackedString.hs: wrong import for unsafeUseAsCStringLen
> Andrea Rossato <andrea.rossato at unibz.it>**20080228113420
> unsafeUseAsCStringLen is exported by Data.ByteString.Unsafe and not
> by Data.ByteString.Char8
> ]
> [small hash-related refactor in Repository.Prefs.
> David Roundy <droundy at darcs.net>**20080228152331]
> [roll back configure change that broke windows/mac configures.
> David Roundy <droundy at darcs.net>**20080228140156
> Alas, what was intended to improve the situation instead made it worse...
>
> rolling back:
>
> Wed Feb 27 10:32:25 EST 2008 David Roundy <droundy at darcs.net>
> * use ghc to compile test programs in configure script.
>
> M ./configure.ac -10 +8
> ]
> [make unseal and friends lazy.
> David Roundy <droundy at darcs.net>**20080227180148]
> [refactor hash-length into Prefs.
> David Roundy <droundy at darcs.net>**20080227165517]
> [add sha256 code.
> David Roundy <droundy at darcs.net>**20080227163749]
> [use ghc to compile test programs in configure script.
> David Roundy <droundy at darcs.net>**20080227153225]
> [resolved issue701: fixed bug in commutation of certain conflicting patches.
> David Roundy <droundy at darcs.net>**20080226223612
> We were failing to treat a resolution patch properly when commuting a patch
> that depends on the resolution with one that conflicts with it. :(
> ]
> [make conflict-fight.sh define patch author names according to repository.
> David Roundy <droundy at darcs.net>**20080226223519]
> [add some assertions of consistency.
> David Roundy <droundy at darcs.net>**20080226223208
> This only affects darcs-2 repositories, and currently will slow darcs
> down. Eventually, we should add a configure option to disable these checks,
> which are merely present to detect the case where there's a bug in darcs'
> internals.
> ]
> [resolved issue184: treat changes to superdirs as affecting directory contents.
> David Roundy <droundy at darcs.net>**20080225152336]
> [add separate makefile target for just running known bugs tests.
> David Roundy <droundy at darcs.net>**20080225145921]
> [mark issue279 as fixed.
> David Roundy <droundy at darcs.net>**20080225145853]
> [mark apply-hunks.sh as passing.
> David Roundy <droundy at darcs.net>**20080225145516]
> [increase env var size to 10k.
> David Roundy <droundy at darcs.net>**20080225145452]
> [Send 'show authors' output through a pager.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080223105840]
> [By default, group and count output of 'show authors'.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080223105723
> --verbose will print all authors in order
> ]
> [issue292: Support "--patches" in darcs.cgi.
> Mark Stosberg <mark at summersault.com>**20080209172059
> This enables bug tracker integration with darcs.cgi. To use it, include
> the unique bug tracker ID in your patch name, like I've done here with "issue292"
> Then, link to darcs.cgi with your patch ID as an argument to "patches":
> ?c=patches&patches=123
> The result will be a patch reporting on just those patches which relate to the bug.
> You can then patch your bug tracker to generate links like this on each bug page.
> For example, once this patch is applied, the link to "related patches" the darcs
> bug tracker will start working:
> http://bugs.darcs.net/issue292
> ]
> [Add mouse-over descriptions of patch name and author to annotate file in darcs.cgi
> Mark Stosberg <mark at summersault.com>**20080209154316]
> [Fix for test for issue 458
> tux_rocker at reinier.de**20080224171415]
> [Fail with clear message if diff is given both --from-patch and --last
> tux_rocker at reinier.de**20080224155717]
> [add a debug message in check.
> David Roundy <droundy at darcs.net>**20080222173352]
> [resolved issue699: revert accidentally-increased strictness in repo-reading.
> David Roundy <droundy at darcs.net>**20080222173129]
> [don't catch signals in catchall
> David Roundy <droundy at darcs.net>**20080222170426]
> [update_roundup.pl: allow "resolve issueXXX".
> David Roundy <droundy at darcs.net>**20080222154447]
> [fix bug where we weren't defining DARCS_PATCHES_XML when pulling nothing.
> David Roundy <droundy at darcs.net>**20080222154024]
> [we always want to define posthook env variables.
> David Roundy <droundy at darcs.net>**20080221165423]
> [resolve issue672: defining environment variables for the posthook caused E2BIG error.
> David Roundy <droundy at darcs.net>**20080221161733
> The solution chosen for this was simply to restrict environment variables
> passed to posthooks to a maximum value of 1k.
> ]
> [give better error message when we get "command not found" == ExitFailure 127.
> David Roundy <droundy at darcs.net>**20080220171920]
> [add better error debug messages in Ssh (again!).
> David Roundy <droundy at darcs.net>**20080220163519]
> [fix bug where we passed empty argument to apply.
> David Roundy <droundy at darcs.net>**20080220162124]
> [fail with sensible messages if given empty arguments in push/put/apply/send.
> David Roundy <droundy at darcs.net>**20080220161753]
> [get rid of excess progress reports that are confusing (because they don't increase monotonically).
> David Roundy <droundy at darcs.net>**20080220153845]
> [use output of curl-config when testing for curl presence.
> David Roundy <droundy at darcs.net>**20080220153800]
> [Add tests for issue701.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080218205036]
> [when pushing with --debug, call apply with --debug.
> David Roundy <droundy at darcs.net>**20080218183209]
> [resolve issue673: if hash check fails, try reading file without ungzipping it.
> David Roundy <droundy at darcs.net>**20080218164311]
> [issue109: Show Who, When on darcs.cgi patch page
> Mark Stosberg <mark at summersault.com>**20080209051831]
> [Bug fix: Allow ~ to be considered as part of a valid URL to darcs.cgi
> Mark Stosberg <mark at summersault.com>**20080209041927]
> [Simplify build docs by removing sendmail paragraph.
> Mark Stosberg <mark at summersault.com>**20080216172458
> - It's optional anyway.
> - There are sane defaults on Linux, BSD, OSX and Windows now
> - You can use "-o" "-O" and --sendmail-command after the fact anyway
> ]
> [modernize darcs build docs about network library options.
> Mark Stosberg <mark at summersault.com>**20080216172237
> - mentions libwww and pipelining options.
> ]
> [Update docs to reflect that minimum GHC version is now 6.4, not 6.2
> Mark Stosberg <mark at summersault.com>**20080216165623]
> [issue551: test error message when there is a conflict with push-over-ssh
> Mark Stosberg <mark at summersault.com>**20080216213617
> - You may need to "REMOTE" for this be interesting
> - The test expects "darcs 2" to also be on the other end.
> - The shell syntax needs some clean up help. It wrongly exits with "error code 2"
> now instead of finishing cleanly.
> ]
> [issue551: further clarify --mark-conflicts error message.
> Mark Stosberg <mark at summersault.com>**20080216205713
> Not only do you need to give these options to "apply", they
> need to be in the target repo, and probably set as defaults.
> ]
> [more hash-related debug error messages.
> David Roundy <droundy at darcs.net>**20080218145601]
> [give more debug output in URL.
> David Roundy <droundy at darcs.net>**20080218142638]
> [give more debug output in Ssh.
> David Roundy <droundy at darcs.net>**20080218142616]
> [define debugFail, which always notifies of failure under debug mode.
> David Roundy <droundy at darcs.net>**20080218142023]
> [define environment variables early, to make update_roundup.pl happy.
> David Roundy <droundy at darcs.net>**20080215205410
> The problem was that if there was nothing to pull, it complained because
> the env variable wasn't defined.
> ]
> [give a bit more debug output when downloads go bad.
> David Roundy <droundy at darcs.net>**20080215204830]
> [resolve issue692: fix inversion of error check in URL.
> David Roundy <droundy at darcs.net>**20080215204537]
> [resolved issue458: make setExecutable obey umask.
> David Roundy <droundy at darcs.net>**20080215185218]
> [clean up issue458 test.
> David Roundy <droundy at darcs.net>**20080215155732
> I prefer for tests to use predictable directories and leave behind
> repositories I can examine when the fail.
> ]
> [resolved issue496 delayed the check for --disabled until after reading defaults.
> David Roundy <droundy at darcs.net>**20080215154653
> As it turns out, this bug was specific to the --disabled flag, which was
> treated specially (and buggily, as it turns out). It was easily fixed by
> moving the check for Disabled *after* we've confirmed the validity of the
> repository and added any default flags.
> ]
> [clean up bugs/repodir.sh.
> David Roundy <droundy at darcs.net>**20080215153615]
> [resolved issue662: fix bug in bugs/pull.sh test, which now passes.
> David Roundy <droundy at darcs.net>**20080215152814]
> [make Hopefully have type witnesses
> Jason Dagit <dagit at codersbase.com>**20080215203130]
> [document non-workingness of environment variable export with Windows.
> David Roundy <droundy at darcs.net>**20080215151905]
> [Document new DARCS_PATCHES_XML export
> Mark Stosberg <mark at summersault.com>**20080214224922]
> [issue662: add new test to bugs/ which triggers issue
> Mark Stosberg <mark at summersault.com>**20080214230626]
> [issue58: Add a full-featured Roundup bug resolver.
> Mark Stosberg <mark at summersault.com>**20080215050230
> - Depends on a yet-to-be-made fix to DARCS_PATCHES_XML, described here: http://bugs.darcs.net/msg3436
> - Activate by including "resolved issue234" in the patch name.
> - Can be used to mark items as "resolved-in-stable" or "resolved-in-unstable" depending
> on the posthook is setup.
> - Necessary perl modules are already installed on the darcs.net server.
> - resulting e-mail to the bug tracker (and by extension, interested parties)
> includes the patch name, comment, and link to the web-based bug tracker with
> full details.
> - (Weakly) detects a valid e-mail, and falls back to a default if none is provided
> - Tested to work already: http://bugs.darcs.net/issue592
> - Enjoy!
> ]
> [resolved issue686: make changes suggested by Mark to DARCS_PATCHES_XML.
> David Roundy <droundy at darcs.net>**20080215145232]
> [remove use of separate bugs/shell_harness code.
> David Roundy <droundy at darcs.net>**20080214222804]
> [copy over updated "shell_harness" to bugs.
> Mark Stosberg <mark at summersault.com>**20080208014440
> Besides giving more consistent results, this is necessary for me to
> be able to run the "broken-pipe.sh" test from a directory with a space in it.
> ]
> [Delegate cabal building to the makefile.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080214171307]
> [Bump version number in Cabal file.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080214155247]
> [Add Cabal files (not feature complete).
> Eric Kow <eric.kow at loria.fr>**20070407104406
>
> This gives you a not-quite-complete Cabalisation of darcs. It does not
> replace the makefile (yet). Indeed, with this patch alone, you should
> still consider the makefile as the prefered compilation method. At present,
> using the Cabal method means:
>
> autoconf
> runhaskell Setup.lhs configure
> make src/Context.hs
> runhaskell Setup.lhs build
>
> It would be good if somebody worked out a way to get rid of the make src/Context.hs
> step. Note also that this version of the cabal file does not support git or
> wxdarcs.
>
> ]
> [add Mark's update_roundup.pl script to tools/
> David Roundy <droundy at darcs.net>**20080214190040
> My hope is that when this is replaced with a more general email-based
> solution, it will be a useful resource even for folks who don't use
> roundup.
> ]
> [fix error in URL error-reporting cleanup (issue692)
> David Roundy <droundy at darcs.net>**20080214183838]
> [fix bug where tests failed if there were no tests present.
> David Roundy <droundy at darcs.net>**20080214182917
> This manifested itself when tests/tests_to_run is used.
> ]
> [issue279: new test case for bug in get_extra / Malformed patch
> Mark Stosberg <mark at summersault.com>**20080210021550]
> [issue458: move currently failing test to bugs/
> Mark Stosberg <mark at summersault.com>**20080202155904]
> [clarify hash matching documentation a little
> Simon Michael <simon at joyful.com>**20080213201047]
> [Add a 'show authors' command.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080214100825]
> [roll back several more changes
> David Roundy <droundy at darcs.net>**20080214172212
> Here are some more changes related to the hunk change I previously rolled
> back.
>
> rolling back:
>
> Tue Feb 12 11:43:07 EST 2008 David Roundy <droundy at darcs.net>
> * fix bitrot in unit test.
>
> M ./src/Darcs/Patch/QuickCheck.lhs -9 +14 r1
> M ./src/Darcs/Patch/Test.lhs -4 +4
> Tue Feb 12 14:22:20 EST 2008 David Roundy <droundy at darcs.net>
> * make ColourPrinter able to deal nicely with userchunks that contain newlines.
>
> M ./src/Darcs/ColourPrinter.lhs -12 +22
> Tue Feb 12 14:50:25 EST 2008 David Roundy <droundy at darcs.net>
> * define catLinesPS and uncatLinesPS when ByteString is present.
>
> M ./src/FastPackedString.hs +11
> Tue Feb 12 17:02:13 EST 2008 David Roundy <droundy at darcs.net>
> * add has_n_newlines (untested!) for ByteString.
>
> M ./src/FastPackedString.hs +18
> ]
> [roll back changes in hunk handling.
> David Roundy <droundy at darcs.net>**20080214171558
> These changes introduced a bug in the reading of patch bundles, and I don't
> have time to track that bug down, so I'm rolling them back wholesale.
> Right now, we just don't have time for new regressions.
>
> rolling back:
>
> Sun Feb 10 17:30:44 EST 2008 David Roundy <droundy at darcs.net>
> * rewrite hunks to store solid chunks rather than lists of lines.
>
> M ./src/Darcs/Patch/Apply.lhs -51 +48
> M ./src/Darcs/Patch/Commute.lhs -5 +5
> M ./src/Darcs/Patch/Prim.lhs -54 +50
> M ./src/Darcs/Patch/Viewing.lhs -13 +13
> M ./src/FastPackedString.hs -24 +3
> M ./src/OldFastPackedString.hs -23 +55
> Sun Feb 10 18:15:46 EST 2008 David Roundy <droundy at darcs.net>
> * fix bug in new code that broke darcs check on darcs' own repo.
>
> M ./src/Darcs/Patch/Apply.lhs -1 +3
> Tue Feb 12 14:44:56 EST 2008 David Roundy <droundy at darcs.net>
> * add new "chunk" patch format (currently only used in darcs-2 repositories).
>
> M ./src/Darcs/Patch/Prim.lhs -2 +32
> M ./src/Darcs/Patch/Read.lhs -1 +25
> ]
> [export DARCS_PATCHES_XML when calling posthook and test suite.
> David Roundy <droundy at darcs.net>**20080214163141]
> [Roll back change in formatting of patch in darcs push.
> David Roundy <droundy at darcs.net>**20080214151259]
> [make darcs get --old-fashioned convert from hashed to old format.
> David Roundy <droundy at darcs.net>**20080213165519]
> [make darcs put create repository of appropriate format (issue661).
> David Roundy <droundy at darcs.net>**20080213165439]
> [clean up information-writing in Put.
> David Roundy <droundy at darcs.net>**20080213164306]
> [clean up error handling a bit in URL.
> David Roundy <droundy at darcs.net>**20080213163759]
> [fix bug where we failed to clean up failed download files (issue648).
> David Roundy <droundy at darcs.net>**20080213163315]
> [add has_n_newlines (untested!) for ByteString.
> David Roundy <droundy at darcs.net>**20080212220213]
> [make debug message more specific.
> David Roundy <droundy at darcs.net>**20080212212234]
> [don't bother packing patch bundle into an email on darcs push.
> David Roundy <droundy at darcs.net>**20080212212115
> This is a workaround for an unknown parsing bug affecting email-formatted
> darcs patch bundles. :(
> ]
> [define catLinesPS and uncatLinesPS when ByteString is present.
> David Roundy <droundy at darcs.net>**20080212195025]
> [add new "chunk" patch format (currently only used in darcs-2 repositories).
> David Roundy <droundy at darcs.net>**20080212194456]
> [make ColourPrinter able to deal nicely with userchunks that contain newlines.
> David Roundy <droundy at darcs.net>**20080212192220]
> [fix miscounting of changes in interactive prompting.
> David Roundy <droundy at darcs.net>**20080212190602]
> [fix bitrot in unit test.
> David Roundy <droundy at darcs.net>**20080212164307]
> [issue184: bug where record and add handle files in un-added directories inconsistently.
> Mark Stosberg <mark at summersault.com>**20080210014746]
> [Fix build on FreeBSD 7.x.
> Mark Stosberg <mark at summersault.com>**20080211004548
> This is the official patch discussed here: http://www.freebsd.org/cgi/query-pr.cgi?pr=117535
> ]
> [fix bug in new code that broke darcs check on darcs' own repo.
> David Roundy <droundy at darcs.net>**20080210231546]
> [add --only-to-files flag for changes, to display only changes to specified files.
> David Roundy <droundy at darcs.net>**20080210230431]
> [rewrite hunks to store solid chunks rather than lists of lines.
> David Roundy <droundy at darcs.net>**20080210223044]
> [ Skip some tests if strace is not found
> Mark Stosberg <mark at summersault.com>**20080209052850]
> [Update text to encourage people to check for existing bug reports before submitting new ones.
> Mark Stosberg <mark at summersault.com>**20080209144703
> We are getting about 1 bug report per day, and many of them are for already-known issues.
> People are still encouraged to use bugs at darcs.net, and that e-mail address is repeated
> on the front page of the bug tracker.
> ]
> [add liftSM and refactor accordingly
> Jason Dagit <dagit at codersbase.com>**20080208230919]
> [Change read_repo to return SealedPatchSet
> Jason Dagit <dagit at codersbase.com>**20080208221409]
> [Add Depends and HashedIO to witnesses in make file
> Jason Dagit <dagit at codersbase.com>**20080208184149]
> [Make HashedIO.lhs compile with type witnesses
> Jason Dagit <dagit at codersbase.com>**20080208184126]
> [eliminate unsafe debugMode from Globals: it didn't work if _debugMode changes value.
> David Roundy <droundy at darcs.net>**20080208170051]
> [clean up putDebug.
> David Roundy <droundy at darcs.net>**20080208164512]
> [make the identifying of remote repositories more efficient.
> David Roundy <droundy at darcs.net>**20080208160806
> We cut out a download of hashed_inventory and an attempt at getting
> _darcs/inventory.
> ]
> [cut useless git-format code.
> David Roundy <droundy at darcs.net>**20080208154517]
> [add more debug messages in Repository.
> David Roundy <droundy at darcs.net>**20080208152458]
> [add a bunch more debug messages in get.
> David Roundy <droundy at darcs.net>**20080208152405]
> [issue390: whatsnew 'stats' more files than needed.
> Mark Stosberg <mark at summersault.com>**20080208032646]
> [eliminate spaces in GNUmakefile.
> David Roundy <droundy at darcs.net>**20080207232825]
> [don't build tarball when making website.
> David Roundy <droundy at darcs.net>**20080207232754]
> [give darcs get instructions rather than links to browse urls.
> David Roundy <droundy at darcs.net>**20080207230912]
> [Make broken-pipe.sh test fail on MacOS X.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080207220914
>
> 1) seq is non-portable, so that had to be replaced with something anyway.
> 2) the test worked with 20 items, but failed with a 100
> ]
> [Pipe 'darcs foo --help' through a pager.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080207215526]
> [Fix ChangeLog entry.
> Eric Kow <eric.kow at loria.fr>**20080125232739]
> [Add links to darcs repositories to main webpage
> Jason Dagit <dagit at codersbase.com>**20080207224120]
> [amended Depends.lhs for type witnesses
> Jason Dagit <dagit at codersbase.com>**20080207221706]
> [add more debug messages.
> David Roundy <droundy at darcs.net>**20080207200156]
> [speed up pending handling.
> David Roundy <droundy at darcs.net>**20080207200051
> In fixing a bug, I thoughtlessly made pending handling O(N^2) more often
> than it needs to be... which was the "safe" choice, because it was
> previously the "fast" code that had the bug.
> ]
> [add debug output regarding disabling of progress reports.
> David Roundy <droundy at darcs.net>**20080207193719]
> [add progress reporting while writing patch file in record.
> David Roundy <droundy at darcs.net>**20080207193649]
> [add a few more debug messages in record.
> David Roundy <droundy at darcs.net>**20080207193626]
> [fix performance regression in unrecord.
> David Roundy <droundy at darcs.net>**20080207193529
> This also reverts to the old behavior of producing unsorted patches when
> asked for record -a, but sorted patches when the -a flag is omitted. :(
> ]
> [avoid giving excessive (usually useless) debug info.
> David Roundy <droundy at darcs.net>**20080207191129]
> [define filterFL.
> David Roundy <droundy at darcs.net>**20080207191113]
> [resolve conflict in Pull.lhs.
> David Roundy <droundy at darcs.net>**20080206223143]
> [make Depends.lhs compile with type witnesses
> Jason Dagit <dagit at codersbase.com>**20080206214552]
> [ratify another use of hGetContents.
> David Roundy <droundy at darcs.net>**20080206184718]
> [cleanup in Pull.lhs.
> David Roundy <droundy at darcs.net>**20080206184600]
> [Test for issue436.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080206163057
> As suggested by Edwin Thomson.
> ]
> [remove use of patchset_complement.
> David Roundy <droundy at darcs.net>**20080206182548]
> [change Slurpy to not store the file as list of lines.
> David Roundy <droundy at darcs.net>**20080206164113]
> [fix GHCFLAGS, so make ghci will work properly.
> David Roundy <droundy at darcs.net>**20080206161052]
> [cut from OldFastPackedString same functions Eric cut from ByteString version.
> David Roundy <droundy at darcs.net>**20080206155350]
> [Pipe help text through a pager.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205210324]
> [Ability to pipe a document through a pager.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205210313]
> [Remove ununsed functions from FastPackedString.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205191951
>
> (!) :: PackedString -> Int -> Word8
> consPS :: Char -> PackedString -> PackedString
> mallocedCString2PS :: CString -> IO PackedString
> unpackWords :: PackedString -> [Word8]
> mapPS :: (Char -> Char) -> PackedString -> PackedString
> foldlPS :: (a -> Char -> a) -> a -> PackedString -> a
> foldrPS :: (Char -> a -> a) -> a -> PackedString -> a
> elemPS :: Char -> PackedString -> Bool
> spanPS :: (Char -> Bool) -> PackedString -> (PackedString, PackedString)
> breakFirstPairPS ::
> wordsPS :: PackedString -> [PackedString]
> splitWithPS :: (Char -> Bool) -> PackedString -> [PackedString]
> gzReadFileLazily :: FilePath -> IO LazyFile
> readFileLazily :: FilePath -> IO LazyFile
> readHandleLazily :: Handle -> IO [PackedString]
>
> We don't have any particular 'responsability' to keep FastPackedString
> generic. If these functions aren't likely to be used in darcs code
> anytime soon, we might as well remove them.
> ]
> [Upgrade readIntPS to Data.ByteString version.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205182938]
> [Fix 'patch cannot contain newlines' in broken-pipe.sh test.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205163541]
> [Ratify Data.ByteString IO imports.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205162823]
> [Upgrade more FastPackedString functions.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205162710
> (!), unlinesPS (still concat . intersperse), findLastPS
> ]
> [Upgrade spanEndPS and breakPS to Data.ByteString version.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205155420]
> [(Re)upgrade createPS and generatePS to Data.ByteString versions.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205155322]
> [enable context printing of darcs-2 patches.
> David Roundy <droundy at darcs.net>**20080205163917]
> [generalize context viewing a bit.
> David Roundy <droundy at darcs.net>**20080205163511]
> [add isHunk method in effect, as precursor to more general context-showing code.
> David Roundy <droundy at darcs.net>**20080205162221]
> [add test for issue68.
> David Roundy <droundy at darcs.net>**20080205154147
> Note that I haven't been able to reproduce this bug, but from the
> description given by Eric, I expect that this should trigger it. Or at
> least it'll give us some sort of a hint.
> ]
> [use bytestring automatically where available.
> David Roundy <droundy at darcs.net>**20080205150513
> configure --disable-bytestring to disable this behavior.
> ]
> [Stricter use of BI.toForeignPtr in FastPackedString.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205093000
>
> I don't know if this actually makes a difference. Indeed, the intention behind
> this patch is to avoid introducing any extra laziness where none was found before.
> ]
> [Restore some original FastPackedString code.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205092829
> It was hanging on some tests, or running out of stack space.
> ]
> [Restore old FastPackedString version of linesPS and unlinesPS.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205092719
> They behave slightly differently with respect to newlines.
> ]
> [Add OldFastPackedString for people without the latest bytestring.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205090659
>
> Data.ByteString was included with GHC 6.6, but it seems the Data.ByteString.Internal
> part of the API was only introduced in a later version.
> ]
> [Start converting FastPackedString into a Data.ByteString wrapper.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080203235111]
> [Use DARCS_SSH when calling darcs transfer-mode.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080205144124]
> [Use copyUrl in copyRemotesNormal.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080205002142]
> [Cleanup libwww configure check.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080205001841]
> [Cleanup curl pipelining configure check.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080205000717]
> [Fix configure check for curl_multi_timeout.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080205000109]
> [Append CPPFLAGS to GHCFLAGS in autoconf.mk.in instead of configure.ac.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080204235906]
> [accept --partial instead of --lazy with warning.
> David Roundy <droundy at darcs.net>**20080204175222]
> [Give a shorter help message when user supplies a bad command line.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080204170119
>
> darcs failed: Missing argument: [REPOSITORY]
> Usage: darcs send [OPTION]... [REPOSITORY]
> Send by email a bundle of one or more patches.
>
> See darcs help send for details.
>
> As suggested by Mark Stosberg [issue495].
> ]
> [export information to posthooks in DARCS_PATCHES and DARCS_FILES.
> David Roundy <droundy at darcs.net>**20080204160710]
> [issue572: Add Some .waf files to the default boring list.
> Mark Stosberg <mark at summersault.com>**20080203031517]
> [issue257: test for "push => incorrect return code when couldn't get lock"
> Mark Stosberg <mark at summersault.com>**20080203011036]
> [[issue633] config detection of curl_multi_timeout presence for older curl libraries.
> Kevin Quick <quick at sparq.org>**20080203035602]
> [move failing issue458 test to bugs/
> David Roundy <droundy at darcs.net>**20080202202810]
> [issue496: move failing test to ./bugs
> Mark Stosberg <mark at summersault.com>**20080202162828]
> [Don't use the builtin !; it has the wrong semantics.
> Trent W. Buck <twb at cyber.com.au>**20080202103848]
> [Add functional sh test for issue496.
> Trent W. Buck <twb at cyber.com.au>**20080202103816]
> [Add functional sh test for issue458.
> Trent W. Buck <twb at cyber.com.au>**20080202095122]
> [Typo.
> Trent W. Buck <twb at cyber.com.au>**20080202083642]
> [Typo.
> Trent W. Buck <twb at cyber.com.au>**20080202083347]
> [clean up files we only speculatively downloaded.
> David Roundy <droundy at darcs.net>**20080202164906]
> [provide nicer output when identifying repository.
> David Roundy <droundy at darcs.net>**20080202164843]
> [print progress reports less frequently.
> David Roundy <droundy at darcs.net>**20080202161901
> On my laptop this provides a noticeable performance improvement. And to
> me, having less rapid jumping on the screen is also a bonus.
> ]
> [improved test for binaries: We now have both a positive and negative test
> Mark Stosberg <mark at summersault.com>**20080202150109]
> [issue469: test that _darcs/prefs/binaries matches against full path
> Mark Stosberg <mark at summersault.com>**20080202024805]
> [simplify speculation on patch contents.
> David Roundy <droundy at darcs.net>**20080202142649]
> [use faster queue type in URL.hs.
> David Roundy <droundy at darcs.net>**20080202142619]
> [refactor speculate a bit.
> David Roundy <droundy at darcs.net>**20080201202752]
> [try to make speculation and pipelining help us.
> David Roundy <droundy at darcs.net>**20080201181524]
> [avoid parsing all patches in darcs get.
> David Roundy <droundy at darcs.net>**20080201214747]
> [add friendly interface for speculative pipelining of downloads.
> David Roundy <droundy at darcs.net>**20080201154000]
> [Fix --no-ephemeral.
> nicolas.pouillard at gmail.com**20080201153821]
> [rename segregate{F,R}L into partition{F,R}L.
> nicolas.pouillard at gmail.com**20080201153557]
> [Fix darcs get --lazy (Partial was used instead of Lazy).
> nicolas.pouillard at gmail.com**20080201153107]
> [match absolute paths on binaries regexps.
> David Roundy <droundy at darcs.net>**20080201152320]
> [avoid needless locking of hashed repositories.
> David Roundy <droundy at darcs.net>**20080201150941]
> [don't display "progress" when running --list-options. (issue635)
> David Roundy <droundy at darcs.net>**20080201144458]
> [give feedback after successful push or put.
> David Roundy <droundy at darcs.net>**20080131230525]
> [use System.Process when calling darcs apply
> David Roundy <droundy at darcs.net>**20080131230305
> This allows us to get immediate feedback as to how the remote apply is
> proceeding.
> ]
> [use System.Process for running ssh and other commands.
> David Roundy <droundy at darcs.net>**20080131223831]
> [fix issue 257 by not ignoring exit code of apply.
> David Roundy <droundy at darcs.net>**20080131220054]
> [fix bug in whatsnew when replace is used.
> David Roundy <droundy at darcs.net>**20080131201648]
> [Show a replace+whatsnew -s bug.
> nicolas.pouillard at gmail.com**20080130142001]
> [define segregateFL and segregateRL utility functions.
> David Roundy <droundy at darcs.net>**20080131200620]
> [Fix an error message, in case of using subcommands.
> nicolas.pouillard at gmail.com**20080131184422]
> [default to get copying all patches.
> David Roundy <droundy at darcs.net>**20080131195151
> You can use --lazy (or ^C) to get a lazy repository.
> ]
> [add test (failing) for issue257 (from vmiklos, thanks!)
> David Roundy <droundy at darcs.net>**20080131195118]
> [fix bug in unrevert. (issue366)
> David Roundy <droundy at darcs.net>**20080131192202]
> [give progress report on initial checking of repository validity.
> David Roundy <droundy at darcs.net>**20080131181249
> I'm not sure how much good this will do, since the downloading function
> probably blocks progress output.
> ]
> [clean up in unrevert_cancel.sh
> David Roundy <droundy at darcs.net>**20080131175149]
> [issue366: test when unrevert reports a bug
> Mark Stosberg <mark at summersault.com>**20080131042313]
> [make bunchFL compile with type witnesses by adding a signature.
> David Roundy <droundy at darcs.net>**20080131155718]
> [refactor convert.
> David Roundy <droundy at darcs.net>**20080131155547
> This also makes convert slightly more efficient in cases where there is a
> large first patch.
> ]
> [make darcs get --hashed safe on case-insensitive filesystems.
> David Roundy <droundy at darcs.net>**20080131155112]
> [define handy bunchFL function for grouping patches into batches.
> David Roundy <droundy at darcs.net>**20080131154631]
> [fix conflict-doppleganger test to work with change in flags get accepts.
> David Roundy <droundy at darcs.net>**20080131153250]
> [oops, the build of the manual broke when I hid convert...
> David Roundy <droundy at darcs.net>**20080130230705
>
> rolling back:
>
> Wed Jan 30 16:39:45 EST 2008 David Roundy <droundy at darcs.net>
> * hide convert.
> Since this is a command that *must* be performed only once per group of
> related repositories, I think making it only visible in the documentation
> should reduce errors.
>
> M ./src/Darcs/TheCommands.lhs -1 +1
> ]
> [roll back foolish file modification time hack.
> David Roundy <droundy at darcs.net>**20080130224322
>
> As it turns out, I didn't understand what "ctime" means, thinking that it
> was actually a "creation" time. But alas, ctime changes whenver mtime
> changes, so we can't use their equality to check if the mtime has been
> set. Ugh. I feel silly.
>
> rolling back:
>
> Wed Jan 30 12:12:32 EST 2008 David Roundy <droundy at darcs.net>
> * employ new hack to avoid need to wait for clock to tick.
> The new hack is that if the creation time and modification time of a file
> in the pristine cache are identical, then we don't believe it's meaningful
> if the modification time happens to match that of the file in the working
> directory.
>
> M ./src/Darcs/Lock.lhs -1 +4
> M ./src/Darcs/Repository/Prefs.lhs -4 +8
> M ./src/Darcs/SlurpDirectory.lhs -12 +9
> ]
> [refactor readPatchInfo using Maybe monad.
> David Roundy <droundy at darcs.net>**20080130220306]
> [fix issue46, parsing problem caused by wrong use of error.
> David Roundy <droundy at darcs.net>**20080130220129]
> [hide convert.
> David Roundy <droundy at darcs.net>**20080130213945
> Since this is a command that *must* be performed only once per group of
> related repositories, I think making it only visible in the documentation
> should reduce errors.
> ]
> [remove --darcs-2 from get options (issue606)
> David Roundy <droundy at darcs.net>**20080130213712]
> [fix imports for win32.
> David Roundy <droundy at darcs.net>**20080130212629]
> [make rollback default to a long comment indicating what was rolled back.
> David Roundy <droundy at darcs.net>**20080130200814]
> [employ new hack to avoid need to wait for clock to tick.
> David Roundy <droundy at darcs.net>**20080130171232
> The new hack is that if the creation time and modification time of a file
> in the pristine cache are identical, then we don't believe it's meaningful
> if the modification time happens to match that of the file in the working
> directory.
> ]
> [fix build failure under win32 (hopefully). Sorry!
> David Roundy <droundy at darcs.net>**20080130170953]
> [refactor issue154 test to match Eric Kow's echo_to_darcs() refactor. The test should pass.
> Mark Stosberg <mark at summersault.com>**20080129004921]
> [Update docs for echo_to_darcs() to match Eric Kow's code refactor
> Mark Stosberg <mark at summersault.com>**20080129004448]
> [Adding Test/Builder/Module.pm to the tree, unmodified.
> Mark Stosberg <mark at summersault.com>**20080129003230
> Thanks to Kevin Quick for noticing this was missing.
> ]
> [Test Suite: make sure to move outside of tmp repo, so it can get cleaned-up properly
> Mark Stosberg <mark at summersault.com>**20080126171642]
> [Update add_in_subdir.pl to work with updated init_tmp_repo()
> Mark Stosberg <mark at summersault.com>**20080126164158]
> [Test Suite: Improve init_tmp_repo():
> Mark Stosberg <mark at summersault.com>**20080126160916
> - Quit including random chars in the directory name (David's suggestion)
> - Allow DARCS_KEEP_TMPDIR to control whether we keep the tmp repos for inspection (default: false)
> - More reliably clean-up after ourselves then the "File::Temp" method did.
> ***END OF DESCRIPTION***
>
> Place the long patch description above the ***END OF DESCRIPTION*** marker.
> The first line of this file will be the patch name.
>
>
> This patch contains the following changes:
>
> M ./tests/lib/perl/Test/Darcs.pm -3 +17
> ]
> [remove clean-up, which should now happen automatically
> Mark Stosberg <mark at summersault.com>**20080126025241]
> [Shave several minutes off test suite runs by pre-building large repos
> Mark Stosberg <mark at summersault.com>**20080126184048]
> [make sure we are outside of the tempdir so the auto-cleanup can happen.
> Mark Stosberg <mark at summersault.com>**20080124044245]
> [improved tempdir handling-- include the script name in the directory name, and better auto-cleanup
> Mark Stosberg <mark at summersault.com>**20080124044137]
> [issue154: regression test for pull with a directory removal conflict
> Mark Stosberg <mark at summersault.com>**20080127053811]
> [rollback features that apparently are needed.
> David Roundy <droundy at darcs.net>**20080129203711
> These seem to be needed (at least some of them) to do
>
> darcs get http://darcs.net/repos/unstable
> ]
> [[issue558] Singular 'do you want to revert this change?'
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080129163633]
> [Refactor SelectChanges English.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080129163619]
> [Add some simple English morphology.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080129163613]
> [fix ssh connection business to work if one darcs command accesses two distinct repos on same server.
> David Roundy <droundy at darcs.net>**20080129162911]
> [Remove features not used in parsing patch dates.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080129092401]
> [[issue625] Non-recursive --repodir.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080128193459]
> [Do not announce recipients in send -O.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080128151812]
> [Test for issue625.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080128150059]
> [[issue457] Check match syntax early.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080128144840]
> [ratify use of hGetContents.
> David Roundy <droundy at darcs.net>**20080129150247]
> [Fix curl version check for pipelining.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080128223731]
> [issue612: regression test demonstrates that hashed and darcs-2 formats resist a certain kind of corruption.
> Mark Stosberg <mark at summersault.com>**20080126031445
> (but the old fashioned repo format does not).
> ]
> [Extract external-merge from {apply,pull} conflict options.
> nicolas.pouillard at gmail.com**20080128221810]
> [Don't emit \r when the handle is a terminal.
> nicolas.pouillard at gmail.com**20080128221705]
> [Replace unpull by obliterate as much as possible.
> nicolas.pouillard at gmail.com**20080117152443]
> [Move rollback to another section of TheCommands.
> nicolas.pouillard at gmail.com**20080117125340]
> [give progress output when getting over ssh.
> David Roundy <droundy at darcs.net>**20080128222133]
> [remove progress output that seems too often to be unhelpful.
> David Roundy <droundy at darcs.net>**20080128221922]
> [nicer error message in ssh connection code.
> David Roundy <droundy at darcs.net>**20080128221229]
> [use new ssh connection for copySSHs as well (speed my test up by 20% from the sftp code).
> David Roundy <droundy at darcs.net>**20080128220858]
> [fix bug introduced by rewrite of IsoDate module.
> David Roundy <droundy at darcs.net>**20080128220647
> The problem was that this module served two functions. One was to allow
> nice date matching, and the other was to allow parsing of old patches,
> created before we moved to the simple 20080127... format. I've split the
> latter function into a separate "frozen" module, so that we can safely
> develop more friendly date-parsing code.
> ]
> [Test infrastructure improvement: Add debug mode to Perl test scripts.
> Mark Stosberg <mark at summersault.com>**20080126154444
> Set this to see the output of every 'darcs' call made through this script:
> DARCS_DEBUG=1 ./bin/prove -v add.pl pull.pl
> ]
> [reuse ssh connection using transfer-mode.
> David Roundy <droundy at darcs.net>**20080128201613]
> [try using darcs transfer-mode if available.
> David Roundy <droundy at darcs.net>**20080128194406
> Note that this doesn't yet gain us any performance, it's just a step
> towards a faster connection-sharing approach.
> ]
> [issue227: regression test for get --context with an absolute path
> Mark Stosberg <mark at summersault.com>**20080126021139]
> [flush output in transfer-mode.
> David Roundy <droundy at darcs.net>**20080128193910]
> [add transfer-mode for faster ssh access.
> David Roundy <droundy at darcs.net>**20080128165256]
> [refactor SSH code into own module.
> David Roundy <droundy at darcs.net>**20080128172658]
> [remove unneeded export from URL.
> David Roundy <droundy at darcs.net>**20080128172534]
> [Fix optimize_relink for POSIX environment (no cp -a or du -l support; now needs perl)
> Kevin Quick <quick at sparq.org>**20080125220119]
> [Test Fix: make test pass when there is a space in the darcs repo path
> Mark Stosberg <mark at summersault.com>**20080126170531]
> [Test Fix: replace system calls with quoted function calls
> Mark Stosberg <mark at summersault.com>**20080126170253]
> [Test fix: work when darcs repo root has a space in it
> Mark Stosberg <mark at summersault.com>**20080126165818]
> [replace system call with Perl for better portability
> Mark Stosberg <mark at summersault.com>**20080124013552]
> [Remove more unneeded "--author" flags in the Perl test scripts, because the harness takes care of them
> Mark Stosberg <mark at summersault.com>**20080120010553]
> [remove now-unused perl_harness
> Mark Stosberg <mark at summersault.com>**20080120005850]
> [Merge Curl and Libwww to URL module.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080127182001]
> [Fix darcs version in libwww user agent.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080127181548]
> [Cleanup libwww module, better error handling, follow redirects (closes issue621).
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080127152710]
> [Rework libcurl module: use multi interface, support pipelining.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080127151756]
> [Remove TimeDiff experiment.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080128115307]
> [Simplify date matcher and fix tz-related bug.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080128115214
>
> When matching partial dates, we should not trust the ctYear, etc on the
> CalendarTime because it may vary by timezone. This also leads to a
> simplification in the tentative date matching.
>
> Note: subtle change in matching. Now all matching is done
> within a range, excluding the latter date. We check
> date < end
> instead of date <= end
> ]
> [More aggressive testing of date parser.
> Eric Kow <eric.kow at loria.fr>**20080127164254
>
> Using record --pipe to set patch dates.
> ]
> [Support more interactive use of echo_to_darcs in test harness.
> Eric Kow <eric.kow at loria.fr>**20080127164241]
> [Overhaul date parsing code.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080127163040
>
> - Add the ability to match on partial ISO 8601 dates, for example,
> treating 2008-08 as matching the whole month and not just the
> first day of that month
> - Fix some bugs in the parsing of fancy English dates
> - Fix bugs in the interpretation of English dates (for example,
> the interpretation of '3 days before last week' was for all
> patches since that date, and not for all patches *on* that
> date)
> - Treat user input as being in the local timezone
> - Make the matching code a bit more compact
> ]
> [Make documentation on dates more explicit.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080127162931]
> [Add ability to see skipped/included patches when verbose flag present.
> Kevin Quick <quick at sparq.org>**20080127190546]
> [Update patch selection feedback for messages more appropriate to the job being performed.
> Kevin Quick <quick at sparq.org>**20080126035000]
> [Add a comment for Real patches.
> nicolas.pouillard at gmail.com**20080128085313]
> [beautify remove_subsequenceFL.
> David Roundy <droundy at darcs.net>**20080125225637]
> [beautify remove_subsequenceRL.
> David Roundy <droundy at darcs.net>**20080125225440]
> [we removed --modernize-patches, so remove the test case.
> David Roundy <droundy at darcs.net>**20080125225423]
> [eliminate --modernize-patches and make --uncompress work (issue620)
> David Roundy <droundy at darcs.net>**20080125220624]
> [make hashed repositories respect --dont-compress.
> David Roundy <droundy at darcs.net>**20080125210529]
> [resolve conflict with Eric on controlMasterPath.
> David Roundy <droundy at darcs.net>**20080125203903]
> [More concise backup warning.
> Eric Kow <eric.kow at gmail.com>**20071105012930]
> [Remove now obsolete wrapper for Map (we now require GHC >= 6.4).
> Eric Kow <eric.kow at gmail.com>**20071105192636]
> [Modernise Data.Map import.
> Eric Kow <eric.kow at gmail.com>**20071105192530]
> [Give ssh CM socket a unique name for each darcs process.
> Eric Kow <eric.kow at gmail.com>**20071105021956
> Delete the socket in the unlikely event that a previous darcs had a socket
> with the same name left over.
> ]
> [Create ssh CM socket in $HOME/.darcs if possible.
> Eric Kow <eric.kow at gmail.com>**20071105015525]
> [Refactor y/n prompts.
> Eric Kow <eric.kow at gmail.com>**20071019213307]
> [issue578: steve and monica test for rolling back a rollback
> Mark Stosberg <mark at summersault.com>**20080118031606]
> [eliminate lazy parsing of patches, which gives bad error messages (issue364)
> David Roundy <droundy at darcs.net>**20080125191836]
> [[issue492] Check that context file actually exists in darcs get.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080125183741]
> [[issue227] Platform-independent absolute paths in get --context
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080125181702]
> [make uniqueoptions.sh test give friendlier output.
> David Roundy <droundy at darcs.net>**20080125183430]
> [fix code to avoid duplicate --verbose in --help (so tests will pass).
> David Roundy <droundy at darcs.net>**20080125183420]
> [Make verbosity flags advanced options universally.
> Eric Kow <E.Y.Kow at brighton.ac.uk>**20080125181005]
> [adding File::Temp 0.20 to tree for more consistent test results. It is GPL-licensed.
> Mark Stosberg <mark at summersault.com>**20080124033049]
> [update restrictive perms test to run a temporary directory and clean up after itself.
> Mark Stosberg <mark at summersault.com>**20080123000417
> Running in a tru temporary directory allows the potential to run tests in parallel.
> ]
> [update some ChangeLog entries to also credit those who contributed through bug reporting, test writing or feedback.
> Mark Stosberg <mark at summersault.com>**20080122235435]
> [ issue602: part 1: Always prefer our private copy of Test::More over the system-wide one for more consistent results
> Mark Stosberg <mark at summersault.com>**20080124005407]
> [ issue602, part 2: freshen our versions of Test::More and Test::Builder
> Mark Stosberg <mark at summersault.com>**20080123013642]
> [More error messages for libwww.
> Dmitry Kurochkin <dmitry.kurochkin at gmail.com>**20080124092600]
> [issue608: a new test for 'mv', following Zooko's bug report
> Mark Stosberg <mark at summersault.com>**20080124013856]
> [report progress in writing the inventory out for hashed repos.
> David Roundy <droundy at darcs.net>**20080125172017]
> [make empty key case of progress reporting fast.
> David Roundy <droundy at darcs.net>**20080125171859]
> [fix issue where we overwrote prompt with progress info.
> David Roundy <droundy at darcs.net>**20080125164609]
> [fix bug where we used show on an exception (and thus printed "User error").
> David Roundy <droundy at darcs.net>**20080125164209
> This partially addresses issue168 by improving the error message.
> ]
> [add gnulib sha1.c file as a faster sha1 option.
> David Roundy <droundy at darcs.net>**20080123212502]
> [fix embarrassing bug in External.
> David Roundy <droundy at darcs.net>**20080125152329
> (which demonstrates that I didn't compile before pushing)
> ]
> [for now, print progress reports to stdout.
> David Roundy <droundy at darcs.net>**20080125152105
> My hope is that this will alleviate some of the issues with progress
> reports overwriting prompts.
> ]
> [revamp progress reporting, making it more efficient and adding more output.
> David Roundy <droundy at darcs.net>**20080125151540
> Note that there is still at least one time sink that remains to be identified.
> ]
> [avoid creating darcs-ssh if we aren't using ControlMaster. (issue613)
> David Roundy <droundy at darcs.net>**20080125150846]
> [fix bug where darcs-ssh got even worse name (issue613).
> David Roundy <droundy at darcs.net>**20080125150355]
> [provide more detailed progress reports in HashedIO.
> David Roundy <droundy at darcs.net>**20080124145156]
> [print additional debug data in Progress.
> David Roundy <droundy at darcs.net>**20080124145114]
> [add a few more debug messages in Repository.Internal.
> David Roundy <droundy at darcs.net>**20080124144829]
> [fix incorrect report that we were reading patches.
> David Roundy <droundy at darcs.net>**20080124125040]
> [reenable mandatory sha1 checks, now that we can link with a faster sha1.
> David Roundy <droundy at darcs.net>**20080123203104]
> [remove (broken) git support and add openssl sha1 support.
> David Roundy <droundy at darcs.net>**20080123202025
> These two changes got merged together as I was introducing the configure.ac
> changes to support openssl as a sha1 alternative to our Haskell code.
>
> (Yes, I'm lazy.)
> ]
> [remove redundant hash checks in hashed IO code.
> David Roundy <droundy at darcs.net>**20080123173022]
> [output nicer progress in convert.
> David Roundy <droundy at darcs.net>**20080123170428]
> [output timings when --timings is specified.
> David Roundy <droundy at darcs.net>**20080123170314]
> [remove inaccurate message in convert.
> David Roundy <droundy at darcs.net>**20080123170243]
> [use debugMessage in HashedIO.
> David Roundy <droundy at darcs.net>**20080123160835]
> [add --timings flag (that as yet does nothing).
> David Roundy <droundy at darcs.net>**20080123154931]
> [Major Perl test suite clean-up.
> Mark Stosberg <mark at summersault.com>**20080120035651
> The primary purpose of this patch was make sure all the tests are executed in
> randomly named directories, which allows us to run Perl tests in parallel,
> without the directory names collided.
>
> This isn't enabled by default for "make test", but it is there to play with.
> In the test directory, you can now do:
>
> ./bin/prove -j9 *.pl
>
> to run 9 tests in parallel. There is also "--fork"
> option which should be a win on multi-CPU computers.
> See "perldoc ./bin/prove" for details.
>
> As part of this, a lot of boiler-plate