summaryrefslogtreecommitdiff
path: root/Commands.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Commands.hs')
-rw-r--r--Commands.hs25
1 files changed, 10 insertions, 15 deletions
diff --git a/Commands.hs b/Commands.hs
index 729eae124..d201b6f79 100644
--- a/Commands.hs
+++ b/Commands.hs
@@ -438,32 +438,27 @@ moveToCleanup remote key = do
-}
moveFromStart :: FilePath -> Annex (Maybe SubCmdPerform)
moveFromStart file = isAnnexed file $ \(key, backend) -> do
- return $ Just $ moveFromPerform file key
+ g <- Annex.gitRepo
+ remote <- Remotes.commandLineRemote
+ l <- Remotes.keyPossibilities key
+ if (elem remote l)
+ then return $ Just $ moveFromPerform file key
+ else return Nothing
moveFromPerform :: FilePath -> Key -> Annex (Maybe SubCmdCleanup)
moveFromPerform file key = do
- -- checking the remote is expensive, so not done in the start step
remote <- Remotes.commandLineRemote
- isthere <- Remotes.inAnnex remote key
ishere <- inAnnex key
- case (ishere, isthere) of
- (_, Left err) -> do
- showNote $ show err
- return Nothing
- (_, Right False) -> do
- showNote $ "not present in " ++ (Git.repoDescribe remote)
- return Nothing
- (False, Right True) -> do
+ if (ishere)
+ then return $ Just $ moveFromCleanup remote key
+ else do
-- copy content from remote
ok <- getViaTmp key (Remotes.copyFromRemote remote key)
if (ok)
then return $ Just $ moveFromCleanup remote key
else return Nothing -- fail
- (True, Right True) -> do
- -- the content is already here, just remove from remote
- return $ Just $ moveFromCleanup remote key
moveFromCleanup :: Git.Repo -> Key -> Annex Bool
moveFromCleanup remote key = do
- -- Force drop content from the remote.
+ showNote $ "dropping from " ++ (Git.repoDescribe remote) ++ "..."
Remotes.runCmd remote "git-annex" ["dropkey", "--quiet", "--force",
"--backend=" ++ (backendName key),
keyName key]