gitlib-libgit2 2.0.1.0 → 2.0.2.1
raw patch · 2 files changed
+25/−18 lines, 2 filesdep ~gitlib-libgit2dep ~hlibgit2
Dependency ranges changed: gitlib-libgit2, hlibgit2
Files
- Git/Libgit2.hs +22/−15
- gitlib-libgit2.cabal +3/−3
Git/Libgit2.hs view
@@ -26,6 +26,7 @@ , Repository(..) , Tree() , TreeOid()+ , repoPath , addTracingBackend , checkResult , closeLgRepository@@ -39,7 +40,7 @@ , lgBuildPackFile , lgReadFromPack , lgWithPackFile- , lgWritePackFile+ , lgCopyPackFile , lgWrap , oidToSha , shaToOid@@ -97,8 +98,8 @@ import Unsafe.Coerce debug :: MonadIO m => String -> m ()-debug = liftIO . putStrLn---debug = const (return ())+--debug = liftIO . putStrLn+debug = const (return ()) type Oid = OidPtr @@ -587,17 +588,17 @@ repo <- lgGet result <- liftIO $ withForeignPtr (repoObj repo) $ \repoPtr -> alloca $ \pptr -> do- r0 <- c'git_repository_odb pptr repoPtr- if r0 < 0+ r <- c'git_repository_odb pptr repoPtr+ if r < 0 then return Nothing else -- jww (2013-02-28): Need to guard against exceptions so that -- ptr doesn't leak. withForeignPtr (getOid oid) $ \coid -> do ptr <- peek pptr- r <- c'git_odb_exists ptr coid 0+ r1 <- c'git_odb_exists ptr coid 0 c'git_odb_free ptr- return (Just (r == 0))+ return (Just (r1 == 0)) maybe (failure Git.RepositoryInvalid) return result lgForEachObject :: Ptr C'git_odb@@ -737,20 +738,26 @@ -> LgRepository m () lgUpdateRef name refTarg = do repo <- lgGet- liftIO $ alloca $ \ptr ->+ r <- liftIO $ alloca $ \ptr -> withForeignPtr (repoObj repo) $ \repoPtr -> withCString (T.unpack name) $ \namePtr -> do- r <- case refTarg of+ case refTarg of Git.RefObj oid -> withForeignPtr (getOid (untag oid)) $ \coidPtr -> c'git_reference_create ptr repoPtr namePtr coidPtr (fromBool True) Git.RefSymbolic symName ->- withCString (T.unpack symName) $ \symPtr ->- c'git_reference_symbolic_create ptr repoPtr namePtr- symPtr (fromBool True)- when (r < 0) $ failure Git.ReferenceCreateFailed+ withCString (T.unpack symName) $ \symPtr ->+ c'git_reference_symbolic_create ptr repoPtr namePtr+ symPtr (fromBool True)+ when (r < 0) $ do+ errStr <- liftIO $ do+ errPtr <- c'giterr_last+ err <- peek errPtr+ peekCString (c'git_error'message err)+ failure (Git.ReferenceCreateFailed $ name <> " => "+ <> T.pack (show refTarg) <> ": " <> T.pack errStr) -- int git_reference_name_to_oid(git_oid *out, git_repository *repo, -- const char *name)@@ -1023,8 +1030,8 @@ c'git_oid_fromraw ptr' (castPtr bytes) return ptr -lgWritePackFile :: Git.MonadGit m => FilePath -> LgRepository m ()-lgWritePackFile packFile = do+lgCopyPackFile :: Git.MonadGit m => FilePath -> LgRepository m ()+lgCopyPackFile packFile = do -- jww (2013-04-23): This would be much more efficient (we already have -- the pack file on disk, why not just copy it?), but we have no way at -- present of communicating with the S3 backend directly.
gitlib-libgit2.cabal view
@@ -1,5 +1,5 @@ Name: gitlib-libgit2-Version: 2.0.1.0+Version: 2.0.2.1 Synopsis: Libgit2 backend for gitlib License-file: LICENSE License: MIT@@ -25,7 +25,7 @@ base >=3 , gitlib >= 2.0.1.0 , gitlib-test >= 2.0.0.0- , gitlib-libgit2 >= 2.0.1.0+ , gitlib-libgit2 >= 2.0.2.1 , HUnit >= 1.2.5 , hspec >= 1.4.4 , hspec-expectations >= 0.3@@ -37,7 +37,7 @@ build-depends: base >= 3 && < 5 , gitlib >= 2.0.1.0- , hlibgit2 >= 0.18.0.7+ , hlibgit2 >= 0.18.0.9 , attempt >= 0.4.0 , binary >= 0.5.1.0 , bytestring >= 0.9.2.1