fsck: Don't claim to fix direct mode when run on a symlink whose content is not present.
This commit is contained in:
parent
6999815d91
commit
c1307b1388
2 changed files with 12 additions and 11 deletions
|
@ -189,9 +189,12 @@ toDirectGen k f = do
|
|||
, do
|
||||
{- Copy content from another direct file. -}
|
||||
absf <- liftIO $ absPath f
|
||||
locs <- filterM (\l -> isNothing <$> getAnnexLinkTarget l) =<<
|
||||
(filter (/= absf) <$> addAssociatedFile k f)
|
||||
return $ Just $ fromdirect locs
|
||||
dlocs <- filterM (goodContent k) =<<
|
||||
filterM (\l -> isNothing <$> getAnnexLinkTarget l) =<<
|
||||
(filter (/= absf) <$> addAssociatedFile k f)
|
||||
case dlocs of
|
||||
[] -> return Nothing
|
||||
(dloc:_) -> return $ Just $ fromdirect dloc
|
||||
)
|
||||
where
|
||||
fromindirect loc = do
|
||||
|
@ -201,14 +204,10 @@ toDirectGen k f = do
|
|||
void $ addAssociatedFile k f
|
||||
thawContent loc
|
||||
replaceFile f $ liftIO . moveFile loc
|
||||
fromdirect (loc:locs) = ifM (goodContent k loc)
|
||||
( do
|
||||
replaceFile f $
|
||||
liftIO . void . copyFileExternal loc
|
||||
updateInodeCache k f
|
||||
, fromdirect locs
|
||||
)
|
||||
fromdirect [] = noop
|
||||
fromdirect loc = do
|
||||
replaceFile f $
|
||||
liftIO . void . copyFileExternal loc
|
||||
updateInodeCache k f
|
||||
|
||||
{- Removes a direct mode file, while retaining its content in the annex
|
||||
- (unless its content has already been changed). -}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue