import --reinject-duplicates

This is the same as running git annex reinject --known, followed by
git-annex import. The advantage to having it in one command is that it
only has to hash each file once; the two commands have to
hash the imported files a second time.

This commit was sponsored by Shane-o on Patreon.
This commit is contained in:
Joey Hess 2017-02-09 15:40:44 -04:00
parent eae186e4b9
commit c1ece47ea0
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
5 changed files with 50 additions and 19 deletions

View file

@ -43,9 +43,12 @@ startSrcDest (src:dest:[])
| src == dest = stop
| otherwise = notAnnexed src $ do
showStart "reinject" dest
next $ ifAnnexed dest
(\key -> perform src key (verifyKeyContent DefaultVerify UnVerified key src))
stop
next $ ifAnnexed dest go stop
where
go key = ifM (verifyKeyContent DefaultVerify UnVerified key src)
( perform src key
, error "failed"
)
startSrcDest _ = giveup "specify a src file and a dest file"
startKnown :: FilePath -> CommandStart
@ -55,7 +58,7 @@ startKnown src = notAnnexed src $ do
case mkb of
Nothing -> error "Failed to generate key"
Just (key, _) -> ifM (isKnownKey key)
( next $ perform src key (return True)
( next $ perform src key
, do
warning "Not known content; skipping"
next $ next $ return True
@ -65,19 +68,15 @@ notAnnexed :: FilePath -> CommandStart -> CommandStart
notAnnexed src = ifAnnexed src $
giveup $ "cannot used annexed file as src: " ++ src
perform :: FilePath -> Key -> Annex Bool -> CommandPerform
perform src key verify = ifM move
perform :: FilePath -> Key -> CommandPerform
perform src key = ifM move
( next $ cleanup key
, error "failed"
)
where
move = checkDiskSpaceToGet key False $
ifM verify
( do
moveAnnex key src
return True
, return False
)
move = checkDiskSpaceToGet key False $ do
moveAnnex key src
return True
cleanup :: Key -> CommandCleanup
cleanup key = do