diff options
author | Joey Hess <joey@kitenet.net> | 2013-10-11 16:03:18 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-10-11 16:03:18 -0400 |
commit | a8728440dec6213c1e9e5347175effca30c1118e (patch) | |
tree | 6f9d3a2be0ff606912ad8571fbca286e9899b434 /Types | |
parent | 388d27825323091f317ed380e3105f88df3f66cb (diff) |
add remote fsck interface
Currently only implemented for local git remotes. May try to add support
to git-annex-shell for ssh remotes later. Could concevably also be
supported by some special remote, although that seems unlikely.
Cronner user this when available, and when not falls back to
fsck --fast --from remote
git annex fsck --from does not itself use this interface.
To do so, I would need to pass --fast and all other options that influence
fsck on to the git annex fsck that it runs inside the remote. And that
seems like a lot of work for a result that would be no better than
cd remote; git annex fsck
This may need to be revisited if git-annex-shell gets support, since it
may be the case that the user cannot ssh to the server to run git-annex
fsck there, but can run git-annex-shell there.
This commit was sponsored by Damien Diederen.
Diffstat (limited to 'Types')
-rw-r--r-- | Types/Remote.hs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/Types/Remote.hs b/Types/Remote.hs index 918566e8d..fedfb366a 100644 --- a/Types/Remote.hs +++ b/Types/Remote.hs @@ -19,6 +19,7 @@ import Types.GitConfig import Config.Cost import Utility.Metered import Git.Remote +import Utility.SafeCommand type RemoteConfigKey = String type RemoteConfig = M.Map RemoteConfigKey String @@ -64,6 +65,10 @@ data RemoteA a = Remote { hasKeyCheap :: Bool, -- Some remotes can provide additional details for whereis. whereisKey :: Maybe (Key -> a [String]), + -- Some remotes can run a fsck operation on the remote, + -- without transferring all the data to the local repo + -- The parameters are passed to the fsck command on the remote. + remoteFsck :: Maybe ([CommandParam] -> a (IO Bool)), -- a Remote has a persistent configuration store config :: RemoteConfig, -- git repo for the Remote |