diff --git a/Annex/Branch.hs b/Annex/Branch.hs index df1412af5f..5436132d8b 100644 --- a/Annex/Branch.hs +++ b/Annex/Branch.hs @@ -210,7 +210,7 @@ getHistorical :: RefDate -> FilePath -> Annex String getHistorical date file = -- This check avoids some ugly error messages when the reflog -- is empty. - ifM (null <$> inRepo (Git.RefLog.get' [Param "-n1"] (Just fullname))) + ifM (null <$> inRepo (Git.RefLog.get' [Param (fromRef fullname), Param "-n1"])) ( error ("No reflog for " ++ fromRef fullname) , getRef (Git.Ref.dateRef fullname date) file ) diff --git a/Command/Unused.hs b/Command/Unused.hs index 647fd6762a..77a9a92c3b 100644 --- a/Command/Unused.hs +++ b/Command/Unused.hs @@ -219,7 +219,7 @@ withKeysReferencedInGit refspec a = do shaHead <- maybe (return Nothing) (inRepo . Git.Ref.sha) current rs <- relevantrefs (shaHead, current) <$> inRepo (Git.Command.pipeReadStrict [Param "show-ref"]) - usedrefs <- applyRefSpec refspec rs (inRepo Git.RefLog.getAll) + usedrefs <- applyRefSpec refspec rs (getreflog rs) forM_ usedrefs $ withKeysReferencedInGitRef a where @@ -242,6 +242,7 @@ withKeysReferencedInGit refspec a = do Git.Ref.headRef : nubRefs (filter ((/= x) . fst) refs) _ -> nubRefs refs + getreflog rs = inRepo $ Git.RefLog.getMulti rs {- Runs an action on keys referenced in the given Git reference which - differ from those referenced in the work tree. -} diff --git a/Git/RefLog.hs b/Git/RefLog.hs index 940bb10a10..57f35e9183 100644 --- a/Git/RefLog.hs +++ b/Git/RefLog.hs @@ -14,18 +14,17 @@ import Git.Sha {- Gets the reflog for a given branch. -} get :: Branch -> Repo -> IO [Sha] -get b = get' [] (Just b) +get b = getMulti [b] -{- Gets all reflogs for all branches. -} -getAll :: Repo -> IO [Sha] -getAll = get' [Param "--all"] Nothing +{- Gets reflogs for multiple branches. -} +getMulti :: [Branch] -> Repo -> IO [Sha] +getMulti bs = get' (map (Param . fromRef) bs) -get' :: [CommandParam] -> Maybe Branch -> Repo -> IO [Sha] -get' ps b = mapMaybe extractSha . lines <$$> pipeReadStrict ps' +get' :: [CommandParam] -> Repo -> IO [Sha] +get' ps = mapMaybe extractSha . lines <$$> pipeReadStrict ps' where ps' = catMaybes [ Just $ Param "log" , Just $ Param "-g" , Just $ Param "--format=%H" - , Param . fromRef <$> b ] ++ ps