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.KeySource
|
||||||
import Types.Key
|
import Types.Key
|
||||||
import Annex.CheckIgnore
|
import Annex.CheckIgnore
|
||||||
|
import Annex.NumCopies
|
||||||
|
import Types.TrustLevel
|
||||||
|
import Logs.Trust
|
||||||
|
|
||||||
cmd :: [Command]
|
cmd :: [Command]
|
||||||
cmd = [withOptions opts $ notBareRepo $ command "import" paramPaths seek
|
cmd = [withOptions opts $ notBareRepo $ command "import" paramPaths seek
|
||||||
|
@ -76,8 +79,14 @@ start mode (srcfile, destfile) =
|
||||||
where
|
where
|
||||||
deletedup k = do
|
deletedup k = do
|
||||||
showNote $ "duplicate of " ++ key2file k
|
showNote $ "duplicate of " ++ key2file k
|
||||||
liftIO $ removeFile srcfile
|
ifM (verifiedExisting k destfile)
|
||||||
next $ return True
|
( 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
|
importfile = do
|
||||||
ignored <- not <$> Annex.getState Annex.force <&&> checkIgnored destfile
|
ignored <- not <$> Annex.getState Annex.force <&&> checkIgnored destfile
|
||||||
if ignored
|
if ignored
|
||||||
|
@ -120,3 +129,14 @@ start mode (srcfile, destfile) =
|
||||||
CleanDuplicates -> checkdup (Just deletedup) Nothing
|
CleanDuplicates -> checkdup (Just deletedup) Nothing
|
||||||
SkipDuplicates -> checkdup Nothing (Just importfile)
|
SkipDuplicates -> checkdup Nothing (Just importfile)
|
||||||
_ -> return (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
|
* Improve integration with KDE's file manager to work with dolphin
|
||||||
version 14.12.3 while still being compatable with 4.14.2.
|
version 14.12.3 while still being compatable with 4.14.2.
|
||||||
Thanks, silvio.
|
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
|
-- 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.
|
### Please provide any additional information below.
|
||||||
|
|
||||||
I can provide the script if it is wanted (coded in Perl, couple of non-core dependencies).
|
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