gitlib-cmdline 2.0.0.0 → 2.0.1.0
raw patch · 2 files changed
+31/−28 lines, 2 filesdep ~gitlibdep ~gitlib-cmdlinePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: gitlib, gitlib-cmdline
API changes (from Hackage documentation)
- Git.CmdLine: cliListObjects :: MonadGit m => Maybe (CommitOid m) -> CommitOid m -> Bool -> CmdLineRepository m [ObjectOid m]
+ Git.CmdLine: cliSourceObjects :: MonadGit m => Maybe (CommitOid m) -> CommitOid m -> Bool -> Source (CmdLineRepository m) (ObjectOid m)
Files
- Git/CmdLine.hs +27/−24
- gitlib-cmdline.cabal +4/−4
Git/CmdLine.hs view
@@ -45,7 +45,6 @@ import qualified Filesystem as F import qualified Filesystem.Path.CurrentOS as F import qualified Git-import qualified Git.Commit.Push as Git import qualified Git.Tree.Builder.Pure as Pure import Prelude hiding (FilePath) import Shelly hiding (trace)@@ -112,8 +111,7 @@ lookupTag = error "Not defined CmdLineRepository.cliLookupTag" lookupObject = error "Not defined CmdLineRepository.cliLookupObject" existsObject = cliExistsObject- pushCommit = \name _ rrefname -> Git.genericPushCommit name rrefname- listObjects = cliListObjects+ sourceObjects = cliSourceObjects newTreeBuilder = Pure.newPureTreeBuilder cliReadTree cliWriteTree treeEntry = cliTreeEntry listTreeEntries = cliListTreeEntries@@ -122,7 +120,9 @@ createBlob = cliCreateBlob createCommit = cliCreateCommit createTag = cliCreateTag- remoteFetch = error "Not defined: CmdLineRepository.remoteFetch"++ -- remoteFetch = error "Not defined: CmdLineRepository.remoteFetch"+ deleteRepository = cliGet >>= liftIO . F.removeTree . Git.repoPath . repoOptions @@ -153,7 +153,7 @@ -> CmdLineRepository m a doRunGit f args act = do repo <- cliGet- shellyNoDir $ silently $ do+ shellyNoDir $ verbosely $ do act f "git" $ ["--git-dir", repoPath repo] <> args @@ -186,7 +186,7 @@ -> CmdLineRepository m (CommitOid m) cliPushCommit cname remoteNameOrURI remoteRefName msshCmd = do repo <- cliGet- merr <- shellyNoDir $ silently $ errExit False $ do+ merr <- shellyNoDir $ verbosely $ errExit False $ do case msshCmd of Nothing -> return () Just sshCmd -> setenv "GIT_SSH" . toTextIgnore@@ -234,7 +234,7 @@ repo <- cliGet leftHead <- cliResolveRef "HEAD" - eres <- shellyNoDir $ silently $ errExit False $ do+ eres <- shellyNoDir $ verbosely $ errExit False $ do case msshCmd of Nothing -> return () Just sshCmd -> setenv "GIT_SSH" . toTextIgnore@@ -272,7 +272,7 @@ -- create a detached commit and return its id. recordMerge repo leftHead = do rightHead <- getOid "MERGE_HEAD"- xs <- shellyNoDir $ silently $ errExit False $ do+ xs <- shellyNoDir $ verbosely $ errExit False $ do xs <- returnConflict . TL.init <$> git [ "--git-dir", repoPath repo , "status", "-z", "--porcelain" ]@@ -376,16 +376,16 @@ => Git.SHA -> CmdLineRepository m Bool cliExistsObject (Git.shaToText -> sha) = do repo <- cliGet- shellyNoDir $ silently $ errExit False $ do+ shellyNoDir $ verbosely $ errExit False $ do git_ [ "--git-dir", repoPath repo, "cat-file", "-e", fromStrict sha ] ec <- lastExitCode return (ec == 0) -cliListObjects :: Git.MonadGit m- => Maybe (CommitOid m) -> CommitOid m -> Bool- -> CmdLineRepository m [ObjectOid m]-cliListObjects mhave need alsoTrees = do- shas <- doRunGit run+cliSourceObjects :: Git.MonadGit m+ => Maybe (CommitOid m) -> CommitOid m -> Bool+ -> Source (CmdLineRepository m) (ObjectOid m)+cliSourceObjects mhave need alsoTrees = do+ shas <- lift $ doRunGit run ([ "--no-pager", "log", "--format=%H %T" ] <> (case mhave of Nothing -> [ fromStrict (Git.renderObjOid need) ]@@ -394,12 +394,15 @@ , TL.append "^" (fromStrict (Git.renderObjOid need)) ])) $ return ()- concat <$> mapM (go . T.words . toStrict) (TL.lines shas)+ mapM_ (go . T.words . toStrict) (TL.lines shas) where go [csha,tsha] = do- coid <- Git.parseObjOid csha- toid <- Git.parseObjOid tsha- return $ [Git.CommitObjOid coid] <> [Git.TreeObjOid toid | alsoTrees]+ coid <- lift $ Git.parseObjOid csha+ yield $ Git.CommitObjOid coid+ when alsoTrees $ do+ toid <- lift $ Git.parseObjOid tsha+ yield $ Git.TreeObjOid toid+ go x = failure (Git.BackendError $ "Unexpected output from git-log: " <> T.pack (show x)) @@ -460,7 +463,7 @@ cliLookupTree :: Git.MonadGit m => TreeOid m -> CmdLineRepository m (Tree m) cliLookupTree oid@(Git.renderObjOid -> sha) = do repo <- cliGet- ec <- shellyNoDir $ silently $ errExit False $ do+ ec <- shellyNoDir $ verbosely $ errExit False $ do git_ $ [ "--git-dir", repoPath repo, "cat-file", "-t", fromStrict sha ] lastExitCode if ec == 0@@ -471,7 +474,7 @@ -> CmdLineRepository m (Maybe (TreeEntry m)) cliTreeEntry tree fp = do repo <- cliGet- mentryLines <- shellyNoDir $ silently $ errExit False $ do+ mentryLines <- shellyNoDir $ verbosely $ errExit False $ do contents <- git $ [ "--git-dir", repoPath repo , "ls-tree", "-z" , fromStrict (Git.renderObjOid (Git.treeOid tree))@@ -589,7 +592,7 @@ => Maybe Text -> CmdLineRepository m (Maybe [(TL.Text,TL.Text)]) cliShowRef mrefName = do repo <- cliGet- shellyNoDir $ silently $ errExit False $ do+ shellyNoDir $ verbosely $ errExit False $ do rev <- git $ [ "--git-dir", repoPath repo, "show-ref" ] <> [ fromStrict (fromJust mrefName) | isJust mrefName ] ec <- lastExitCode@@ -602,7 +605,7 @@ => Text -> CmdLineRepository m (Maybe (RefTarget m)) cliLookupRef refName = do repo <- cliGet- (ec,rev) <- shellyNoDir $ silently $ errExit False $ do+ (ec,rev) <- shellyNoDir $ verbosely $ errExit False $ do rev <- git $ [ "--git-dir", repoPath repo , "symbolic-ref", fromStrict refName ] ec <- lastExitCode@@ -635,7 +638,7 @@ => Text -> CmdLineRepository m (Maybe (CommitOid m)) cliResolveRef refName = do repo <- cliGet- (rev, ec) <- shellyNoDir $ silently $ errExit False $ do+ (rev, ec) <- shellyNoDir $ verbosely $ errExit False $ do rev <- git [ "--git-dir", repoPath repo , "rev-parse", "--quiet", "--verify" , fromStrict refName ]@@ -741,7 +744,7 @@ Right p -> do when (not exists && Git.repoAutoCreate opts) $ do liftIO $ F.createTree (fromText (fromStrict p))- shellyNoDir $ silently $+ shellyNoDir $ verbosely $ git_ $ ["--git-dir", fromStrict p] <> ["--bare" | Git.repoIsBare opts] <> ["init"]
gitlib-cmdline.cabal view
@@ -1,5 +1,5 @@ Name: gitlib-cmdline-Version: 2.0.0.0+Version: 2.0.1.0 Synopsis: Gitlib repository backend that uses the git command-line tool. Description: Gitlib repository backend that uses the git command-line tool. License-file: LICENSE@@ -20,7 +20,7 @@ ghc-options: -Wall build-depends: base >= 3 && < 5- , gitlib >= 2.0.0.0+ , gitlib >= 2.0.1.0 , bytestring >= 0.9.2.1 , conduit >= 0.5.5 , containers >= 0.4.2.1@@ -49,9 +49,9 @@ hs-source-dirs: test build-depends: base >=3- , gitlib >= 2.0.0.0+ , gitlib >= 2.0.1.0 , gitlib-test >= 2.0.0.0- , gitlib-cmdline >= 2.0.0.0+ , gitlib-cmdline >= 2.0.1.0 , HUnit >= 1.2.5 , hspec >= 1.4.4 , hspec-expectations >= 0.3