import: Before removing a duplicate file in --deduplicate or --clean-duplicates mode, verify that enough copies of its content still exist.

This commit is contained in:
Joey Hess 2015-04-30 14:03:24 -04:00
parent 38c458b407
commit ac6b492711
3 changed files with 28 additions and 2 deletions

View file

@ -17,6 +17,9 @@ import Remote
import Types.KeySource
import Types.Key
import Annex.CheckIgnore
import Annex.NumCopies
import Types.TrustLevel
import Logs.Trust
cmd :: [Command]
cmd = [withOptions opts $ notBareRepo $ command "import" paramPaths seek
@ -76,8 +79,14 @@ start mode (srcfile, destfile) =
where
deletedup k = do
showNote $ "duplicate of " ++ key2file k
liftIO $ removeFile srcfile
next $ return True
ifM (verifiedExisting k destfile)
( do
liftIO $ removeFile srcfile
next $ return True
, do
warning "could not verify that the content is still present in the annex; not removing from the import location"
stop
)
importfile = do
ignored <- not <$> Annex.getState Annex.force <&&> checkIgnored destfile
if ignored
@ -120,3 +129,14 @@ start mode (srcfile, destfile) =
CleanDuplicates -> checkdup (Just deletedup) Nothing
SkipDuplicates -> checkdup Nothing (Just importfile)
_ -> return (Just importfile)
verifiedExisting :: Key -> FilePath -> Annex Bool
verifiedExisting key destfile = do
-- Look up the numcopies setting for the file that it would be
-- imported to, if it were imported.
need <- getFileNumCopies destfile
(remotes, trusteduuids) <- knownCopies key
untrusteduuids <- trustGet UnTrusted
let tocheck = Remote.remotesWithoutUUID remotes (trusteduuids++untrusteduuids)
verifyEnoughCopies [] key need trusteduuids [] tocheck

3
debian/changelog vendored
View file

@ -18,6 +18,9 @@ git-annex (5.20150421) UNRELEASED; urgency=medium
* Improve integration with KDE's file manager to work with dolphin
version 14.12.3 while still being compatable with 4.14.2.
Thanks, silvio.
* import: Before removing a duplicate file in --deduplicate or
--clean-duplicates mode, verify that enough copies of its content still
exist.
-- Joey Hess <id@joeyh.name> Tue, 21 Apr 2015 15:54:10 -0400

View file

@ -25,3 +25,6 @@ g-a import --clean-duplicates ~/tmp/importme (containing a, b and c) into 'impor
### Please provide any additional information below.
I can provide the script if it is wanted (coded in Perl, couple of non-core dependencies).
> Decided to go ahead and make it check remotes like drop does, so [[done]]
> --[[Joey]]