git-0.3.0: Git operations in haskell

LicenseBSD-style
MaintainerNicolas DI PRIMA <nicolas@di-prima.fr>
Stabilityexperimental
Portabilityunix
Safe HaskellNone
LanguageHaskell98

Data.Git.Diff

Contents

Description

Basic Git diff methods.

Synopsis

Basic features

data BlobContent Source #

represents a blob's content (i.e., the content of a file at a given reference).

Constructors

FileContent [ByteString]

Text file's lines

BinaryContent ByteString

Binary content

Instances
Show BlobContent Source # 
Instance details

Defined in Data.Git.Diff

data BlobState hash Source #

This is a blob description at a given state (revision)

Constructors

BlobState 
Instances
Eq (BlobState hash) Source #

Two BlobState are equal if they have the same filename, i.e.,

((BlobState x _ _ _) == (BlobState y _ _ _)) = (x == y)
Instance details

Defined in Data.Git.Diff

Methods

(==) :: BlobState hash -> BlobState hash -> Bool #

(/=) :: BlobState hash -> BlobState hash -> Bool #

Show (BlobState hash) Source # 
Instance details

Defined in Data.Git.Diff

Methods

showsPrec :: Int -> BlobState hash -> ShowS #

show :: BlobState hash -> String #

showList :: [BlobState hash] -> ShowS #

data BlobStateDiff hash Source #

Represents a file state between two revisions A file (a blob) can be present in the first Tree's revision but not in the second one, then it has been deleted. If only in the second Tree's revision, then it has been created. If it is in the both, maybe it has been changed.

Constructors

OnlyOld (BlobState hash) 
OnlyNew (BlobState hash) 
OldAndNew (BlobState hash) (BlobState hash) 

getDiffWith Source #

Arguments

:: (Typeable hash, HashAlgorithm hash) 
=> (BlobStateDiff hash -> a -> a)

diff helper (State -> accumulator -> accumulator)

-> a

accumulator

-> Ref hash

commit reference (the original state)

-> Ref hash

commit reference (the new state)

-> Git hash

repository

-> IO a 

generate a diff list between two revisions with a given diff helper.

Useful to extract any kind of information from two different revisions. For example you can get the number of deleted files:

getdiffwith f 0 head^ head git
    where f (OnlyOld _) acc = acc+1
          f _           acc = acc

Or save the list of new files:

getdiffwith f [] head^ head git
    where f (OnlyNew bs) acc = (bsFilename bs):acc
          f _            acc = acc

Default helpers

data GitDiff hash Source #

This is a proposed diff records for a given file. It contains useful information: * the filename (with its path in the root project) * a file diff (with the Data.Algorithm.Patience method) * the file's mode (i.e. the file priviledge) * the file's ref

data GitFileRef hash Source #

Constructors

NewRef (Ref hash) 
OldRef (Ref hash) 
ModifiedRef (Ref hash) (Ref hash) 
UnModifiedRef (Ref hash) 

data TextLine Source #

Constructors

TextLine 
Instances
Eq TextLine Source # 
Instance details

Defined in Data.Git.Diff

Ord TextLine Source # 
Instance details

Defined in Data.Git.Diff

defaultDiff Source #

Arguments

:: Int

Number of line for context

-> BlobStateDiff hash 
-> [GitDiff hash]

Accumulator

-> [GitDiff hash]

Accumulator with a new content

A default diff helper. It is an example about how you can write your own diff helper or you can use it if you want to get all of differences.

getDiff :: (Typeable hash, HashAlgorithm hash) => Ref hash -> Ref hash -> Git hash -> IO [GitDiff hash] Source #

A default Diff getter which returns all diff information (Mode, Content and Binary) with a context of 5 lines.

getDiff = getDiffWith (defaultDiff 5) []