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

Safe HaskellNone

Darcs.Util.Tree.Hashed

Contents

Description

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

Synopsis

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

hashedTreeIO

Arguments

:: TreeIO a

action

-> Tree IO

initial

-> FilePath

directory

-> 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.

Other

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)