From 0ed41becb4c522bae16a0cff26caa36238d2e78a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 12 Jun 2015 13:05:44 -0400 Subject: optimise ObjectHashLower handling A repo tuned with ObjectHashLower only ever uses lower-case hash directories, so unlike a bare repo which could have old mixed case directories, there is no need to do an expensive check of the filesystem in this case. --- Locations.hs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Locations.hs b/Locations.hs index 3076fc7cd..c3d9c7ab2 100644 --- a/Locations.hs +++ b/Locations.hs @@ -144,13 +144,11 @@ gitAnnexLocation' key r config crippled checker gitdir - Repositories on filesystems that are crippled also use - hashDirLower, since they do not use symlinks and it's - more portable. - - - - ObjectHashLower can also be set to force it. -} - | Git.repoIsLocalBare r - || crippled - || hasDifference ObjectHashLower (annexDifferences config) = - check $ map inrepo $ annexLocations config key + | Git.repoIsLocalBare r || crippled = + check $ map inrepo $ annexLocations config key + | hasDifference ObjectHashLower (annexDifferences config) = + return $ inrepo $ annexLocation config key hashDirLower {- Non-bare repositories only use hashDirMixed, so - don't need to do any work to check if the file is - present. -} -- cgit v1.2.3