hit-0.5.0: Git operations in haskell

MaintainerVincent Hanquez <vincent@snarc.org>
Safe HaskellNone






data Git Source

represent an git repo, with possibly already opened filereaders for indexes and packs

data HTreeEnt Source

hierarchy tree, either a reference to a blob (file) or a tree (directory).


TreeDir Ref HTree 
TreeFile Ref 

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

get a specified commit

getCommit :: Git -> Ref -> IO CommitSource

get a specified commit but raises an exception if doesn't exists or type is not appropriate

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

get a specified tree

getTree :: Git -> Ref -> IO TreeSource

get a specified tree but raise



:: Git


-> (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)

buildHTree :: Git -> Tree -> IO HTreeSource

build a hierarchy tree from a tree object



:: Git


-> Ref

commit reference

-> [ByteString]


-> IO (Maybe Ref) 

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

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

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

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

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

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.