unlock: Fix behavior when file content is not present.

This commit is contained in:
Joey Hess 2011-01-13 23:46:02 -04:00
parent 23686cc63d
commit c1839fdccb
3 changed files with 16 additions and 4 deletions

View file

@ -12,6 +12,7 @@ import System.Directory hiding (copyFile)
import Command
import qualified Annex
import qualified Backend
import Types
import Messages
import Locations
@ -31,8 +32,12 @@ seek = [withFilesInGit start]
- content. -}
start :: CommandStartString
start file = isAnnexed file $ \(key, _) -> do
showStart "unlock" file
return $ Just $ perform file key
inbackend <- Backend.hasKey key
if not inbackend
then return Nothing
else do
showStart "unlock" file
return $ Just $ perform file key
perform :: FilePath -> Key -> CommandPerform
perform dest key = do

1
debian/changelog vendored
View file

@ -5,6 +5,7 @@ git-annex (0.18) UNRELEASED; urgency=low
(Did not affect ssh remotes.)
* fsck: Fix bug in moving of corrupted files to .git/annex/bad/
* migrate: Fix support for --backend option.
* unlock: Fix behavior when file content is not present.
* Test suite improvements. Current top-level test coverage: 80%
-- Joey Hess <joeyh@debian.org> Tue, 11 Jan 2011 16:05:25 -0400

10
test.hs
View file

@ -215,6 +215,12 @@ test_copy = "git-annex copy" ~: TestCase $ intmpclonerepo $ do
test_lock :: Test
test_lock = "git-annex unlock/lock" ~: intmpclonerepo $ do
-- regression test: unlock of not present file should skip it
annexed_notpresent annexedfile
r <- git_annex "unlock" ["-q", annexedfile]
r @? "unlock failed with not present file"
annexed_notpresent annexedfile
git_annex "get" ["-q", annexedfile] @? "get of file failed"
annexed_present annexedfile
git_annex "unlock" ["-q", annexedfile] @? "unlock failed"
@ -232,8 +238,8 @@ test_lock = "git-annex unlock/lock" ~: intmpclonerepo $ do
runchecks [checklink, checkunwritable] annexedfile
c <- readFile annexedfile
assertEqual ("content of modified file") c (changedcontent annexedfile)
r <- git_annex "drop" ["-q", annexedfile]
(not r) @? "drop wrongly succeeded with no known copy of modified file"
r' <- git_annex "drop" ["-q", annexedfile]
not r' @? "drop wrongly succeeded with no known copy of modified file"
test_edit :: Test
test_edit = "git-annex edit/commit" ~: TestList [t False, t True]