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:
parent
38c458b407
commit
ac6b492711
3 changed files with 28 additions and 2 deletions
|
@ -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
3
debian/changelog
vendored
|
@ -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
|
||||
|
||||
|
|
|
@ -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]]
|
||||
|
|
Loading…
Add table
Reference in a new issue