no remotes support import yet

This commit is contained in:
Joey Hess 2019-02-20 15:55:01 -04:00
parent e8bfc3640b
commit ccc0684d21
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
20 changed files with 68 additions and 22 deletions

View file

@ -17,7 +17,7 @@ import qualified Git
import Config.Cost import Config.Cost
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Export import Remote.Helper.ExportImport
import Annex.UUID import Annex.UUID
import Utility.Metered import Utility.Metered
@ -35,6 +35,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = adbSetup , setup = adbSetup
, exportSupported = exportIsSupported , exportSupported = exportIsSupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -61,6 +62,7 @@ gen r u c gc = do
, removeExportDirectory = Just $ removeExportDirectoryM serial adir , removeExportDirectory = Just $ removeExportDirectoryM serial adir
, renameExport = renameExportM serial adir , renameExport = renameExportM serial adir
} }
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -27,7 +27,7 @@ import Annex.Perms
import Annex.Tmp import Annex.Tmp
import Annex.UUID import Annex.UUID
import qualified Annex.Url as Url import qualified Annex.Url as Url
import Remote.Helper.Export import Remote.Helper.ExportImport
import Network.URI import Network.URI
@ -43,6 +43,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = error "not supported" , setup = error "not supported"
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
-- There is only one bittorrent remote, and it always exists. -- There is only one bittorrent remote, and it always exists.
@ -68,6 +69,7 @@ gen r _ c gc = do
, checkPresent = checkKey , checkPresent = checkKey
, checkPresentCheap = False , checkPresentCheap = False
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -25,7 +25,7 @@ import Config.Cost
import qualified Remote.Helper.Ssh as Ssh import qualified Remote.Helper.Ssh as Ssh
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Export import Remote.Helper.ExportImport
import Utility.Hash import Utility.Hash
import Utility.UserInfo import Utility.UserInfo
import Annex.UUID import Annex.UUID
@ -41,6 +41,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = bupSetup , setup = bupSetup
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -67,6 +68,7 @@ gen r u c gc = do
, checkPresent = checkPresentDummy , checkPresent = checkPresentDummy
, checkPresentCheap = bupLocal buprepo , checkPresentCheap = bupLocal buprepo
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -19,7 +19,7 @@ import qualified Git
import Config import Config
import Config.Cost import Config.Cost
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Export import Remote.Helper.ExportImport
import Annex.Ssh import Annex.Ssh
import Annex.UUID import Annex.UUID
import Utility.SshHost import Utility.SshHost
@ -36,6 +36,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = ddarSetup , setup = ddarSetup
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -66,6 +67,7 @@ gen r u c gc = do
, checkPresent = checkPresentDummy , checkPresent = checkPresentDummy
, checkPresentCheap = ddarLocal ddarrepo , checkPresentCheap = ddarLocal ddarrepo
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -26,7 +26,7 @@ import Config.Cost
import Config import Config
import Utility.FileMode import Utility.FileMode
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Export import Remote.Helper.ExportImport
import qualified Remote.Directory.LegacyChunked as Legacy import qualified Remote.Directory.LegacyChunked as Legacy
import Annex.Content import Annex.Content
import Annex.UUID import Annex.UUID
@ -40,6 +40,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = directorySetup , setup = directorySetup
, exportSupported = exportIsSupported , exportSupported = exportIsSupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -73,6 +74,7 @@ gen r u c gc = do
, removeExportDirectory = Nothing , removeExportDirectory = Nothing
, renameExport = renameExportM dir , renameExport = renameExportM dir
} }
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -19,7 +19,7 @@ import Config
import Git.Config (isTrue, boolConfig) import Git.Config (isTrue, boolConfig)
import Git.Env import Git.Env
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Export import Remote.Helper.ExportImport
import Annex.Export import Annex.Export
import Remote.Helper.ReadOnly import Remote.Helper.ReadOnly
import Remote.Helper.Messages import Remote.Helper.Messages
@ -48,6 +48,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = externalSetup , setup = externalSetup
, exportSupported = checkExportSupported , exportSupported = checkExportSupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -119,6 +120,7 @@ gen r u c gc
, checkPresent = checkPresentDummy , checkPresent = checkPresentDummy
, checkPresentCheap = False , checkPresentCheap = False
, exportActions = exportactions , exportActions = exportactions
, importActions = importUnsupported
, whereisKey = towhereis , whereisKey = towhereis
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -38,7 +38,7 @@ import Remote.Helper.Git
import Remote.Helper.Encryptable import Remote.Helper.Encryptable
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Export import Remote.Helper.ExportImport
import qualified Remote.Helper.Ssh as Ssh import qualified Remote.Helper.Ssh as Ssh
import Utility.Metered import Utility.Metered
import Annex.UUID import Annex.UUID
@ -61,6 +61,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = gCryptSetup , setup = gCryptSetup
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
chainGen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) chainGen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -119,6 +120,7 @@ gen' r u c gc = do
, checkPresent = checkPresentDummy , checkPresent = checkPresentDummy
, checkPresentCheap = repoCheap r , checkPresentCheap = repoCheap r
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -48,7 +48,7 @@ import Utility.Batch
import Utility.SimpleProtocol import Utility.SimpleProtocol
import Remote.Helper.Git import Remote.Helper.Git
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Export import Remote.Helper.ExportImport
import qualified Remote.Helper.Ssh as Ssh import qualified Remote.Helper.Ssh as Ssh
import qualified Remote.GCrypt import qualified Remote.GCrypt
import qualified Remote.P2P import qualified Remote.P2P
@ -72,6 +72,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = gitSetup , setup = gitSetup
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
list :: Bool -> Annex [Git.Repo] list :: Bool -> Annex [Git.Repo]
@ -165,6 +166,7 @@ gen r u c gc
, checkPresent = inAnnex new st , checkPresent = inAnnex new st
, checkPresentCheap = repoCheap r , checkPresentCheap = repoCheap r
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = if Git.repoIsUrl r , remoteFsck = if Git.repoIsUrl r
then Nothing then Nothing

