use filepath-bytestring for annex object manipulations
git-annex find is now RawFilePath end to end, no string conversions. So is git-annex get when it does not need to get anything. So this is a major milestone on optimisation. Benchmarks indicate around 30% speedup in both commands. Probably many other performance improvements. All or nearly all places where a file is statted use RawFilePath now.
This commit is contained in:
parent
bdec7fed9c
commit
c19211774f
53 changed files with 324 additions and 234 deletions
|
@ -61,6 +61,7 @@ import Creds
|
|||
import Types.NumCopies
|
||||
import Annex.Action
|
||||
import Messages.Progress
|
||||
import qualified Utility.RawFilePath as R
|
||||
|
||||
#ifndef mingw32_HOST_OS
|
||||
import Utility.FileMode
|
||||
|
@ -393,9 +394,9 @@ keyUrls gc repo r key = map tourl locs'
|
|||
| remoteAnnexBare remoteconfig == Just False = reverse (annexLocations gc key)
|
||||
| otherwise = annexLocations gc key
|
||||
#ifndef mingw32_HOST_OS
|
||||
locs' = locs
|
||||
locs' = map fromRawFilePath locs
|
||||
#else
|
||||
locs' = map (replace "\\" "/") locs
|
||||
locs' = map (replace "\\" "/" . fromRawFilePath) locs
|
||||
#endif
|
||||
remoteconfig = gitconfig r
|
||||
|
||||
|
@ -599,9 +600,9 @@ copyFromRemoteCheap' repo r st key af file
|
|||
| not $ Git.repoIsUrl repo = guardUsable repo (return False) $ do
|
||||
gc <- getGitConfigFromState st
|
||||
loc <- liftIO $ gitAnnexLocation key repo gc
|
||||
liftIO $ ifM (doesFileExist loc)
|
||||
liftIO $ ifM (R.doesPathExist loc)
|
||||
( do
|
||||
absloc <- absPath loc
|
||||
absloc <- absPath (fromRawFilePath loc)
|
||||
catchBoolIO $ do
|
||||
createSymbolicLink absloc file
|
||||
return True
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue