module Distribution.VcsRevision.Git ( getRevision ) where import System.Process import System.Exit -- | Nothing if we're not in a git repo, Just (hash,modified) if we're in a repo. getRevision :: IO (Maybe (String, Bool)) getRevision = do (exit,commit,_) <- readProcessWithExitCode "git" ["log", "--format=%h", "-n", "1"] "" case exit of ExitSuccess -> do (exit',_,_) <- readProcessWithExitCode "git" ["diff", "--quiet"] "" return $ Just (init commit, exit' /= ExitSuccess) _ -> return Nothing