View file

@ -18,7 +18,7 @@ import Config
import Config.Cost import Config.Cost
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Export import Remote.Helper.ExportImport
import qualified Remote.Helper.AWS as AWS import qualified Remote.Helper.AWS as AWS
import Creds import Creds
import Utility.Metered import Utility.Metered
@ -36,6 +36,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = glacierSetup , setup = glacierSetup
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -65,6 +66,7 @@ gen r u c gc = new <$> remoteCost gc veryExpensiveRemoteCost
, checkPresent = checkPresentDummy , checkPresent = checkPresentDummy
, checkPresentCheap = False , checkPresentCheap = False
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -1,13 +1,13 @@
{- exports to remotes {- Helper to make remotes support export and import (or not).
- -
- Copyright 2017 Joey Hess <id@joeyh.name> - Copyright 2017-2019 Joey Hess <id@joeyh.name>
- -
- Licensed under the GNU GPL version 3 or higher. - Licensed under the GNU GPL version 3 or higher.
-} -}
{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleInstances #-}
module Remote.Helper.Export where module Remote.Helper.ExportImport where
import Annex.Common import Annex.Common
import Types.Remote import Types.Remote
@ -43,6 +43,20 @@ instance HasExportUnsupported (ExportActions Annex) where
, renameExport = \_ _ _ -> return False , renameExport = \_ _ _ -> return False
} }
-- | Use for remotes that do not support imports.
class HasImportUnsupported a where
importUnsupported :: a
instance HasImportUnsupported (RemoteConfig -> RemoteGitConfig -> Annex Bool) where
importUnsupported = \_ _ -> return False
instance HasImportUnsupported (ImportActions Annex) where
importUnsupported = ImportActions
{ listContents = return Nothing
, retrieveExportWithContentIdentifier = \_ _ _ _ -> return Nothing
, storeExportWithContentIdentifier = \_ _ _ _ _ -> return Nothing
}
exportIsSupported :: RemoteConfig -> RemoteGitConfig -> Annex Bool exportIsSupported :: RemoteConfig -> RemoteGitConfig -> Annex Bool
exportIsSupported = \_ _ -> return True exportIsSupported = \_ _ -> return True

