From c831d87f4b7d1a44a556c5b9d00bb5b2c3ee508b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sat, 24 Oct 2026 16:48:37 +0200 Subject: Tags watch expressions --- src/Repo.hs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/Repo.hs') diff --git a/src/Repo.hs b/src/Repo.hs index 78d0c60..b6ad8d4 100644 --- a/src/Repo.hs +++ b/src/Repo.hs @@ -16,6 +16,7 @@ module Repo ( readBranch, readTag, tryReadTag, listCommits, listCommitsFrom, + listTags, mergeBase, findUpstreamRef, @@ -287,6 +288,16 @@ listCommitsFrom commitRepo from except = liftIO $ do commitDetails <- newMVar Nothing return Commit {..} +listTags :: MonadIO m => Repo -> m [ Tag Commit ] +listTags repo = liftIO $ do + out <- runGitCommand repo + [ "for-each-ref", "refs/tags" + , "--format=%(objecttype) %(refname:short)" + ] + fmap catMaybes $ forM (map words $ lines out) $ \case + [ "tag", tname ] -> tryReadTag repo (T.pack tname) + _ -> return Nothing + mergeBase :: MonadIO m => Repo -> [ CommitId ] -> m [ Commit ] mergeBase commitRepo cids = liftIO $ do out <- runGitCommand commitRepo $ "merge-base" : "--all" : "--octopus" : map showCommitId cids -- cgit v1.2.3