module Git where import System.Directory import System.FilePath () import System.Process -- | git clone "master" branch clone :: String -- ^ url -> FilePath -- ^ directory where repository will be cloned to -> IO () clone url dir = putStr =<< readProcess "git" [ "clone" , "--single-branch" , "--depth=1" , url , dir] [] -- | git clone and checkout particular revision (could be much slower than 'clone') cloneRevision :: String -- ^ url -> String -- ^ revision -> FilePath -- ^ directory where repository will be cloned to -> IO () cloneRevision url revision dir = do putStr =<< readProcess "git" [ "clone", url, dir ] [] currentDir <- getCurrentDirectory setCurrentDirectory dir putStr =<< readProcess "git" [ "checkout", revision, "--force" ] [] setCurrentDirectory currentDir