From 425730f03a68cfa6a0e43a88c83f3470d8724627 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sat, 9 Aug 2014 11:09:54 -0400 Subject: unlock: Better error handling; continue past files that are not available or cannot be unlocked due to disk space, and try all specified files. --- Command/Unlock.hs | 16 ++++++++++------ debian/changelog | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Command/Unlock.hs b/Command/Unlock.hs index 0070410a6..8cc72f3a3 100644 --- a/Command/Unlock.hs +++ b/Command/Unlock.hs @@ -26,15 +26,17 @@ seek = withFilesInGit $ whenAnnexed start {- The unlock subcommand replaces the symlink with a copy of the file's - content. -} start :: FilePath -> Key -> CommandStart -start file key = do +start file key = stopUnless (inAnnex key) $ do showStart "unlock" file - next $ perform file key + ifM (checkDiskSpace Nothing key 0) + ( next $ perform file key + , do + warning "not enough disk space to copy file" + next $ next $ return False + ) perform :: FilePath -> Key -> CommandPerform perform dest key = do - unlessM (inAnnex key) $ error "content not present" - unlessM (checkDiskSpace Nothing key 0) $ error "cannot unlock" - src <- calcRepo $ gitAnnexLocation key tmpdest <- fromRepo $ gitAnnexTmpObjectLocation key liftIO $ createDirectoryIfMissing True (parentDir tmpdest) @@ -46,5 +48,7 @@ perform dest key = do moveFile tmpdest dest thawContent dest next $ return True - , error "copy failed!" + , do + warning "copy failed!" + next $ return False ) diff --git a/debian/changelog b/debian/changelog index 3a8ab302e..ed52e7ad9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -25,6 +25,8 @@ git-annex (5.20140718) UNRELEASED; urgency=medium * Dropping an object from a bup special remote now deletes the git branch for the object, although of course the object's content cannot be deleted due to the nature of bup. + * unlock: Better error handling; continue past files that are not available + or cannot be unlocked due to disk space, and try all specified files. -- Joey Hess Mon, 21 Jul 2014 14:41:26 -0400 -- cgit v1.2.3