View file

@ -16,7 +16,7 @@ import Config.Cost
import Annex.UUID import Annex.UUID
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Export import Remote.Helper.ExportImport
import Utility.Env import Utility.Env
import Messages.Progress import Messages.Progress
@ -32,6 +32,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = hookSetup , setup = hookSetup
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -57,6 +58,7 @@ gen r u c gc = do
, checkPresent = checkPresentDummy , checkPresent = checkPresentDummy
, checkPresentCheap = False , checkPresentCheap = False
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -18,7 +18,7 @@ import Types.Remote
import Annex.UUID import Annex.UUID
import Remote.Helper.Hooks import Remote.Helper.Hooks
import Remote.Helper.ReadOnly import Remote.Helper.ReadOnly
import Remote.Helper.Export import Remote.Helper.ExportImport
import qualified Git import qualified Git
import qualified Git.Config import qualified Git.Config

View file

@ -23,7 +23,7 @@ import Annex.UUID
import Config import Config
import Config.Cost import Config.Cost
import Remote.Helper.Git import Remote.Helper.Git
import Remote.Helper.Export import Remote.Helper.ExportImport
import Remote.Helper.P2P import Remote.Helper.P2P
import Utility.AuthToken import Utility.AuthToken
@ -38,6 +38,7 @@ remote = RemoteType
, generate = \_ _ _ _ -> return Nothing , generate = \_ _ _ _ -> return Nothing
, setup = error "P2P remotes are set up using git-annex p2p" , setup = error "P2P remotes are set up using git-annex p2p"
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
chainGen :: P2PAddress -> Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) chainGen :: P2PAddress -> Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -59,6 +60,7 @@ chainGen addr r u c gc = do
, checkPresent = checkpresent protorunner , checkPresent = checkpresent protorunner
, checkPresentCheap = False , checkPresentCheap = False
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -28,7 +28,7 @@ import Annex.UUID
import Annex.Ssh import Annex.Ssh
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Export import Remote.Helper.ExportImport
import Types.Export import Types.Export
import Remote.Rsync.RsyncUrl import Remote.Rsync.RsyncUrl
import Crypto import Crypto
@ -51,6 +51,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = rsyncSetup , setup = rsyncSetup
, exportSupported = exportIsSupported , exportSupported = exportIsSupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -85,6 +86,7 @@ gen r u c gc = do
, removeExportDirectory = Just (removeExportDirectoryM o) , removeExportDirectory = Just (removeExportDirectoryM o)
, renameExport = renameExportM o , renameExport = renameExportM o
} }
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -46,7 +46,7 @@ import Config.Cost
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Http import Remote.Helper.Http
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Export import Remote.Helper.ExportImport
import qualified Remote.Helper.AWS as AWS import qualified Remote.Helper.AWS as AWS
import Creds import Creds
import Annex.UUID import Annex.UUID
@ -72,6 +72,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = s3Setup , setup = s3Setup
, exportSupported = exportIsSupported , exportSupported = exportIsSupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -112,6 +113,7 @@ gen r u c gc = do
, removeExportDirectory = Nothing , removeExportDirectory = Nothing
, renameExport = renameExportS3 hdl this info , renameExport = renameExportS3 hdl this info
} }
, importActions = importUnsupported
, whereisKey = Just (getPublicWebUrls u info c) , whereisKey = Just (getPublicWebUrls u info c)
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -34,7 +34,7 @@ import qualified Git
import Config import Config
import Config.Cost import Config.Cost
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Export import Remote.Helper.ExportImport
import Annex.UUID import Annex.UUID
import Annex.Content import Annex.Content
import Logs.RemoteState import Logs.RemoteState
@ -58,6 +58,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = tahoeSetup , setup = tahoeSetup
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -80,6 +81,7 @@ gen r u c gc = do
, checkPresent = checkKey u hdl , checkPresent = checkKey u hdl
, checkPresentCheap = False , checkPresentCheap = False
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Just (getWhereisKey u) , whereisKey = Just (getWhereisKey u)
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -10,7 +10,7 @@ module Remote.Web (remote, getWebUrls) where
import Annex.Common import Annex.Common
import Types.Remote import Types.Remote
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Export import Remote.Helper.ExportImport
import qualified Git import qualified Git
import qualified Git.Construct import qualified Git.Construct
import Annex.Content import Annex.Content
@ -29,6 +29,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = error "not supported" , setup = error "not supported"
, exportSupported = exportUnsupported , exportSupported = exportUnsupported
, importSupported = importUnsupported
} }
-- There is only one web remote, and it always exists. -- There is only one web remote, and it always exists.
@ -57,6 +58,7 @@ gen r _ c gc = do
, checkPresent = checkKey , checkPresent = checkKey
, checkPresentCheap = False , checkPresentCheap = False
, exportActions = exportUnsupported , exportActions = exportUnsupported
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -34,7 +34,7 @@ import Config.Cost
import Remote.Helper.Special import Remote.Helper.Special
import Remote.Helper.Messages import Remote.Helper.Messages
import Remote.Helper.Http import Remote.Helper.Http
import Remote.Helper.Export import Remote.Helper.ExportImport
import qualified Remote.Helper.Chunked.Legacy as Legacy import qualified Remote.Helper.Chunked.Legacy as Legacy
import Creds import Creds
import Utility.Metered import Utility.Metered
@ -53,6 +53,7 @@ remote = RemoteType
, generate = gen , generate = gen
, setup = webdavSetup , setup = webdavSetup
, exportSupported = exportIsSupported , exportSupported = exportIsSupported
, importSupported = importUnsupported
} }
gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote) gen :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex (Maybe Remote)
@ -88,6 +89,7 @@ gen r u c gc = new <$> remoteCost gc expensiveRemoteCost
removeExportDirectoryDav this removeExportDirectoryDav this
, renameExport = renameExportDav this , renameExport = renameExportDav this
} }
, importActions = importUnsupported
, whereisKey = Nothing , whereisKey = Nothing
, remoteFsck = Nothing , remoteFsck = Nothing
, repairRepo = Nothing , repairRepo = Nothing

View file

@ -263,7 +263,7 @@ data ImportActions a = ImportActions
-- --
-- May also find old versions of files that are still stored in the -- May also find old versions of files that are still stored in the
-- remote, and return a ContentHistory with multiple nodes. -- remote, and return a ContentHistory with multiple nodes.
{ listContents :: a (ContentHistory [(ExportLocation, ContentIdentifier)]) { listContents :: a (Maybe (ContentHistory [(ExportLocation, ContentIdentifier)]))
-- Retrieves a file from the remote. Ensures that the file -- Retrieves a file from the remote. Ensures that the file
-- it retrieves has the requested ContentIdentifier. -- it retrieves has the requested ContentIdentifier.
-- --

View file

@ -929,7 +929,7 @@ Executable git-annex
Remote.Helper.Chunked Remote.Helper.Chunked
Remote.Helper.Chunked.Legacy Remote.Helper.Chunked.Legacy
Remote.Helper.Encryptable Remote.Helper.Encryptable
Remote.Helper.Export Remote.Helper.ExportImport
Remote.Helper.Git Remote.Helper.Git
Remote.Helper.Hooks Remote.Helper.Hooks
Remote.Helper.Messages Remote.Helper.Messages