summaryrefslogtreecommitdiff
path: root/Git.hs
diff options
context:
space:
mode:
authorJoey Hess <joeyh@joeyh.name>2021-01-11 21:52:32 -0400
committerJoey Hess <joeyh@joeyh.name>2021-01-11 21:52:32 -0400
commitad48349741384ed0e49fab9cf13ac7f90aba0dd1 (patch)
tree6b8c894ce1057d069f89e7209c266f00ea43ec66 /Git.hs
parentb3e72e94efbce652f25fb99d6c6ace8beb2a52d4 (diff)
downloadgit-repair-ad48349741384ed0e49fab9cf13ac7f90aba0dd1.tar.gz
Merge from git-annex.
Diffstat (limited to 'Git.hs')
-rw-r--r--Git.hs25
1 files changed, 13 insertions, 12 deletions
diff --git a/Git.hs b/Git.hs
index d33345e..32cf82e 100644
--- a/Git.hs
+++ b/Git.hs
@@ -3,11 +3,12 @@
- This is written to be completely independant of git-annex and should be
- suitable for other uses.
-
- - Copyright 2010-2012 Joey Hess <id@joeyh.name>
+ - Copyright 2010-2020 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU AGPL version 3 or higher.
-}
+{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE CPP #-}
module Git (
@@ -37,10 +38,12 @@ module Git (
relPath,
) where
+import qualified Data.ByteString as B
import Network.URI (uriPath, uriScheme, unEscapeString)
#ifndef mingw32_HOST_OS
import System.Posix.Files
#endif
+import qualified System.FilePath.ByteString as P
import Common
import Git.Types
@@ -130,14 +133,13 @@ assertLocal repo action
| otherwise = action
{- Path to a repository's gitattributes file. -}
-attributes :: Repo -> FilePath
+attributes :: Repo -> RawFilePath
attributes repo
| repoIsLocalBare repo = attributesLocal repo
- | otherwise = fromRawFilePath (repoPath repo) </> ".gitattributes"
+ | otherwise = repoPath repo P.</> ".gitattributes"
-attributesLocal :: Repo -> FilePath
-attributesLocal repo = fromRawFilePath (localGitDir repo)
- </> "info" </> "attributes"
+attributesLocal :: Repo -> RawFilePath
+attributesLocal repo = localGitDir repo P.</> "info" P.</> "attributes"
{- Path to a given hook script in a repository, only if the hook exists
- and is executable. -}
@@ -159,13 +161,13 @@ relPath = adjustPath torel
where
torel p = do
p' <- relPathCwdToFile p
- return $ if null p' then "." else p'
+ return $ if B.null p' then "." else p'
{- Adusts the path to a local Repo using the provided function. -}
-adjustPath :: (FilePath -> IO FilePath) -> Repo -> IO Repo
+adjustPath :: (RawFilePath -> IO RawFilePath) -> Repo -> IO Repo
adjustPath f r@(Repo { location = l@(Local { gitdir = d, worktree = w }) }) = do
- d' <- f' d
- w' <- maybe (pure Nothing) (Just <$$> f') w
+ d' <- f d
+ w' <- maybe (pure Nothing) (Just <$$> f) w
return $ r
{ location = l
{ gitdir = d'
@@ -173,8 +175,7 @@ adjustPath f r@(Repo { location = l@(Local { gitdir = d, worktree = w }) }) = do
}
}
where
- f' v = toRawFilePath <$> f (fromRawFilePath v)
adjustPath f r@(Repo { location = LocalUnknown d }) = do
- d' <- toRawFilePath <$> f (fromRawFilePath d)
+ d' <- f d
return $ r { location = LocalUnknown d' }
adjustPath _ r = pure r