convert TopFilePath to use RawFilePath
Adds a dependency on filepath-bytestring, an as yet unreleased fork of filepath that operates on RawFilePath. Git.Repo also changed to use RawFilePath for the path to the repo. This does eliminate some RawFilePath -> FilePath -> RawFilePath conversions. And filepath-bytestring's </> is probably faster. But I don't expect a major performance improvement from this. This is mostly groundwork for making Annex.Location use RawFilePath, which will allow for a conversion-free pipleline.
This commit is contained in:
parent
a7004375ec
commit
bdec7fed9c
97 changed files with 323 additions and 271 deletions
|
@ -62,7 +62,7 @@ fromAbsPath dir
|
|||
| otherwise =
|
||||
error $ "internal error, " ++ dir ++ " is not absolute"
|
||||
where
|
||||
ret = pure . newFrom . LocalUnknown
|
||||
ret = pure . newFrom . LocalUnknown . toRawFilePath
|
||||
canondir = dropTrailingPathSeparator dir
|
||||
{- When dir == "foo/.git", git looks for "foo/.git/.git",
|
||||
- and failing that, uses "foo" as the repository. -}
|
||||
|
@ -117,7 +117,7 @@ localToUrl reference r
|
|||
[ Url.scheme reference
|
||||
, "//"
|
||||
, auth
|
||||
, repoPath r
|
||||
, fromRawFilePath (repoPath r)
|
||||
]
|
||||
in r { location = Url $ fromJust $ parseURI absurl }
|
||||
|
||||
|
@ -154,7 +154,7 @@ fromRemoteLocation s repo = gen $ parseRemoteLocation s repo
|
|||
fromRemotePath :: FilePath -> Repo -> IO Repo
|
||||
fromRemotePath dir repo = do
|
||||
dir' <- expandTilde dir
|
||||
fromPath $ repoPath repo </> dir'
|
||||
fromPath $ fromRawFilePath (repoPath repo) </> dir'
|
||||
|
||||
{- Git remotes can have a directory that is specified relative
|
||||
- to the user's home directory, or that contains tilde expansions.
|
||||
|
@ -204,7 +204,7 @@ checkForRepo dir =
|
|||
where
|
||||
check test cont = maybe cont (return . Just) =<< test
|
||||
checkdir c = ifM c
|
||||
( return $ Just $ LocalUnknown dir
|
||||
( return $ Just $ LocalUnknown $ toRawFilePath dir
|
||||
, return Nothing
|
||||
)
|
||||
isRepo = checkdir $
|
||||
|
@ -224,9 +224,9 @@ checkForRepo dir =
|
|||
catchDefaultIO "" (readFile $ dir </> ".git")
|
||||
return $ if gitdirprefix `isPrefixOf` c
|
||||
then Just $ Local
|
||||
{ gitdir = absPathFrom dir $
|
||||
{ gitdir = toRawFilePath $ absPathFrom dir $
|
||||
drop (length gitdirprefix) c
|
||||
, worktree = Just dir
|
||||
, worktree = Just (toRawFilePath dir)
|
||||
}
|
||||
else Nothing
|
||||
where
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue