Safe Haskell | None |
---|---|
Language | Haskell2010 |
A few darcs-specific utility functions. These are used for reading and writing darcs and darcs-compatible hashed trees.
Synopsis
- readDarcsHashed :: FilePath -> (Maybe Int, Hash) -> IO (Tree IO)
- writeDarcsHashed :: Tree IO -> FilePath -> IO Hash
- hashedTreeIO :: TreeIO a -> Tree IO -> FilePath -> IO (a, Tree IO)
- readDarcsHashedDir :: FilePath -> (Maybe Int, Hash) -> IO [(ItemType, Name, Maybe Int, Hash)]
- readDarcsHashedNosize :: FilePath -> Hash -> IO (Tree IO)
- darcsAddMissingHashes :: Monad m => Tree m -> m (Tree m)
- darcsLocation :: FilePath -> (Maybe Int, Hash) -> FileSegment
- darcsTreeHash :: Tree m -> Hash
- decodeDarcsHash :: ByteString -> Hash
- decodeDarcsSize :: ByteString -> Maybe Int
- darcsUpdateHashes :: Monad m => Tree m -> m (Tree m)
Obtaining Trees.
Please note that Trees obtained this way will contain Stub
items. These need to be executed (they are IO actions) in order to be
accessed. Use expand
to do this. However, many operations are
perfectly fine to be used on a stubbed Tree (and it is often more
efficient to do everything that can be done before expanding a Tree).
Writing trees.
writeDarcsHashed :: Tree IO -> FilePath -> IO Hash Source #
Write a Tree into a darcs-style hashed directory.
Interact with hashed tree
Run a TreeIO
action
in a hashed setting. The initial
tree is assumed
to be fully available from the directory
, and any changes will be written
out to same. Please note that actual filesystem files are never removed.
Other
readDarcsHashedDir :: FilePath -> (Maybe Int, Hash) -> IO [(ItemType, Name, Maybe Int, Hash)] Source #
Read and parse a darcs-style hashed directory listing from a given dir
and with a given hash
.
darcsLocation :: FilePath -> (Maybe Int, Hash) -> FileSegment Source #
darcsTreeHash :: Tree m -> Hash Source #
Compute a darcs-compatible hash value for a tree-like structure.
decodeDarcsHash :: ByteString -> Hash Source #
decodeDarcsSize :: ByteString -> Maybe Int Source #