fix add of file that was locked but has been replaced by a new, unlocked file (v6)
This commit is contained in:
parent
35f6a78b66
commit
2d343224dc
1 changed files with 13 additions and 3 deletions
|
@ -34,6 +34,7 @@ import Utility.Tmp
|
|||
import Utility.CopyFile
|
||||
import Annex.InodeSentinal
|
||||
import Annex.Version
|
||||
import qualified Database.Keys
|
||||
|
||||
import Control.Exception (IOException)
|
||||
|
||||
|
@ -105,13 +106,22 @@ start file = ifAnnexed file addpresent add
|
|||
next $ if isSymbolicLink s
|
||||
then next $ addFile file
|
||||
else perform file
|
||||
addpresent key = ifM isDirect
|
||||
addpresent key = ifM versionSupportsUnlockedPointers
|
||||
( do
|
||||
ms <- liftIO $ catchMaybeIO $ getSymbolicLinkStatus file
|
||||
case ms of
|
||||
Just s | isSymbolicLink s -> fixup key
|
||||
_ -> ifM (goodContent key file) ( stop , add )
|
||||
, fixup key
|
||||
_ -> ifM (sameInodeCache file =<< Database.Keys.getInodeCaches key)
|
||||
( stop, add )
|
||||
, ifM isDirect
|
||||
( do
|
||||
ms <- liftIO $ catchMaybeIO $ getSymbolicLinkStatus file
|
||||
case ms of
|
||||
Just s | isSymbolicLink s -> fixup key
|
||||
_ -> ifM (goodContent key file)
|
||||
( stop , add )
|
||||
, fixup key
|
||||
)
|
||||
)
|
||||
fixup key = do
|
||||
-- the annexed symlink is present but not yet added to git
|
||||
|
|
Loading…
Add table
Reference in a new issue