split off versionedExport from appendonly
S3 uses versionedExport, while GitLFS uses appendonly. This is groundwork for later changes.
This commit is contained in:
parent
fe4725d66e
commit
46059ab0e5
12 changed files with 41 additions and 26 deletions
|
@ -76,6 +76,7 @@ gen r u rc gc rs = do
|
|||
{ storeExport = storeExportM serial adir
|
||||
, retrieveExport = retrieveExportM serial adir
|
||||
, removeExport = removeExportM serial adir
|
||||
, versionedExport = False
|
||||
, checkPresentExport = checkPresentExportM this serial adir
|
||||
, removeExportDirectory = Just $ removeExportDirectoryM serial adir
|
||||
, renameExport = renameExportM serial adir
|
||||
|
|
|
@ -88,6 +88,7 @@ gen r u rc gc rs = do
|
|||
{ storeExport = storeExportM dir
|
||||
, retrieveExport = retrieveExportM dir
|
||||
, removeExport = removeExportM dir
|
||||
, versionedExport = False
|
||||
, checkPresentExport = checkPresentExportM dir
|
||||
-- Not needed because removeExportLocation
|
||||
-- auto-removes empty directories.
|
||||
|
|
|
@ -93,6 +93,7 @@ gen r u rc gc rs
|
|||
{ storeExport = storeExportM external
|
||||
, retrieveExport = retrieveExportM external
|
||||
, removeExport = removeExportM external
|
||||
, versionedExport = False
|
||||
, checkPresentExport = checkPresentExportM external
|
||||
, removeExportDirectory = Just $ removeExportDirectoryM external
|
||||
, renameExport = renameExportM external
|
||||
|
|
|
@ -39,6 +39,7 @@ instance HasExportUnsupported (ExportActions Annex) where
|
|||
, retrieveExport = nope
|
||||
, checkPresentExport = \_ _ -> return False
|
||||
, removeExport = nope
|
||||
, versionedExport = False
|
||||
, removeExportDirectory = nope
|
||||
, renameExport = \_ _ _ -> return Nothing
|
||||
}
|
||||
|
@ -128,7 +129,8 @@ adjustExportImport' isexport isimport r rs = do
|
|||
dbv <- prepdbv
|
||||
ciddbv <- prepciddb
|
||||
let normal = not isexport && not isimport
|
||||
let iskeyvaluestore = normal || appendonly r
|
||||
let versioned = versionedExport (exportActions r)
|
||||
let iskeyvaluestore = normal || versioned
|
||||
return $ r
|
||||
{ exportActions = if isexport
|
||||
then if isimport
|
||||
|
@ -170,16 +172,16 @@ adjustExportImport' isexport isimport r rs = do
|
|||
else Nothing
|
||||
, retrieveKeyFile = \k af dest p ->
|
||||
if isimport
|
||||
then supportappendonlyretrieve k af dest p $
|
||||
then supportversionedretrieve k af dest p $
|
||||
retrieveKeyFileFromImport dbv ciddbv k af dest p
|
||||
else if isexport
|
||||
then supportappendonlyretrieve k af dest p $
|
||||
then supportversionedretrieve k af dest p $
|
||||
retrieveKeyFileFromExport dbv k af dest p
|
||||
else retrieveKeyFile r k af dest p
|
||||
, retrieveKeyFileCheap = if iskeyvaluestore
|
||||
then retrieveKeyFileCheap r
|
||||
else Nothing
|
||||
, checkPresent = \k -> if appendonly r
|
||||
, checkPresent = \k -> if versioned
|
||||
then checkPresent r k
|
||||
else if isimport
|
||||
then anyM (checkPresentImport ciddbv k)
|
||||
|
@ -356,11 +358,11 @@ adjustExportImport' isexport isimport r rs = do
|
|||
then retrieveKeyFileFromExport dbv k af dest p
|
||||
else giveup "no content identifier is recorded, unable to retrieve"
|
||||
|
||||
-- appendonly remotes have a key/value store, so can use
|
||||
-- versionedExport remotes have a key/value store, so can use
|
||||
-- the usual retrieveKeyFile, rather than an import/export
|
||||
-- variant. However, fall back to that if retrieveKeyFile fails.
|
||||
supportappendonlyretrieve k af dest p a
|
||||
| appendonly r =
|
||||
supportversionedretrieve k af dest p a
|
||||
| versionedExport (exportActions r) =
|
||||
retrieveKeyFile r k af dest p
|
||||
`catchNonAsync` const a
|
||||
| otherwise = a
|
||||
|
|
|
@ -73,6 +73,7 @@ gen r u rc gc rs = do
|
|||
{ storeExport = cannotModify
|
||||
, retrieveExport = retriveExportHttpAlso url
|
||||
, removeExport = cannotModify
|
||||
, versionedExport = False
|
||||
, checkPresentExport = checkPresentExportHttpAlso url
|
||||
, removeExportDirectory = Nothing
|
||||
, renameExport = cannotModify
|
||||
|
|
|
@ -101,6 +101,7 @@ gen r u rc gc rs = do
|
|||
{ storeExport = storeExportM o
|
||||
, retrieveExport = retrieveExportM o
|
||||
, removeExport = removeExportM o
|
||||
, versionedExport = False
|
||||
, checkPresentExport = checkPresentExportM o
|
||||
, removeExportDirectory = Just (removeExportDirectoryM o)
|
||||
, renameExport = renameExportM o
|
||||
|
|
|
@ -210,6 +210,7 @@ gen r u rc gc rs = do
|
|||
{ storeExport = storeExportS3 hdl this rs info magic
|
||||
, retrieveExport = retrieveExportS3 hdl this info
|
||||
, removeExport = removeExportS3 hdl this rs info
|
||||
, versionedExport = versioning info
|
||||
, checkPresentExport = checkPresentExportS3 hdl this info
|
||||
-- S3 does not have directories.
|
||||
, removeExportDirectory = Nothing
|
||||
|
@ -232,7 +233,7 @@ gen r u rc gc rs = do
|
|||
, gitconfig = gc
|
||||
, localpath = Nothing
|
||||
, readonly = False
|
||||
, appendonly = versioning info
|
||||
, appendonly = False
|
||||
, availability = GloballyAvailable
|
||||
, remotetype = remote
|
||||
, mkUnavailable = gen r u (M.insert hostField (Proposed "!dne!") rc) gc rs
|
||||
|
|
|
@ -100,6 +100,7 @@ gen r u rc gc rs = do
|
|||
, retrieveExport = retrieveExportDav hdl
|
||||
, checkPresentExport = checkPresentExportDav hdl this
|
||||
, removeExport = removeExportDav hdl
|
||||
, versionedExport = False
|
||||
, removeExportDirectory = Just $
|
||||
removeExportDirectoryDav hdl
|
||||
, renameExport = renameExportDav hdl
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue