diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-10-24 16:48:37 +0200 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-10-29 19:49:12 +0100 |
| commit | c831d87f4b7d1a44a556c5b9d00bb5b2c3ee508b (patch) | |
| tree | fa407920d11d2dc48f030159171f09e81cc87e48 /src/Repo.hs | |
| parent | cc9a4c34e2fdf7555c03e98f3d038b43ba12ddc0 (diff) | |
Tags watch expressions
Diffstat (limited to 'src/Repo.hs')
| -rw-r--r-- | src/Repo.hs | 11 |
1 files changed, 11 insertions, 0 deletions
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 |