Hi!

For Kowey with love.

Yours,
   Petr.

Tue Sep  2 03:04:05 CEST 2008  [EMAIL PROTECTED]
  * Change type of subdir parameter in Cache/HashedIO functions from String to 
HashedDir.
  
  This refactor should make calling the Cache and HashedIO functions safer: you
  should be no longer able to swap hash and subdir accidentally in the call 
site,
  or mistype the subdirectory name.

Thu Sep  4 12:28:55 CEST 2008  [EMAIL PROTECTED]
  * Haddock speculateFileUsingCache.

New patches:

[Change type of subdir parameter in Cache/HashedIO functions from String to HashedDir.
[EMAIL PROTECTED]
 
 This refactor should make calling the Cache and HashedIO functions safer: you
 should be no longer able to swap hash and subdir accidentally in the call site,
 or mistype the subdirectory name.
] hunk ./src/Darcs/Repository.lhs 74
      getMarkedupFile,
      setScriptsExecutable
     )
-import Darcs.Repository.Cache ( unionCaches, fetchFileUsingCache )
+import Darcs.Repository.Cache ( unionCaches, fetchFileUsingCache, HashedDir(..) )
 import Darcs.Patch.Set ( PatchSet, SealedPatchSet )
 
 import Control.Monad ( unless, when )
hunk ./src/Darcs/Repository.lhs 256
                 let peekaboo :: PatchInfoAnd p C(x y) -> IO ()
                     peekaboo x = case extractHash x of
                                  Left _ -> return ()
-                                 Right h -> fetchFileUsingCache c "patches" h >> return ()
+                                 Right h -> fetchFileUsingCache c HashedPatchesDir h >> return ()
                 sequence_ $ mapRL peekaboo $ progressRL "Copying patches" $ concatRL r
   where putInfo = when (not $ Quiet `elem` opts) . putStrLn
 
hunk ./src/Darcs/Repository/Cache.lhs 7
 module Darcs.Repository.Cache (
                    cacheHash, okayHash, takeHash,
                    Cache(..), CacheType(..), CacheLoc(..), WritableOrNot(..),
+                   HashedDir(..), hashedDir,
                    unionCaches, cleanCaches,
                    fetchFileUsingCache, speculateFileUsingCache, writeFileUsingCache,
                    findFileMtimeUsingCache, setFileMtimeUsingCache, peekInCache,
hunk ./src/Darcs/Repository/Cache.lhs 42
 \end{code}
 
 \begin{code}
+data HashedDir = HashedPristineDir | HashedPatchesDir | HashedInventoriesDir
+hashedDir :: HashedDir -> String
+hashedDir HashedPristineDir = "pristine.hashed"
+hashedDir HashedPatchesDir = "patches"
+hashedDir HashedInventoriesDir = "inventories"
+
 data WritableOrNot = Writable | NotWritable deriving ( Show )
 data CacheType = Repo | Directory deriving ( Eq, Show )
 data CacheLoc = Cache !CacheType !WritableOrNot !String
hunk ./src/Darcs/Repository/Cache.lhs 93
               | otherwise = False
 
 
-findFileMtimeUsingCache :: Cache -> String -> String -> IO EpochTime
+findFileMtimeUsingCache :: Cache -> HashedDir -> String -> IO EpochTime
 findFileMtimeUsingCache (Ca cache) subdir f = mt cache
     where mt [] = return undefined_time
           mt (Cache Repo Writable r:_) = (modificationTime `fmap`
hunk ./src/Darcs/Repository/Cache.lhs 97
-                                          getSymbolicLinkStatus (r++"/"++darcsdir++"/"++subdir++"/"++f))
+                                          getSymbolicLinkStatus (r++"/"++darcsdir++"/"++(hashedDir subdir)++"/"++f))
                                          `catchall` return undefined_time
           mt (_:cs) = mt cs
 
hunk ./src/Darcs/Repository/Cache.lhs 101
-setFileMtimeUsingCache :: Cache -> String -> String -> EpochTime -> IO ()
+setFileMtimeUsingCache :: Cache -> HashedDir -> String -> EpochTime -> IO ()
 setFileMtimeUsingCache (Ca cache) subdir f t = st cache
     where st [] = return ()
hunk ./src/Darcs/Repository/Cache.lhs 104
-          st (Cache Repo Writable r:_) = setFileTimes (r++"/"++darcsdir++"/"++subdir++"/"++f) t t
+          st (Cache Repo Writable r:_) = setFileTimes (r++"/"++darcsdir++"/"++(hashedDir subdir)++"/"++f) t t
                                          `catchall` return ()
           st (_:cs) = st cs
 
hunk ./src/Darcs/Repository/Cache.lhs 108
-fetchFileUsingCache :: Cache -> String -> String -> IO (String, PackedString)
+fetchFileUsingCache :: Cache -> HashedDir -> String -> IO (String, PackedString)
 fetchFileUsingCache = fetchFileUsingCachePrivate Anywhere
 
hunk ./src/Darcs/Repository/Cache.lhs 111
-peekInCache :: Cache -> String -> String -> IO Bool
+peekInCache :: Cache -> HashedDir -> String -> IO Bool
 peekInCache (Ca cache) subdir f = cacheHasIt cache `catchall` return False
     where cacheHasIt [] = return False
           cacheHasIt (Cache _ NotWritable _:cs) = cacheHasIt cs
hunk ./src/Darcs/Repository/Cache.lhs 118
           cacheHasIt (Cache t Writable d:cs) = do ex <- doesFileExist (fn t d)
                                                   if ex then return True
                                                         else cacheHasIt cs
-          fn Directory d = d ++ "/" ++ subdir ++ "/" ++ f
-          fn Repo r = r ++ "/"++darcsdir++"/" ++ subdir ++ "/" ++ f
+          fn Directory d = d ++ "/" ++ (hashedDir subdir) ++ "/" ++ f
+          fn Repo r = r ++ "/"++darcsdir++"/" ++ (hashedDir subdir) ++ "/" ++ f
 
hunk ./src/Darcs/Repository/Cache.lhs 121
-speculateFileUsingCache :: Cache -> String -> String -> IO ()
+speculateFileUsingCache :: Cache -> HashedDir -> String -> IO ()
 speculateFileUsingCache c sd h = do debugMessage $ "Speculating on "++h
                                     copyFileUsingCache OnlySpeculate c sd h
 
hunk ./src/Darcs/Repository/Cache.lhs 127
 data OrOnlySpeculate = ActuallyCopy | OnlySpeculate deriving ( Eq )
 
-copyFileUsingCache :: OrOnlySpeculate -> Cache -> String -> String -> IO ()
+copyFileUsingCache :: OrOnlySpeculate -> Cache -> HashedDir -> String -> IO ()
 copyFileUsingCache oos (Ca cache) subdir f =
hunk ./src/Darcs/Repository/Cache.lhs 129
-    do debugMessage $ "I'm doing copyFileUsingCache on "++subdir++"/"++f
+    do debugMessage $ "I'm doing copyFileUsingCache on "++(hashedDir subdir)++"/"++f
        Just stickItHere <- cacheLoc cache
        createDirectoryIfMissing False (reverse $ dropWhile (/='/') $ reverse stickItHere)
        sfuc cache stickItHere
hunk ./src/Darcs/Repository/Cache.lhs 147
                                                then speculateFileOrUrl (fn t d) out
                                                else copyFileOrUrl [] (fn t d) out Cachable
           sfuc (_:cs) out = sfuc cs out
-          fn Directory d = d ++ "/" ++ subdir ++ "/" ++ f
-          fn Repo r = r ++ "/"++darcsdir++"/" ++ subdir ++ "/" ++ f
+          fn Directory d = d ++ "/" ++ (hashedDir subdir) ++ "/" ++ f
+          fn Repo r = r ++ "/"++darcsdir++"/" ++ (hashedDir subdir) ++ "/" ++ f
 
 
 data FromWhere = LocalOnly | Anywhere deriving ( Eq )
hunk ./src/Darcs/Repository/Cache.lhs 153
 
-fetchFileUsingCachePrivate :: FromWhere -> Cache -> String -> String -> IO (String, PackedString)
+fetchFileUsingCachePrivate :: FromWhere -> Cache -> HashedDir -> String -> IO (String, PackedString)
 fetchFileUsingCachePrivate fromWhere (Ca cache) subdir f =
     do when (fromWhere == Anywhere) $ copyFileUsingCache ActuallyCopy (Ca cache) subdir f
        ffuc cache
