    -- |
    -- Module      : Data.Git
    -- License     : BSD-style
    -- Maintainer  : Vincent Hanquez <vincent@snarc.org>
    -- Stability   : experimental
    -- Portability : unix
    --
    module Data.Git
        (
        -- * Basic types
          Ref
        , RefName(..)
        , Commit(..)
        , Person(..)
        , CommitExtra(..)
        , Tree(..)
        , Blob(..)
        , Tag(..)
        , GitTime
        , ModePerm(..)
        , EntName
        , EntPath
        , entName
        , entPathAppend

        -- * Helper & type related to ModePerm
        , ObjectFileType(..)
        , FilePermissions(..)
        , getPermission
        , getFiletype

        -- * Revision
        , Revision
        , resolveRevision

        -- * Object resolution
        , resolveTreeish
        , resolvePath

        -- * repo context
        , Git
        , withCurrentRepo
        , withRepo
        , findRepo

        -- * Repository queries and creation
        , initRepo
        , isRepo

        -- * Context operations
        , rewrite

        -- * Get objects
        , getObject
        , getCommit
        , getTree

        -- * Set objects
        , setObject
        , toObject

        -- * Work trees
        , WorkTree
        , EntType(..)
        , workTreeNew
        , workTreeFrom
        , workTreeDelete
        , workTreeSet
        , workTreeFlush

        -- * Named refs
        , branchWrite
        , branchList
        , tagWrite
        , tagList
        , headSet
        , headGet
        ) where

    import Data.Git.Ref
    import Data.Git.Types
    import Data.Git.Storage
    import Data.Git.Repository
    import Data.Git.Revision
    import Data.Git.Storage.Object (toObject)
    import Data.Git.WorkTree