diff options
author | Joey Hess <joeyh@joeyh.name> | 2016-06-09 14:40:44 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2016-06-09 14:40:44 -0400 |
commit | 3be798cc348c0869e76c02c972126403927f4475 (patch) | |
tree | f748aee098be4d1e072f867b57d045b4d1c4e503 | |
parent | acc29b6b9759794a27a0c81315fd0bd5a7f1a052 (diff) |
Make lock and unlock work in v6 repos on files whose content is not present.
-rw-r--r-- | CHANGELOG | 2 | ||||
-rw-r--r-- | Command/Lock.hs | 2 | ||||
-rw-r--r-- | Command/Unlock.hs | 26 | ||||
-rw-r--r-- | doc/bugs/content_not_present__58___cannot_lock.mdwn | 3 |
4 files changed, 18 insertions, 15 deletions
@@ -28,6 +28,8 @@ git-annex (6.20160528) UNRELEASED; urgency=medium that had not been synced back to master. (This bug caused broken tree objects to get built by a later git annex sync.) + * Make lock and unlock work in v6 repos on files whose content is not + present. -- Joey Hess <id@joeyh.name> Fri, 27 May 2016 13:12:48 -0400 diff --git a/Command/Lock.hs b/Command/Lock.hs index 1cd50de7b..f9d903622 100644 --- a/Command/Lock.hs +++ b/Command/Lock.hs @@ -45,7 +45,7 @@ startNew file key = ifM (isJust <$> isAnnexLink file) ) where go (Just key') - | key' == key = error "content not present; cannot lock" + | key' == key = cont True | otherwise = errorModified go Nothing = ifM (isUnmodified key file) diff --git a/Command/Unlock.hs b/Command/Unlock.hs index 2fe1175a8..4dc02642e 100644 --- a/Command/Unlock.hs +++ b/Command/Unlock.hs @@ -37,14 +37,9 @@ start :: FilePath -> Key -> CommandStart start file key = ifM (isJust <$> isAnnexLink file) ( do showStart "unlock" file - ifM (inAnnex key) - ( ifM versionSupportsUnlockedPointers - ( next $ performNew file key - , startOld file key - ) - , do - warning "content not present; cannot unlock" - next $ next $ return False + ifM versionSupportsUnlockedPointers + ( next $ performNew file key + , startOld file key ) , stop ) @@ -52,11 +47,16 @@ start file key = ifM (isJust <$> isAnnexLink file) performNew :: FilePath -> Key -> CommandPerform performNew dest key = do destmode <- liftIO $ catchMaybeIO $ fileMode <$> getFileStatus dest - replaceFile dest $ \tmp -> do - r <- linkFromAnnex key tmp destmode - case r of - LinkAnnexOk -> return () - _ -> error "unlock failed" + replaceFile dest $ \tmp -> + ifM (inAnnex key) + ( do + r <- linkFromAnnex key tmp destmode + case r of + LinkAnnexOk -> return () + LinkAnnexNoop -> return () + _ -> error "unlock failed" + , liftIO $ writePointerFile tmp key destmode + ) next $ cleanupNew dest key destmode cleanupNew :: FilePath -> Key -> Maybe FileMode -> CommandCleanup diff --git a/doc/bugs/content_not_present__58___cannot_lock.mdwn b/doc/bugs/content_not_present__58___cannot_lock.mdwn index ddf86f44b..89bf04395 100644 --- a/doc/bugs/content_not_present__58___cannot_lock.mdwn +++ b/doc/bugs/content_not_present__58___cannot_lock.mdwn @@ -22,4 +22,5 @@ lock git/bup.git/bupindex.hlink git-annex: content not present; cannot lock ### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders) - +> Well, that was simply not implemented, but I've done so now. (unlocking +> too). [[done]] --[[Joey]] |