[darcs-users] [patch415] Replace tmp- prefixes with meta- in packs (and 7 more)
Petr Rockai
me at mornfall.net
Tue Oct 12 21:20:53 UTC 2010
Hi,
Replace tmp- prefixes with meta- in packs
-----------------------------------------
> hunk ./src/Darcs/Commands/Optimize.lhs 384
> mapM fileEntry' ps
> renameFile (patchesTar <.> "part") patchesTar
> is <- map ((darcsdir </> "inventories") </>) <$> HashedRepo.listInventories
> - writeFile (darcsdir </> "tmp-filelist-inventories") . unlines $
> + writeFile (darcsdir </> "meta-filelist-inventories") . unlines $
> map takeFileName is
> pr <- sortByMTime =<< dirContents "pristine.hashed"
> hunk ./src/Darcs/Commands/Optimize.lhs 387
> - writeFile (darcsdir </> "tmp-filelist-pristine") . unlines $
> + writeFile (darcsdir </> "meta-filelist-pristine") . unlines $
> map takeFileName pr
> BL.writeFile (basicTar <.> "part") . compress . write =<< mapM fileEntry' (
> [ darcsdir </> "hashed_inventory"
> hunk ./src/Darcs/Commands/Optimize.lhs 391
> - , darcsdir </> "tmp-filelist-pristine"
> - , darcsdir </> "tmp-filelist-inventories"
> + , darcsdir </> "meta-filelist-pristine"
> + , darcsdir </> "meta-filelist-inventories"
> ] ++ reverse pr ++ reverse is)
> renameFile (basicTar <.> "part") basicTar
> hunk ./src/Darcs/Commands/Optimize.lhs 395
> - removeFile $ darcsdir </> "tmp-filelist-inventories"
> - removeFile $ darcsdir </> "tmp-filelist-pristine"
> + removeFile $ darcsdir </> "meta-filelist-inventories"
> + removeFile $ darcsdir </> "meta-filelist-pristine"
> where
> packsDir = darcsdir </> "packs"
> basicTar = packsDir </> "basic.tar.gz"
> hunk ./src/Darcs/Repository.hs 345
> procHashedInv _ (Tar.Fail e) = fail e
> procTmp _ Tar.Done = return ()
> procTmp ca xxs@(Tar.Next x xs) = withTarFile x $ \p c ->
> - if "tmp-" `isPrefixOf` takeFileName p
> + if "meta-" `isPrefixOf` takeFileName p
> then do
> BL.writeFile p c
> procTmp ca xs
> hunk ./src/Darcs/Repository.hs 351
> else do
> ex <- and <$> mapM doesFileExist
> - [ darcsdir </> "tmp-filelist-pristine"
> - , darcsdir </> "tmp-filelist-inventories"
> + [ darcsdir </> "meta-filelist-pristine"
> + , darcsdir </> "meta-filelist-inventories"
> ]
> if ex
> then do
> hunk ./src/Darcs/Repository.hs 359
> mv <- newEmptyMVar
> _ <- forkIO . flip finally (putMVar mv ()) $ do
> fetchFiles ca HashedInventoriesDir . lines =<<
> - readFile (darcsdir </> "tmp-filelist-inventories")
> + readFile (darcsdir </> "meta-filelist-inventories")
> fetchFiles ca HashedPristineDir . lines =<<
> hunk ./src/Darcs/Repository.hs 361
> - readFile (darcsdir </> "tmp-filelist-pristine")
> + readFile (darcsdir </> "meta-filelist-pristine")
> procFiles (cacheDir ca) xxs
> takeMVar mv
> else procFiles (cacheDir ca) xxs
> hunk ./src/Darcs/Repository.hs 366
> mapM_ removeFile . (map (darcsdir </>)) .
> - filter (("tmp-" `isPrefixOf`) . takeFileName) =<<
> + filter (("meta-" `isPrefixOf`) . takeFileName) =<<
> getDirectoryContents darcsdir
> procTmp _ (Tar.Fail e) = fail e
> procFiles _ Tar.Done = return ()
OK
Perform cleanup on exceptions in doOptimizeHTTP
-----------------------------------------------
> hunk ./src/Darcs/Commands/Optimize.lhs 24
>
> module Darcs.Commands.Optimize ( optimize ) where
> import Control.Applicative ( (<$>) )
> +import Control.Exception ( finally )
> import Control.Monad ( when, unless )
> import Data.Maybe ( isJust )
> import Data.List ( sort )
> hunk ./src/Darcs/Commands/Optimize.lhs 374
> mapM_ removeFile gzs
>
> doOptimizeHTTP :: RepoPatch p => Repository p C(r u t) -> IO ()
> -doOptimizeHTTP repo = do
> +doOptimizeHTTP repo = flip finally (mapM_ (removeFileIfExists)
> + [ darcsdir </> "meta-filelist-inventories"
> + , darcsdir </> "meta-filelist-pristine"
> + , basicTar <.> "part"
> + , patchesTar <.> "part"
> + ]) $ do
> rf <- either fail return =<< identifyRepoFormat "."
> unless (formatHas HashedInventory rf) . fail $
> "Unsupported repository format:\n" ++
> hunk ./src/Darcs/Commands/Optimize.lhs 401
> , darcsdir </> "meta-filelist-inventories"
> ] ++ reverse pr ++ reverse is)
> renameFile (basicTar <.> "part") basicTar
> - removeFile $ darcsdir </> "meta-filelist-inventories"
> - removeFile $ darcsdir </> "meta-filelist-pristine"
> where
> packsDir = darcsdir </> "packs"
> basicTar = packsDir </> "basic.tar.gz"
OK
> hunk ./src/Darcs/Commands/Optimize.lhs 417
> Right h -> darcsdir </> "patches" </> h
> sortByMTime xs = map snd . sort <$> mapM (\x -> (\t -> (t, x)) <$>
> getModificationTime x) xs
> + removeFileIfExists x = do
> + ex <- doesFileExist x
> + when ex $ removeFile x
OK (isn't there something like this already somewhere in utils or such?)
Remove warnings about name shadowing
------------------------------------
> hunk ./src/Darcs/Repository.hs 382
> withTarFile x f = case Tar.entryContent x of
> Tar.NormalFile x' _ -> f (Tar.entryPath x) x'
> _ -> fail "Unexpected non-file tar entry"
> - writeFile' Nothing x y = withTemp $ \x' -> do
> + writeFile' Nothing z y = withTemp $ \x' -> do
> BL.writeFile x' y
> hunk ./src/Darcs/Repository.hs 384
> - renameFile x' x
> - writeFile' (Just ca) x y = do
> - let x' = joinPath . tail $ splitPath x -- drop darcsdir
> + renameFile x' z
> + writeFile' (Just ca) z y = do
> + let x' = joinPath . tail $ splitPath z -- drop darcsdir
> ex <- doesFileExist $ ca </> x'
> if ex
> hunk ./src/Darcs/Repository.hs 389
> - then createLink' (ca </> x') x
> + then createLink' (ca </> x') z
> else withTemp $ \x'' -> do
> BL.writeFile x'' y
> createLink' x'' $ ca </> x'
> hunk ./src/Darcs/Repository.hs 393
> - renameFile x'' x
> - createLink' x y = do
> + renameFile x'' z
> + createLink' z y = do
> createDirectoryIfMissing True $ takeDirectory y
> hunk ./src/Darcs/Repository.hs 396
> - createLink x y `catchall` return ()
> + createLink z y `catchall` return ()
> fetchFiles _ _ [] = return ()
> fetchFiles c d (f:fs) = do
> ex <- doesFileExist $ darcsdir </> hashedDir d </> f
OK
I am not going to make it farther today, hopefully later this week
(tomorrow is a bit busy, but I still might make it).
Thanks for the patches Alexey, overall they look quite good.
Yours,
Petr.
More information about the darcs-users
mailing list