hit-0.4.0: Git operations in haskell

Portabilityunix
Stabilityexperimental
MaintainerVincent Hanquez <vincent@snarc.org>
Safe HaskellNone

Data.Git

Contents

Description

 

Synopsis

Basic types

data Ref Source

represent a git reference (SHA1)

Instances

data Person Source

an author or committer line has the format: name email time timezone FIXME: should be a string, but I don't know if the data is stored consistantly in one encoding (UTF8)

Instances

data Tree Source

Represent a root tree with zero to many tree entries.

Constructors

Tree 

Fields

treeGetEnts :: [TreeEnt]
 

data Blob Source

Represent a binary blob.

Constructors

Blob 

data Tag Source

Represent a signed tag.

Instances

data GitTime Source

Git time is number of seconds since unix epoch

Constructors

GitTime Integer Int 

Instances

Revision

resolveRevision :: Git -> Revision -> IO (Maybe Ref)Source

try to resolve a string to a specific commit ref for example: HEAD, HEAD^, master~3, shortRef

Object resolution

resolveTreeish :: Git -> Ref -> IO (Maybe Tree)Source

returns a tree from a ref that might be either a commit, a tree or a tag.

resolvePathSource

Arguments

:: Git

repository

-> Ref

commit reference

-> [ByteString]

paths

-> IO (Maybe Ref) 

resolve the ref (tree or blob) related to a path at a specific commit ref

repo context

withCurrentRepo :: (Git -> IO a) -> IO aSource

execute a function on the current repository.

check findRepo to see how the git repository is found.

withRepo :: FilePath -> (Git -> IO c) -> IO cSource

execute a function f with a git context.

findRepo :: IO FilePathSource

Find the git repository from the current directory.

If the environment variable GIT_DIR is set then it's used, otherwise iterate from current directory, up to 128 parents for a .git directory

Repository queries and creation

initRepo :: FilePath -> IO ()Source

initialize a new repository at a specific location.

isRepo :: FilePath -> IO BoolSource

basic checks to see if a specific path looks like a git repo.

Context operations

rewriteSource

Arguments

:: Git

Repository

-> (Commit -> IO Commit)

Mapping function

-> Revision

revision to start from

-> Int

the number of parents to map

-> IO Ref

return the new head REF

Rewrite a set of commits from a revision and returns the new ref.

If during revision traversal (diving) there's a commit with zero or multiple parents then the traversal will stop regardless of the amount of parent requested.

calling rewrite f 2 (revisionOf d) on the following tree:

a <-- b <-- c <-- d

result in the following tree after mapping with f:

a <-- f(b) <-- f(c) <-- f(d)

Get objects

getObjectSource

Arguments

:: Git

repository

-> Ref

the object's reference to

-> Bool

whether to resolve deltas if found

-> IO (Maybe Object)

returned object if found

get an object from repository using a ref.

getCommit :: Git -> Ref -> IO (Maybe Commit)Source

get a specified commit

getTree :: Git -> Ref -> IO (Maybe Tree)Source

get a specified tree

Set objects

setObject :: Git -> Object -> IO RefSource

set an object in the store and returns the new ref this is always going to create a loose object.