add GETAVAILABILITY to external special remote protocol

And some reworking of types, and added an annex-availability git config
setting.
This commit is contained in:
Joey Hess 2014-01-13 14:41:10 -04:00
parent 47d2ebd374
commit c20f31a1ad
22 changed files with 99 additions and 26 deletions

View file

@ -1,6 +1,6 @@
{- Utilities for git remotes.
-
- Copyright 2011-2012 Joey Hess <joey@kitenet.net>
- Copyright 2011-2014 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
@ -9,18 +9,20 @@ module Remote.Helper.Git where
import Common.Annex
import qualified Git
import Types.Availability
repoCheap :: Git.Repo -> Bool
repoCheap = not . Git.repoIsUrl
localpathCalc :: Git.Repo -> Maybe FilePath
localpathCalc r = if globallyAvailableCalc r
then Nothing
else Just $ Git.repoPath r
localpathCalc r
| availabilityCalc r == GloballyAvailable = Nothing
| otherwise = Just $ Git.repoPath r
globallyAvailableCalc :: Git.Repo -> Bool
globallyAvailableCalc r = not $
Git.repoIsLocal r || Git.repoIsLocalUnknown r
availabilityCalc :: Git.Repo -> Availability
availabilityCalc r
| (Git.repoIsLocal r || Git.repoIsLocalUnknown r) = LocallyAvailable
| otherwise = GloballyAvailable
{- Avoids performing an action on a local repository that's not usable.
- Does not check that the repository is still available on disk. -}