darcs-2.11.0: a distributed, interactive, smart revision control system

Safe HaskellNone




A few darcs-specific utility functions. These are used for reading and writing darcs and darcs-compatible hashed trees.


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

Write a Tree into a darcs-style hashed directory.

Interact with hashed tree



:: TreeIO a


-> Tree IO


-> FilePath


-> IO (a, Tree IO) 

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.


readDarcsHashedDir :: FilePath -> (Maybe Int, Hash) -> IO [(ItemType, Name, Maybe Int, Hash)]

Read and parse a darcs-style hashed directory listing from a given dir and with a given hash.

darcsAddMissingHashes :: (Monad m, Functor m) => Tree m -> m (Tree m)

darcsTreeHash :: Tree m -> Hash

Compute a darcs-compatible hash value for a tree-like structure.

darcsUpdateHashes :: (Monad m, Functor m) => Tree m -> m (Tree m)