thaw content directory in direct mode too
A content directory can be frozen in direct mode. One way this can happen is if the content is transferred before direct mode has a mapping for it, so it's stored in the content directory. So, we need to thaw the content directory before doing things with it.
This commit is contained in:
parent
1111552efd
commit
0807211a67
3 changed files with 6 additions and 0 deletions
|
@ -242,6 +242,7 @@ moveAnnex key src = withObjectLoc key storeobject storedirect
|
||||||
|
|
||||||
storedirect' [] = storeobject =<< calcRepo (gitAnnexLocation key)
|
storedirect' [] = storeobject =<< calcRepo (gitAnnexLocation key)
|
||||||
storedirect' (dest:fs) = do
|
storedirect' (dest:fs) = do
|
||||||
|
thawContentDir =<< calcRepo (gitAnnexLocation key)
|
||||||
updateInodeCache key src
|
updateInodeCache key src
|
||||||
thawContent src
|
thawContent src
|
||||||
replaceFile dest $ liftIO . moveFile src
|
replaceFile dest $ liftIO . moveFile src
|
||||||
|
@ -358,6 +359,7 @@ removeAnnex key = withObjectLoc key remove removedirect
|
||||||
removeInodeCache key
|
removeInodeCache key
|
||||||
cleanObjectLoc key
|
cleanObjectLoc key
|
||||||
removedirect fs = do
|
removedirect fs = do
|
||||||
|
thawContentDir =<< calcRepo (gitAnnexLocation key)
|
||||||
cache <- recordedInodeCache key
|
cache <- recordedInodeCache key
|
||||||
removeInodeCache key
|
removeInodeCache key
|
||||||
mapM_ (resetfile cache) fs
|
mapM_ (resetfile cache) fs
|
||||||
|
|
|
@ -25,6 +25,7 @@ import Annex.Content.Direct
|
||||||
import Annex.Link
|
import Annex.Link
|
||||||
import Utility.InodeCache
|
import Utility.InodeCache
|
||||||
import Utility.CopyFile
|
import Utility.CopyFile
|
||||||
|
import Annex.Perms
|
||||||
|
|
||||||
{- Uses git ls-files to find files that need to be committed, and stages
|
{- Uses git ls-files to find files that need to be committed, and stages
|
||||||
- them into the index. Returns True if some changes were staged. -}
|
- them into the index. Returns True if some changes were staged. -}
|
||||||
|
@ -187,6 +188,7 @@ toDirectGen k f = do
|
||||||
[] -> ifM (liftIO $ doesFileExist loc)
|
[] -> ifM (liftIO $ doesFileExist loc)
|
||||||
( return $ Just $ do
|
( return $ Just $ do
|
||||||
{- Move content from annex to direct file. -}
|
{- Move content from annex to direct file. -}
|
||||||
|
thawContentDir loc
|
||||||
updateInodeCache k loc
|
updateInodeCache k loc
|
||||||
thawContent loc
|
thawContent loc
|
||||||
replaceFile f $ liftIO . moveFile loc
|
replaceFile f $ liftIO . moveFile loc
|
||||||
|
|
|
@ -18,6 +18,7 @@ import Annex.Direct
|
||||||
import Annex.Content
|
import Annex.Content
|
||||||
import Annex.CatFile
|
import Annex.CatFile
|
||||||
import Annex.Version
|
import Annex.Version
|
||||||
|
import Annex.Perms
|
||||||
import Init
|
import Init
|
||||||
|
|
||||||
def :: [Command]
|
def :: [Command]
|
||||||
|
@ -80,6 +81,7 @@ perform = do
|
||||||
|
|
||||||
fromdirect f k = do
|
fromdirect f k = do
|
||||||
showStart "indirect" f
|
showStart "indirect" f
|
||||||
|
thawContentDir =<< calcRepo (gitAnnexLocation k)
|
||||||
cleandirect k -- clean before content directory gets frozen
|
cleandirect k -- clean before content directory gets frozen
|
||||||
whenM (liftIO $ not . isSymbolicLink <$> getSymbolicLinkStatus f) $ do
|
whenM (liftIO $ not . isSymbolicLink <$> getSymbolicLinkStatus f) $ do
|
||||||
moveAnnex k f
|
moveAnnex k f
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue