diff options
Diffstat (limited to 'Git/Ref.hs')
-rw-r--r-- | Git/Ref.hs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Git/Ref.hs b/Git/Ref.hs index 6bc47d5ed..7f21b0ab8 100644 --- a/Git/Ref.hs +++ b/Git/Ref.hs @@ -31,11 +31,14 @@ base = Ref . remove "refs/heads/" . remove "refs/remotes/" . fromRef | prefix `isPrefixOf` s = drop (length prefix) s | otherwise = s +{- Gets the basename of any qualified ref. -} +basename :: Ref -> Ref +basename = Ref . reverse . takeWhile (/= '/') . reverse . fromRef + {- Given a directory and any ref, takes the basename of the ref and puts - it under the directory. -} under :: String -> Ref -> Ref -under dir r = Ref $ dir ++ "/" ++ - (reverse $ takeWhile (/= '/') $ reverse $ fromRef r) +under dir r = Ref $ dir ++ "/" ++ fromRef (basename r) {- Given a directory such as "refs/remotes/origin", and a ref such as - refs/heads/master, yields a version of that ref under the directory, |