hunk ./src/Darcs/Repository/Cache.lhs 157
-    `catchall` debugFail ("Couldn't fetch `"++f++"'\nin subdir "++subdir++
+    `catchall` debugFail ("Couldn't fetch `"++f++"'\nin subdir "++(hashedDir subdir)++
                           " from sources:\n\n"++show (Ca cache))
     where ffuc (Cache t NotWritable d:cs)
               | Anywhere == fromWhere || is_file (fn t d) =
hunk ./src/Darcs/Repository/Cache.lhs 195
           ffuc (_:cs) = ffuc cs
           ffuc [] = debugFail $ "No sources from which to fetch file `"++f++"'\n"++ show (Ca cache)
           tryLinking ff (Cache Directory Writable d) =
-              do createDirectoryIfMissing False (d++"/"++subdir)
+              do createDirectoryIfMissing False (d++"/"++(hashedDir subdir))
                  createLink ff (fn Directory d)
               `catchall` return ()
           tryLinking _ _ = return ()
hunk ./src/Darcs/Repository/Cache.lhs 199
-          fn Directory d = d ++ "/" ++ subdir ++ "/" ++ f
-          fn Repo r = r ++ "/"++darcsdir++"/" ++ subdir ++ "/" ++ f
+          fn Directory d = d ++ "/" ++ (hashedDir subdir) ++ "/" ++ f
+          fn Repo r = r ++ "/"++darcsdir++"/" ++ (hashedDir subdir) ++ "/" ++ f
 
hunk ./src/Darcs/Repository/Cache.lhs 202
-createCache :: CacheType -> String -> String -> IO ()
-createCache Directory d subdir = createDirectoryIfMissing True (d ++ "/" ++ subdir)
+createCache :: CacheType -> String -> HashedDir -> IO ()
+createCache Directory d subdir = createDirectoryIfMissing True (d ++ "/" ++ (hashedDir subdir))
 createCache _ _ _ = return ()
 
hunk ./src/Darcs/Repository/Cache.lhs 206
-writeFileUsingCache :: Cache -> [DarcsFlag] -> String -> PackedString -> IO String
+writeFileUsingCache :: Cache -> [DarcsFlag] -> HashedDir -> PackedString -> IO String
 writeFileUsingCache (Ca cache) opts subdir ps =
     (fetchFileUsingCachePrivate LocalOnly (Ca cache) subdir hash >> return hash) `catchall`
     wfuc cache `catchall`
hunk ./src/Darcs/Repository/Cache.lhs 210
-         debugFail ("Couldn't write `"++hash++"'\nin subdir "++subdir++" to sources:\n\n"++
+         debugFail ("Couldn't write `"++hash++"'\nin subdir "++(hashedDir subdir)++" to sources:\n\n"++
                     show (Ca cache))
     where hash = cacheHash ps
           wfuc (Cache _ NotWritable _:cs) = wfuc cs
hunk ./src/Darcs/Repository/Cache.lhs 220
                     then writeAtomicFilePS (fn t d) ps -- FIXME: create links in caches
                     else gzWriteAtomicFilePS (fn t d) ps -- FIXME: create links in caches
                  return hash
-          wfuc [] = debugFail $ "No location to write file `" ++ subdir ++"/"++hash ++ "'"
-          fn Directory d = d ++ "/" ++ subdir ++ "/" ++ hash
-          fn Repo r = r ++ "/"++darcsdir++"/" ++ subdir ++ "/" ++ hash
+          wfuc [] = debugFail $ "No location to write file `" ++ (hashedDir subdir) ++"/"++hash ++ "'"
+          fn Directory d = d ++ "/" ++ (hashedDir subdir) ++ "/" ++ hash
+          fn Repo r = r ++ "/"++darcsdir++"/" ++ (hashedDir subdir) ++ "/" ++ hash
 
hunk ./src/Darcs/Repository/Cache.lhs 224
-cleanCaches :: Cache -> String -> IO ()
+cleanCaches :: Cache -> HashedDir -> IO ()
 cleanCaches (Ca cs) subdir = mapM_ cleanCache cs
     where cleanCache (Cache Directory Writable d) =
hunk ./src/Darcs/Repository/Cache.lhs 227
-             (withCurrentDirectory (d++"/"++subdir) $
+             (withCurrentDirectory (d++"/"++(hashedDir subdir)) $
               do fs <- getDirectoryContents "."
hunk ./src/Darcs/Repository/Cache.lhs 229
-                 mapM_ clean $ progressList ("Cleaning cache "++d++"/"++subdir) $
+                 mapM_ clean $ progressList ("Cleaning cache "++d++"/"++(hashedDir subdir)) $
                        filter okayHash fs) `catchall` return ()
           cleanCache _ = return ()
           clean f = do lc <- linkCount `liftM` getSymbolicLinkStatus f
hunk ./src/Darcs/Repository/HashedIO.lhs 39
 import Darcs.Repository.Cache ( Cache, fetchFileUsingCache, writeFileUsingCache,
                                 peekInCache, speculateFileUsingCache,
                                 findFileMtimeUsingCache, setFileMtimeUsingCache,
-                                okayHash, cleanCaches )
+                                okayHash, cleanCaches, HashedDir(..), hashedDir )
 import Darcs.Patch ( Patchy, apply )
 import Darcs.IO ( ReadableDirectory(..), WriteableDirectory(..) )
 import Darcs.Flags ( DarcsFlag )
hunk ./src/Darcs/Repository/HashedIO.lhs 51
 import FastPackedString ( PackedString, packString, unpackPS, linesPS, unlinesPS, nilPS, lengthPS )
 import SHA1 ( sha1PS )
 
-readHashFile :: Cache -> String -> String -> IO (String,PackedString)
+readHashFile :: Cache -> HashedDir -> String -> IO (String,PackedString)
 readHashFile c subdir hash =
hunk ./src/Darcs/Repository/HashedIO.lhs 53
-    do debugMessage $ "Reading hash file "++hash++" from "++subdir++"/"
+    do debugMessage $ "Reading hash file "++hash++" from "++(hashedDir subdir)++"/"
        fetchFileUsingCache c subdir hash
 
 applyHashed :: Patchy q => Cache -> [DarcsFlag] -> String -> q C(x y) -> IO String
hunk ./src/Darcs/Repository/HashedIO.lhs 57
-applyHashed c fs h p = do s <- slurpHashed c fs h "pristine.hashed"
+applyHashed c fs h p = do s <- slurpHashed c fs h
                           let ms = withSlurpy s $ apply fs p
                           case ms of
                             Left e -> fail e
hunk ./src/Darcs/Repository/HashedIO.lhs 61
-                            Right (s', ()) -> hashSlurped c fs s' "pristine.hashed"
+                            Right (s', ()) -> hashSlurped c fs s'
 {-
 applyHashed c fs h p = do (_,hd) <- runStateT (apply fs p) $
                                     HashDir { permissions = RW, cache = c,
hunk ./src/Darcs/Repository/HashedIO.lhs 70
 -}
 
 data HashDir r p = HashDir { permissions :: !r, cache :: !Cache,
-                             options :: ![DarcsFlag], rootHash :: !String,
-                             hashDir :: !String }
+                             options :: ![DarcsFlag], rootHash :: !String }
 type HashedIO r p = StateT (HashDir r p) IO
 
 data RO = RO
hunk ./src/Darcs/Repository/HashedIO.lhs 176
 
 readhash :: String -> HashedIO r p PackedString
 readhash h = do c <- gets cache
-                dir_ <- gets hashDir
-                z <- lift $ unsafeInterleaveIO $ readHashFile c dir_ h
+                z <- lift $ unsafeInterleaveIO $ readHashFile c HashedPristineDir h
                 let (_,out) = z
                 return out
 
hunk ./src/Darcs/Repository/HashedIO.lhs 185
                          readhash h
 
 gethashmtime :: String -> HashedIO r p EpochTime
-gethashmtime h = do HashDir _ c _ _ dir_ <- get
-                    lift $ unsafeInterleaveIO $ findFileMtimeUsingCache c dir_ h
+gethashmtime h = do HashDir _ c _ _ <- get
+                    lift $ unsafeInterleaveIO $ findFileMtimeUsingCache c HashedPristineDir h
 
 withh :: String -> HashedIO RW p a -> HashedIO RW p (String,a)
 withh h j = do hd <- get
hunk ./src/Darcs/Repository/HashedIO.lhs 204
              return x
 
 safeInterleave :: HashedIO RO p a -> HashedIO r p a
-safeInterleave job = do HashDir _ c opts h dir_ <- get
+safeInterleave job = do HashDir _ c opts h <- get
                         z <- lift $ unsafeInterleaveIO $ runStateT job
hunk ./src/Darcs/Repository/HashedIO.lhs 206
-                             (HashDir { permissions = RO, cache = c, options = opts, rootHash = h, hashDir = dir_ })
+                             (HashDir { permissions = RO, cache = c, options = opts, rootHash = h })
                         let (x,_) = z
                         return x
 
hunk ./src/Darcs/Repository/HashedIO.lhs 217
               return cc
     where speculate :: [(a,b,String)] -> HashedIO r q ()
           speculate c = do cac <- gets cache
-                           dir_ <- gets hashDir
-                           mapM_ (\(_,_,z) -> lift $ speculateFileUsingCache cac dir_ z) c
+                           mapM_ (\(_,_,z) -> lift $ speculateFileUsingCache cac HashedPristineDir z) c
           peekroot :: HashedIO r p Bool
hunk ./src/Darcs/Repository/HashedIO.lhs 219
-          peekroot = do HashDir _ c _ h dir_ <- get
-                        lift $ peekInCache c dir_ h
+          peekroot = do HashDir _ c _ h <- get
+                        lift $ peekInCache c HashedPristineDir h
 
 writeroot :: [(ObjType, FileName, String)] -> HashedIO r p ()
 writeroot c = do h <- writedir c
hunk ./src/Darcs/Repository/HashedIO.lhs 262
 writeHashFile :: PackedString -> HashedIO r p String
 writeHashFile ps = do c <- gets cache
                       opts <- gets options
-                      dir_ <- gets hashDir
-                      lift $ writeFileUsingCache c opts dir_ ps
+                      lift $ writeFileUsingCache c opts HashedPristineDir ps
 
hunk ./src/Darcs/Repository/HashedIO.lhs 264
-slurpHashed :: Cache -> [DarcsFlag] -> String -> String -> IO Slurpy
-slurpHashed c opts h dir_ = fst `fmap` runStateT slh
+slurpHashed :: Cache -> [DarcsFlag] -> String -> IO Slurpy
+slurpHashed c opts h = fst `fmap` runStateT slh
                                   (HashDir { permissions = RO, cache = c,
hunk ./src/Darcs/Repository/HashedIO.lhs 267
-                                             options = opts, rootHash = h,
-                                             hashDir = dir_ })
+                                             options = opts, rootHash = h })
 
 slh :: HashedIO r p Slurpy
 slh = do c <- readroot
hunk ./src/Darcs/Repository/HashedIO.lhs 288
 rootdir :: FileName
 rootdir = fp2fn "."
 
-hashSlurped :: Cache -> [DarcsFlag] -> Slurpy -> String -> IO String
-hashSlurped c opts sl dir_ =
+hashSlurped :: Cache -> [DarcsFlag] -> Slurpy -> IO String
+hashSlurped c opts sl =
     do beginTedious k
        h <- fst `fmap` runStateT (hsl sl)
             (HashDir { permissions = RW, cache = c,
hunk ./src/Darcs/Repository/HashedIO.lhs 293
-                       hashDir = dir_,
                        options = opts, rootHash = sha1PS nilPS })
        endTedious k
        return h
hunk ./src/Darcs/Repository/HashedIO.lhs 319
                                        g (_:x) = g x
 
 syncHashed :: Cache -> Slurpy -> String -> IO ()
-syncHashed c s r = do runStateT sh $ HashDir {permissions=RW, cache=c, options=[], rootHash=r, hashDir="pristine.hashed" }
+syncHashed c s r = do runStateT sh $ HashDir {permissions=RW, cache=c, options=[], rootHash=r }
                       return ()
     where sh = do cc <- readroot
                   lift $ tediousSize k (length cc)
hunk ./src/Darcs/Repository/HashedIO.lhs 329
                         Nothing -> return ()
           sh' (F,n,h) = case progress k $ grab n s of
                         Just (SlurpFile _ (_,t',l) x) ->
-                            do dir_ <- gets hashDir
-                               t <- lift $ findFileMtimeUsingCache c dir_ h
+                            do t <- lift $ findFileMtimeUsingCache c HashedPristineDir h
                                when (t' /= undefined_time && t' /= t) $
                                     do ps <- readhash h
                                        when (lengthPS ps == fromIntegral l && ps == x) $
hunk ./src/Darcs/Repository/HashedIO.lhs 333
-                                            lift $ setFileMtimeUsingCache c dir_ h t'
+                                            lift $ setFileMtimeUsingCache c HashedPristineDir h t'
                         _ -> return ()
           k = "Synchronizing pristine"
 
hunk ./src/Darcs/Repository/HashedIO.lhs 339
 copyHashed :: String -> Cache -> [DarcsFlag] -> String -> IO ()
 copyHashed k c opts z = do runStateT cph $ HashDir { permissions = RO, cache = c,
-                                                     options = opts, rootHash = z,
-                                                   hashDir = "pristine.hashed" }
+                                                     options = opts, rootHash = z }
                            return ()
     where cph = do cc <- readroot
                    lift $ tediousSize k (length cc)
hunk ./src/Darcs/Repository/HashedIO.lhs 358
 copyPartialHashed c opts root ff =
     do createDirectoryIfMissing True (basename ff)
        runStateT (cp $ fp2fn ff) $ HashDir { permissions = RO, cache = c,
-                                             options=opts, rootHash = root,
-                                             hashDir = "pristine.hashed" }
+                                             options=opts, rootHash = root }
        return ()
  where basename = reverse . dropWhile ('/' /=) . dropWhile ('/' ==) . reverse
        cp f = do mt <- identifyThing f
hunk ./src/Darcs/Repository/HashedIO.lhs 370
                    Nothing -> return ()
 
 -- Seems to list all hashes reachable from "root".
-listHashedContents :: String -> Cache -> [DarcsFlag] -> String -> String -> IO [String]
-listHashedContents k c opts root dir_ =
+listHashedContents :: String -> Cache -> [DarcsFlag] -> String -> IO [String]
+listHashedContents k c opts root =
     do beginTedious k
        tediousSize k 1
hunk ./src/Darcs/Repository/HashedIO.lhs 374
-       x <- fst `fmap` runStateT (lhc (D,fp2fn ".",root)) (HashDir RO c opts root dir_)
+       x <- fst `fmap` runStateT (lhc (D,fp2fn ".",root)) (HashDir RO c opts root)
        endTedious k
        return x
     where lhc :: (ObjType, FileName, String) -> HashedIO r a [String]
hunk ./src/Darcs/Repository/HashedIO.lhs 385
                                return (d:concat hcxs)
           lhc (F,_,h) = return [h]
 
-clean_hashdir :: Cache -> [DarcsFlag] -> String -> String -> IO ()
+clean_hashdir :: Cache -> [DarcsFlag] -> HashedDir -> String -> IO ()
 clean_hashdir c opts dir_ hashroot =
    do -- we'll remove obsolete bits of "dir"
hunk ./src/Darcs/Repository/HashedIO.lhs 388
-      debugMessage $ "Cleaning out " ++ dir_ ++ "..."
-      let hashdir = darcsdir ++ "/" ++ dir_ ++ "/"
-      hs <- listHashedContents "cleaning up..." c opts hashroot dir_
+      debugMessage $ "Cleaning out " ++ (hashedDir dir_) ++ "..."
+      let hashdir = darcsdir ++ "/" ++ (hashedDir dir_) ++ "/"
+      hs <- listHashedContents "cleaning up..." c opts hashroot
       fs <- filter okayHash `fmap` getDirectoryContents hashdir
       mapM_ (removeFileMayNotExist . (hashdir++)) (fs \\ hs)
       -- and also clean out any global caches.
hunk ./src/Darcs/Repository/HashedRepo.lhs 47
 import Darcs.FilePathUtils ( absolute_dir )
 import Darcs.Repository.Cache ( Cache, fetchFileUsingCache, speculateFileUsingCache,
                                 writeFileUsingCache,
-                                unionCaches, repo2cache, okayHash, takeHash )
+                                unionCaches, repo2cache, okayHash, takeHash,
+                                HashedDir(..), hashedDir )
 import Darcs.Repository.HashedIO ( applyHashed, slurpHashed, hashSlurped,
                                    copyHashed, syncHashed, copyPartialsHashed,
                                    clean_hashdir )
hunk ./src/Darcs/Repository/HashedRepo.lhs 104
    do -- we'll remove obsolete bits of our pristine cache
       debugMessage "Cleaning out the pristine cache..."
       i <- gzReadFilePS (darcsdir++"/hashed_inventory")
-      clean_hashdir (extractCache r) opts "pristine.hashed" $ inv2pris i
+      clean_hashdir (extractCache r) opts HashedPristineDir $ inv2pris i
 
 add_to_tentative_inventory :: RepoPatch p => Cache -> [DarcsFlag] -> PatchInfoAnd p C(x y) -> IO FilePath
 add_to_tentative_inventory c opts p =
hunk ./src/Darcs/Repository/HashedRepo.lhs 141
           cut_inv xs ((hp:<:r):<:rs) | info hp `elem` xs = cut_inv (info hp `delete` xs) (r:<:rs)
           cut_inv _ _ = Nothing
 
-writeHashFile :: Cache -> [DarcsFlag] -> String -> Doc -> IO String
-writeHashFile c opts subdir d = do debugMessage $ "Writing hash file to "++subdir
+writeHashFile :: Cache -> [DarcsFlag] -> HashedDir -> Doc -> IO String
+writeHashFile c opts subdir d = do debugMessage $ "Writing hash file to "++(hashedDir subdir)
                                    writeFileUsingCache c opts subdir $ renderPS d
 
 read_repo :: RepoPatch p => Repository p C(r u t) -> [DarcsFlag] -> String -> IO (PatchSet p C(r))
hunk ./src/Darcs/Repository/HashedRepo.lhs 184
           speculate :: String -> [(PatchInfo, String)] -> IO ()
           speculate h is = do already_got_one <- doesFileExist (d++"/"++darcsdir++"/patches/"++h)
                               unless already_got_one $
-                                     mapM_ (speculateFileUsingCache (extractCache repo) "patches" . snd) is
+                                     mapM_ (speculateFileUsingCache (extractCache repo) HashedPatchesDir . snd) is
           parse :: Patchy p => PatchInfo -> String -> IO (Sealed (p C(x)))
           parse i h = do debugMessage ("Reading patch file: "++ show (human_friendly i))
hunk ./src/Darcs/Repository/HashedRepo.lhs 187
-                         (fn,ps) <- fetchFileUsingCache (extractCache repo) "patches" h
+                         (fn,ps) <- fetchFileUsingCache (extractCache repo) HashedPatchesDir h
                          case readPatch ps of
                            Just (p,_) -> return p
                            Nothing -> fail $ unlines ["Couldn't parse file "++fn,
hunk ./src/Darcs/Repository/HashedRepo.lhs 208
                                    Sealed x <- createHashed h (parse i)
                                    return $ patchInfoAndPatch i $ unsafeCoerceP x
     where parse i h = do debugMessage ("Reading patch file: "++ show (human_friendly i))
-                         (fn,ps) <- fetchFileUsingCache c "patches" h
+                         (fn,ps) <- fetchFileUsingCache c HashedPatchesDir h
                          case readPatch ps of
                            Just (x,_) -> return x
                            Nothing -> fail $ unlines ["Couldn't parse patch file "++fn,
hunk ./src/Darcs/Repository/HashedRepo.lhs 253
                              Just lasthash -> text ("Starting with inventory:\n"++lasthash) $$
                                               inventorylist
                              _ -> inventorylist
-     hash <- writeHashFile c opts "inventories" inventorycontents
+     hash <- writeHashFile c opts HashedInventoriesDir inventorycontents
      return $ Just hash
 
 write_patch_if_necesary :: RepoPatch p => Cache -> [DarcsFlag]
hunk ./src/Darcs/Repository/HashedRepo.lhs 261
 write_patch_if_necesary c opts hp =
     case extractHash hp of
     Right h -> return (info hp, h)
-    Left p -> fmap (\h -> (info hp, h)) $ writeHashFile c opts "patches" $ showPatch p
+    Left p -> fmap (\h -> (info hp, h)) $ writeHashFile c opts HashedPatchesDir $ showPatch p
 
 pihash :: (PatchInfo,String) -> Doc
 pihash (pinf,hash) = showPatchInfo pinf $$ text ("hash: " ++ hash ++ "\n")
hunk ./src/Darcs/Repository/HashedRepo.lhs 283
 
 read_inventories :: Cache -> [DarcsFlag] -> String -> IO [[(PatchInfo, String)]]
 read_inventories cache opts ihash = do
-    (fn,i_and_p) <- fetchFileUsingCache cache "inventories" ihash
+    (fn,i_and_p) <- fetchFileUsingCache cache HashedInventoriesDir ihash
     let i = skip_pristine i_and_p
     (rest,str) <- case breakOnPS '\n' i of
                   (swt,pistr) | swt == packString "Starting with inventory:" ->
hunk ./src/Darcs/Repository/HashedRepo.lhs 330
 slurp_pristine_private :: Cache -> [DarcsFlag] -> PackedString -> IO Slurpy
 slurp_pristine_private c opts inv = case inv2pris inv of
                                     h | h == sha1PS nilPS -> return empty_slurpy
-                                      | otherwise -> slurpHashed c opts h "pristine.hashed"
+                                      | otherwise -> slurpHashed c opts h
 
 pristine_from_working :: Cache -> [DarcsFlag] -> IO ()
 pristine_from_working c opts = replacePristine c opts "."
hunk ./src/Darcs/Repository/HashedRepo.lhs 337
 
 replacePristine :: Cache -> [DarcsFlag] -> FilePath -> IO ()
 replacePristine c opts d = do s <- slurp_all_but_darcs d
-                              h <- hashSlurped c opts s "pristine.hashed"
+                              h <- hashSlurped c opts s
                               let t = darcsdir++"/hashed_inventory"
                               i <- gzReadFilePS t
                               writeDocBinFile t $ pris2inv h i
[Haddock speculateFileUsingCache.
[EMAIL PROTECTED] hunk ./src/Darcs/Repository/Cache.lhs 121
           fn Directory d = d ++ "/" ++ (hashedDir subdir) ++ "/" ++ f
           fn Repo r = r ++ "/"++darcsdir++"/" ++ (hashedDir subdir) ++ "/" ++ f
 
+-- |Note that the file is likely to be useful soon: pipelined downloads will
+-- add it to the (low-priority) queue, for the rest it is a noop.
 speculateFileUsingCache :: Cache -> HashedDir -> String -> IO ()
 speculateFileUsingCache c sd h = do debugMessage $ "Speculating on "++h
                                     copyFileUsingCache OnlySpeculate c sd h

Context:

[don't show ssh stderr output unless we're passed --debug.
David Roundy <[EMAIL PROTECTED]>**20080831200751
 Also fix the incorrect comment that often incorrectly declares that the
 server is running an older version of darcs.
] 
[fix bug in --list-options (tab completion).
David Roundy <[EMAIL PROTECTED]>**20080830195051] 
[fix bug in makeRelative.
David Roundy <[EMAIL PROTECTED]>**20080830174722] 
[add warning to configure about Haskell zlib speed
Ganesh Sittampalam <[EMAIL PROTECTED]>**20080830013457] 
[make use of Haskell zlib dependent on bytestring
Ganesh Sittampalam <[EMAIL PROTECTED]>**20080829221605] 
[add option to use Haskell zlib package
Ganesh Sittampalam <[EMAIL PROTECTED]>**20080829203032] 
[Remove unused FileSystem module.
Eric Kow <[EMAIL PROTECTED]>**20080822151214] 
[Add a link to a repository browser for darcs's code.
Eric Kow <[EMAIL PROTECTED]>**20080829144357] 
[Replace grep invocation by perl code
[EMAIL PROTECTED] 
[clean up network/get.sh test.
David Roundy <[EMAIL PROTECTED]>**20080824190916] 
[fix type of withRepository and friends.
David Roundy <[EMAIL PROTECTED]>**20080828181834] 
[fix recent bug in --list-options.
David Roundy <[EMAIL PROTECTED]>**20080828162707] 
[Check for package random on windows, used in Ssh module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080828091554] 
[Debug messages in curl module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080827222845] 
[TAG working version.
David Roundy <[EMAIL PROTECTED]>**20080828131617] 
[Use InclusiveOrExclusive instead of Bool in apply_inv_to_matcher.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080827201820] 
[add more modules to make witnesses.
David Roundy <[EMAIL PROTECTED]>**20080827201217] 
[updates to Darcs.Patch.Unit for type witnesses
Jason Dagit <[EMAIL PROTECTED]>**20080827165445] 
[Refactor get_matcher and apply_inv_to_matcher functions from Darcs.Match module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080827105843] 
[Resolve issue966: fix apply_inv_to_matcher_inclusive.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080827091833] 
[Simplify withCurrentDirectory.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080823004712] 
[updates to Sealed.lhs to support type witness refactor in commands
Jason Dagit <[EMAIL PROTECTED]>**20080827165357] 
[updates to Ordered.lhs to support type witness refactor in commands
Jason Dagit <[EMAIL PROTECTED]>**20080827165053] 
[make Annotate.lhs compile with type witnesses
Jason Dagit <[EMAIL PROTECTED]>**20080827164003] 
[fix type witnesses in Internal.
David Roundy <[EMAIL PROTECTED]>**20080827190200] 
[updates to Repository.Internal to fix conflicts and support type witness refactor in commands
Jason Dagit <[EMAIL PROTECTED]>**20080827165327] 
[fix error in Properties due to new commuteFL
Jason Dagit <[EMAIL PROTECTED]>**20080827044025] 
[fix minor type witness compile error with new commuteFL
Jason Dagit <[EMAIL PROTECTED]>**20080827041344] 
[fix conflicts with get_extra changes
Jason Dagit <[EMAIL PROTECTED]>**20080827041321] 
[improve reporting for bug in get_extra
Jason Dagit <[EMAIL PROTECTED]>**20080825011810] 
[Finish refactor of Unrevert as well as making it pass double-unrevert.sh
Jason Dagit <[EMAIL PROTECTED]>**20080825185907] 
[add double-unrevert.sh test
Jason Dagit <[EMAIL PROTECTED]>**20080825183235] 
[partial type witnesses in Unrevert
Jason Dagit <[EMAIL PROTECTED]>**20080813053837] 
[More ChangeLog entries since 2.0.2
Eric Kow <[EMAIL PROTECTED]>**20080826082638] 
[fix bug in defaultrepo.
David Roundy <[EMAIL PROTECTED]>**20080827152710] 
[fix accidental reversal in tentativelyAddToPending
Jason Dagit <[EMAIL PROTECTED]>**20080826003605] 
[minor refator to get_extra improve comments
Jason Dagit <[EMAIL PROTECTED]>**20080825170111] 
[Same ChangeLog entries since 2.0.2
Eric Kow <[EMAIL PROTECTED]>**20080825164844] 
[Some more globally ignored changes.
Eric Kow <[EMAIL PROTECTED]>**20080825164814] 
[Changelog (ignore 'Add a test entries')
Eric Kow <[EMAIL PROTECTED]>**20080822152614] 
[Simplify filepath handling, cutting lots of hardly-used code.
David Roundy <[EMAIL PROTECTED]>**20080824173919] 
[don't bother computing path when checking prereqs (since we now can handle looking at beginning/ending working directories).
David Roundy <[EMAIL PROTECTED]>**20080823193448] 
[resolve issue950: fix fix_filepath to work with --repodir (and add test demonstrating this).
David Roundy <[EMAIL PROTECTED]>**20080823185940] 
[eliminate fix_flag.
David Roundy <[EMAIL PROTECTED]>**20080823180947] 
[add new framework for ensuring that certain arguments are converted to absolute paths.
David Roundy <[EMAIL PROTECTED]>**20080823164410
 Currently this is only used for --output, but there are a few other
 commands we can fix.  Ideally, we'll fix enough flags that fix_flag
 will become identity, and can be removed.
] 
[make Darcs.Lock functions accept FilePathLike arguments.
David Roundy <[EMAIL PROTECTED]>**20080823162940] 
[refactor maybeMkSubPath very slightly.
David Roundy <[EMAIL PROTECTED]>**20080823143505] 
[refactor repoPath very slightly.
David Roundy <[EMAIL PROTECTED]>**20080823143153] 
[make makeAbsolute behavior match comment.
David Roundy <[EMAIL PROTECTED]>**20080823121149] 
[Fix makeAbsolute to work with '../foo' paths.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080822184823
 This fixes option arguments with '../', like 'darcs send -o ../foo.dpatch'.
 Part of issue950.
] 
[move withCurrentDirectory, withTempDir and withPermDir
David Roundy <[EMAIL PROTECTED]>**20080822155100
 out of RepoPath.  This is a pretty invasive change, part of a pathetic
 attempt to allow AbsolutePath to permeate the code when we know that
 paths are absolute.  Eventually this will allow us to statically
 ensure that paths *are* absolute.  For now, it mostly just makes a few
 things more ugly.  Eventually we'd like to only use (for instance)
 Darcs.RepoPath.getCurrentDirectory, which itself witnesses that the
 resulting path must be absolute.
] 
[rewrite mkAbsolutePath to be safe.
David Roundy <[EMAIL PROTECTED]>**20080822150037] 
[resolve conflicts.
David Roundy <[EMAIL PROTECTED]>**20080822133823] 
[Resolve issue936: fix type witnesses configure check.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819193228] 
[Use forkIO in URL module as suggested by Simon Marlow.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819182648] 
[Remove HTTP.copyUrl, integrate it to URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819170350] 
[More URL module refactoring.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819145234] 
[Canonize Nathaniel Filardo and Simon Marlow.
Eric Kow <[EMAIL PROTECTED]>**20080822021232] 
[Add test case for issue966 (from Dan Pascu's bug report)
Eric Kow <[EMAIL PROTECTED]>**20080822020616] 
[remove trailing whitespace.
David Roundy <[EMAIL PROTECTED]>**20080821224353] 
[Documentation for match touch primitive.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080821193706] 
[Resolve issue115: match patches touching given files.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080821183355] 
[fix type witnesses in with_selected_patch_from_repo.
David Roundy <[EMAIL PROTECTED]>**20080820130112] 
[clean up bugs functions (eliminate darcsBug.h).
David Roundy <[EMAIL PROTECTED]>**20080820124425] 
[Fix a bug with incorrectly specified with_selecte_patch_from_repository.
Jason Dagit <[EMAIL PROTECTED]>**20080819233348] 
[Remove HTTP.exists, use Autoconf.have_HTTP instead.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819131617] 
[fix improper use of bug in HTTP.
David Roundy <[EMAIL PROTECTED]>**20080819211201
 In these cases failure is not a bug, it may just as well mean that the
 user has typed in a bad URL.
] 
[Do not import HTTP module in Darcs.Bug, use bug and debugFail for error reporting in HTTP module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080819124207] 
[fix incompatibility with ghc 6.6.
David Roundy <[EMAIL PROTECTED]>**20080819161540] 
[make scan_bundle create a lazy patch bundle.
David Roundy <[EMAIL PROTECTED]>**20080819154624
 The idea is to more easily catch errors in which the patch bundle is
 misused.
] 
[resolve conflicts with Darcs.Ordered change.
David Roundy <[EMAIL PROTECTED]>**20080819153558] 
[replace separate_middle_last_from_first and separate_last_from_first_middle with get_choices
Jason Dagit <[EMAIL PROTECTED]>**20080815222635] 
[correct a bug in with_selected_patches_from_repository
Jason Dagit <[EMAIL PROTECTED]>**20080815201125
 Fixing this bug allows w_s_p_f_r to have the expected type signature
 and also corrects a problem where the non-selected patches were returned
 in the wrong context.
] 
[refine type witnesses in SelectChanges
Jason Dagit <[EMAIL PROTECTED]>**20080813050425] 
[make WhatsNew work with type witnesses
Jason Dagit <[EMAIL PROTECTED]>**20080813044354] 
[major refactor of SelectChanges to work with type witnesses
Jason Dagit <[EMAIL PROTECTED]>**20080813031625] 
[Eliminate HopefullyPrivate (fixed patch edition)
[EMAIL PROTECTED] 
[Move Darcs.Patch.Ordered to Darcs.Ordered since it isn't patchy
[EMAIL PROTECTED] 
[Fix use of threadWaitRead on Windows
Simon Marlow <[EMAIL PROTECTED]>**20080819141151
 threadWaitRead doesn't work on Windows in all GHC versions < 6.10.1
 (which isn't released yet).
 
 This means that since darcs is compiled with -threaded, when compiled
 with GHC < 6.10 on Windows, darcs will not respond to ^C when waiting
 for user input.
 
] 
[Fix Windows build
Simon Marlow <[EMAIL PROTECTED]>**20080819134252
 On Windows, System.Posix.Types.FileOffset is not the same as the type
 of the st_size field of the stat structure: the latter is Int64,
 whereas COff == Int32.
 
 This is almost ceratinly not the right fix, but it gets the build
 going.
 
 In general I don't recommend using System.Posix.* on Windows.  The
 right way is to either use the official platform-independent libraries
 like System.IO, System.Directory or System.Process, or to use
 System.Win32 directly.
] 
[URL module refactoring.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080817124816] 
[Do not compile curl support if libwww is enabled.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080817121834] 
[URL.hs: always import debugFail, again.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080817121101] 
[URL.hs: call debugFail when download fails.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080816070213] 
[URL.hs: debug messages.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080816070147] 
[Spacing in Darcs/Commands/Changes.lhs
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080815221245] 
[Rename catchInt to catchInterrupt, better message when get is interrupted.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080815154421] 
[Resolve issue995: changes --context : {--human-readable,--xml-output} have no effect.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080815114105] 
[Tidy up known failing shell tests.
Eric Kow <[EMAIL PROTECTED]>**20080818102100
 
 * Keeping track of these bugs could be simpler if they were all
   associated with a ticket and a short description
 * The shell harness allows us to avoid a lot of bureaucracy in
   in the scripts.  In fact, people should be able to submit a
   bug just by sticking a shell script in bugs, no hoops to jump.
] 
[Tidy up failing test for issue1013.
Eric Kow <[EMAIL PROTECTED]>**20080818101351
 
 We don't need to use a $DARCS variable anymore, thanks to the shell
 harness.  Also, I noticed that what used to trigger a bug now hangs.
] 
[Add failing test for issue1012 (Simon Marlow).
Eric Kow <[EMAIL PROTECTED]>**20080818094104] 
[Add test for issue1017 (as suggested by Bjorn Bringert)
Eric Kow <[EMAIL PROTECTED]>**20080818194115] 
[don't print "Wrote patch to -" when writing patch to stdout.
David Roundy <[EMAIL PROTECTED]>**20080819142537] 
[always send with context.
David Roundy <[EMAIL PROTECTED]>**20080819140729] 
[Resolve issue823: do not exit on keyboard interrupt when getting patches.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080815070943
 And give a chance for go_to_chosen_version to run.
] 
[fix buggy comments in bugs/identical-patches.sh.
David Roundy <[EMAIL PROTECTED]>**20080814135322] 
[Add Ian's identical-patch test case.
Eric Kow <[EMAIL PROTECTED]>**20080813171032] 
[URL.hs: store only URL in waitToStart queue.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813122246] 
[Add (failing) test for issue944.
Eric Kow <[EMAIL PROTECTED]>**20080814055903
 
 This appears to be a reggression from darcs 1.0.9, and was submitted by
 Wolfgang Lux on the bug tracker.  Interestingly, only the old format
 repositories are affected, not the hashed ones.
] 
[add type witnesses to TouchesFiles
Jason Dagit <[EMAIL PROTECTED]>**20080810063403] 
[add type witnesses to Patch/Choices.lhs
Jason Dagit <[EMAIL PROTECTED]>**20080809000237] 
[Split Cache mostly out of Darsc/Repository/Prefs into its own file (take 2)
[EMAIL PROTECTED] 
[Make Darcs.Repository.Prefs export the cache hash function
[EMAIL PROTECTED] 
[remove a few unsightly functions
Jason Dagit <[EMAIL PROTECTED]>**20080813061256] 
[Fix URL module bug with pipelining enabled.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813081218] 
[Minor change to URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813074218] 
[Enable pipelining by default, add --disable-pipelining option (issue838).
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080813011342] 
[Generalize HashRepo.clean_pristine to HashIO.clean_hashdir.
[EMAIL PROTECTED] 
[Add writeSlurpy to roll out a copy of slurpy into a filesystem.
[EMAIL PROTECTED] 
[fix breakage in URL.
David Roundy <[EMAIL PROTECTED]>**20080812141220] 
[Parametrize "pristine.hashed" in a bunch of functions.
[EMAIL PROTECTED] 
[Rework URL module for multi threading.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080811221209] 
[Add thread synchronization to URL module and resume select() if interrupted by signal in curl module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080810092810] 
[Handle error case with empty URL in URL.waitNextUrl function.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080809221755] 
[Add --debug-http flag to enable curl and libwww debug at run-time instead of compile-time.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080809154834] 
[Print a warning when the remote end does not have darcs 2.
Eric Kow <[EMAIL PROTECTED]>**20080811100933
 
 Two reasons:
 (1) right now people get a scary warning from ssh when it can't fetch
     some non-essential files (it used to be that we would send stderr from ssh
     to /dev/null, but that has other problems...)
 (2) darcs transfer-mode more widely deployed could help a lot of people
     wrt darcs performance
] 
[Added a beware note to the unrecord command
[EMAIL PROTECTED] 
[Fixed typo
[EMAIL PROTECTED] 
[Better debug messages in URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080809215247] 
[make Convert.lhs compile.
David Roundy <[EMAIL PROTECTED]>**20080810201725] 
[improve type safety of Darcs.Repository.Internal.
Jason Dagit <[EMAIL PROTECTED]>**20080810051109] 
[Refactor `darcs convert' warning at kowey's request.
Trent W. Buck <[EMAIL PROTECTED]>**20080810110014] 
[Expand formats text based in part on suggestions from darcs-users
Max Battcher <[EMAIL PROTECTED]>**20080809184043] 
[Fixes to global cache text based on darcs-users suggestions
Max Battcher <[EMAIL PROTECTED]>**20080809181424] 
[Add user-focused documentation of repository format options
Max Battcher <[EMAIL PROTECTED]>**20080807195429] 
[Highlight the global cache as a best practice
Max Battcher <[EMAIL PROTECTED]>**20080807193918] 
[Describe best practice in `darcs convert --help'.
Trent W. Buck <[EMAIL PROTECTED]>**20080810110615] 
[add type witnesses to Population
Jason Dagit <[EMAIL PROTECTED]>**20080808053252] 
[add type witnesses to CommandsAux
Jason Dagit <[EMAIL PROTECTED]>**20080808052738] 
[Add type witnesses to more modules, rounding out Darcs/Repository/*
Jason Dagit <[EMAIL PROTECTED]>**20080808050947] 
[fixed a bug in identity_commutes property
Jason Dagit <[EMAIL PROTECTED]>**20080808023025
 In the right identity check the patch order should have gone from
 (identity :> p) to (p2 :> i2).  I added a rigid type context too
 so that ghc 6.8 and newer would type the definition.
] 
[Make Darcs.Repository.Internal compile with type witnesses.
Jason Dagit <[EMAIL PROTECTED]>**20080808015343] 
[UF8.lhs: remove unusued functions/imports/docs
[EMAIL PROTECTED] 
[Resolve issue974 : do not pass both -optc-g and -opta-g to GHC
Eric Kow <[EMAIL PROTECTED]>**20080807073620] 
[make this test more cross-platform
Simon Michael <[EMAIL PROTECTED]>**20080807103433] 
[document how to run unit tests
Simon Michael <[EMAIL PROTECTED]>**20080807030416] 
[move (most) failing tests to bugs for clean test output
Simon Michael <[EMAIL PROTECTED]>**20080806191336] 
[fix an old spelling error
Simon Michael <[EMAIL PROTECTED]>**20080806170432] 
[make searching for "test:" in makefile work
Simon Michael <[EMAIL PROTECTED]>**20080805222241] 
[run only normal (expected to pass) tests by default
Simon Michael <[EMAIL PROTECTED]>**20080805222108] 
[Downplay quantum mechanics link.
Eric Kow <[EMAIL PROTECTED]>**20080806124109
 Besides, darcs has far more than 3 users by now.
] 
[Make patch theory intro more inviting to math people.
Eric Kow <[EMAIL PROTECTED]>**20080806123411] 
[cleanup and slight rewrite of the test docs
Simon Michael <[EMAIL PROTECTED]>**20080806165949] 
[make order of running tests consistent
Simon Michael <[EMAIL PROTECTED]>**20080806172123] 
[small makefile refactoring: allow just the normal tests to be run, without bugs/*
Simon Michael <[EMAIL PROTECTED]>**20080805203242] 
[Rectify dist help
[EMAIL PROTECTED]
 Removed the "make dist" suggestion, the manual is a better place for that.
 Instead, make clear that it operates on a clean copy of the tree, and
 mention the "predist" functionality.
] 
[website: explain that darcs 2 is required to get the darcs source.
Simon Michael <[EMAIL PROTECTED]>**20080803181216] 
[Canonize Gaetan Lehmann and Daniel Buenzli.
Eric Kow <[EMAIL PROTECTED]>**20080730104357
 (for Daniel B, avoid an accent in his name)
] 
[configure: check for packages needed with split base.
Eric Kow <[EMAIL PROTECTED]>**20080730103840
 Now that all packages must be used explicitly.
] 
[fix type witness compile errors specific to ghc 6.8
Jason Dagit <[EMAIL PROTECTED]>**20080722182729] 
[avoid import of unused function fromMaybe.
David Roundy <[EMAIL PROTECTED]>**20080729172825] 
[configure: suggest regex-compat before text
Eric Kow <[EMAIL PROTECTED]>**20080725095336] 
[configure: mention Haskell in 'try installing' suggestion
Eric Kow <[EMAIL PROTECTED]>**20080725095015] 
[Typo (Text.Regex)
Eric Kow <[EMAIL PROTECTED]>**20080715121708] 
[Use haskeline to have a readline-like behavior when asking something to the user
[EMAIL PROTECTED]
 Unlike the implementations using readline or editline packages, this code
 code doesn't break the Ctrl-C behavior.
] 
[Improve generic rules for English plurals. 
Eric Kow <[EMAIL PROTECTED]>**20080604123728] 
[add configure check for Network.URI.
David Roundy <[EMAIL PROTECTED]>**20080711011914] 
[add -hide-all-packages to default GHCFLAGS.
David Roundy <[EMAIL PROTECTED]>**20080711010952] 
[add support for outputting patch numbers in darcs changes.
David Roundy <[EMAIL PROTECTED]>**20080710011211] 
[add support for matching single patches by index.
David Roundy <[EMAIL PROTECTED]>**20080710004512] 
[add support for matching ranges of patches (counting back from present).
David Roundy <[EMAIL PROTECTED]>**20080710003225] 
[Better avoid silly manpage error.
Trent W. Buck <[EMAIL PROTECTED]>**20080704024920
 
 It turned out only initialize's help string used 'quotes', so just
 remove them.  This makes init's docstring consistent with the others.
] 
[Missing period at end of sentence.
Trent W. Buck <[EMAIL PROTECTED]>**20080704024232] 
[darcs --overview no longer works, so don't document it.
Trent W. Buck <[EMAIL PROTECTED]>**20080704030804] 
[Avoid silly manpage error.
Trent W. Buck <[EMAIL PROTECTED]>**20080703010733
 man (nroff) treats an apostrophe in the first column specially,
 resulting in a syntax error without this patch.
 
 Ideally, all cases of 'foo' in the manpage (i.e. docstrings) should
 become `foo', since man -Tps turns ` and ' into left and right single
 quotes respectively.
] 
[obliterate whitespace in Darcs.Commands.Get
[EMAIL PROTECTED]
 'twas causing lhs/haddock difficulties where a \end{code} wasn't getting recognized.
] 
[rm haddock CPP business
[EMAIL PROTECTED]
 Try as I might, I can't see any reason to special-case some Haddock CPP logic to deal with some *commented-out guards*, unless CPP magically restores and uncomments the code if Haddock isn't being run.
] 
[make pull less verbose when --verbose flag is given.
David Roundy <[EMAIL PROTECTED]>**20080624170035] 
[fix makefile to remember to regenerate version information after running configure.
David Roundy <[EMAIL PROTECTED]>**20080624170001] 
[TAG 2.0.2
David Roundy <[EMAIL PROTECTED]>**20080624012041] 
Patch bundle hash:
9ab8a1c8ccd2f1074d807b6bfd194047e472cf73
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to