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:
Joey Hess 2013-10-11 16:03:18 -04:00
parent 7e723d2f56
commit 1ffb3bb0ba
15 changed files with 104 additions and 41 deletions

View file

@ -15,6 +15,7 @@ import Assistant.Alert.Utility
import qualified Remote
import Utility.Tense
import Logs.Transfer
import Git.Remote (RemoteName)
import Data.String
import qualified Data.Text as T
@ -149,9 +150,11 @@ sanityCheckFixAlert msg = Alert
alerthead = "The daily sanity check found and fixed a problem:"
alertfoot = "If these problems persist, consider filing a bug report."
fsckAlert :: AlertButton -> Alert
fsckAlert button = baseActivityAlert
{ alertData = [ UnTensed "Consistency check in progress" ]
fsckAlert :: AlertButton -> Maybe RemoteName -> Alert
fsckAlert button n = baseActivityAlert
{ alertData = case n of
Nothing -> [ UnTensed $ T.pack $ "Consistency check in progress" ]
Just remotename -> [ UnTensed $ T.pack $ "Consistency check of " ++ remotename ++ " in progress"]
, alertButton = Just button
}