filestore-0.6.5: Interface for versioning file stores.

CopyrightCopyright (C) 2009 John MacFarlane Gwern Branwen Sebastiaan Visser
LicenseBSD 3
MaintainerJohn MacFarlane <jgm@berkeley.edu>
Stabilityalpha
PortabilityGHC 6.10 required
Safe HaskellSafe
LanguageHaskell98

Data.FileStore.Generic

Description

Generic utility functions for working with filestores.

Synopsis

Documentation

modify Source #

Arguments

:: Contents a 
=> FileStore 
-> FilePath

Resource to create.

-> RevisionId

ID of previous revision that is being modified.

-> Author

Author of change.

-> Description

Description of change.

-> a

Contents of resource.

-> IO (Either MergeInfo ()) 

Modify a named resource in the filestore. Like save, except that a revision ID must be specified. If the resource has been modified since the specified revision, Left merge information is returned. Otherwise, Right the new contents are saved.

create Source #

Arguments

:: Contents a 
=> FileStore 
-> FilePath

Resource to create.

-> Author

Author of change.

-> Description

Description of change.

-> a

Contents of resource.

-> IO () 

Like save, but first verify that the resource name is new. If not, throws a ResourceExists error.

type Diff a = PolyDiff a a #

This is PolyDiff specialized so both sides are the same type.

data PolyDiff a b #

A value is either from the First list, the Second or from Both. Both contains both the left and right values, in case you are using a form of equality that doesn't check all data (for example, if you are using a newtype to only perform equality on side of a tuple).

Constructors

First a 
Second b 
Both a b 
Instances
(Eq a, Eq b) => Eq (PolyDiff a b) 
Instance details

Defined in Data.Algorithm.Diff

Methods

(==) :: PolyDiff a b -> PolyDiff a b -> Bool #

(/=) :: PolyDiff a b -> PolyDiff a b -> Bool #

(Show a, Show b) => Show (PolyDiff a b) 
Instance details

Defined in Data.Algorithm.Diff

Methods

showsPrec :: Int -> PolyDiff a b -> ShowS #

show :: PolyDiff a b -> String #

showList :: [PolyDiff a b] -> ShowS #

diff Source #

Arguments

:: FileStore 
-> FilePath

Resource name to get diff for.

-> Maybe RevisionId

Just old revision ID, or Nothing for empty.

-> Maybe RevisionId

Just oew revision ID, or Nothing for latest.

-> IO [Diff [String]] 

Return a unified diff of two revisions of a named resource. Format of the diff is a list [(Diff, [String])], where DI is F (in first document only), S (in second only), or B (in both), and the list is a list of lines (without newlines at the end).

searchRevisions Source #

Arguments

:: FileStore 
-> Bool

When true the description must match exactly, when false partial hits are allowed.

-> FilePath

The resource to search history for.

-> Description

Revision description to search for.

-> IO [Revision] 

Return a list of all revisions that are saved with the given description or with a part of this description.

smartRetrieve Source #

Arguments

:: Contents a 
=> FileStore 
-> Bool

True for exact description match, False for partial match.

-> FilePath

Resource name to retrieve.

-> Maybe String

Just revision ID or description, or Nothing for empty.

-> IO a 

Try to retrieve a resource from the repository by name and possibly a revision identifier. When retrieving a resource by revision identifier fails this function will try to fetch the latest revision for which the description matches the given string.

richDirectory :: FileStore -> FilePath -> IO [(Resource, Either String Revision)] Source #

Like directory, but returns information about the latest revision.