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.
This commit is contained in:
parent
7e723d2f56
commit
1ffb3bb0ba
15 changed files with 104 additions and 41 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue