fix removal from local gcrypt repo that had files stored using rsync

When files are stored using rsync, they have their write bit removed;
so does the directory they're put in. The local repo code did not turn
these bits back on, so failed to remove.
This commit is contained in:
Joey Hess 2014-08-03 20:21:46 -04:00
parent 8601f8f571
commit d12becfdde
2 changed files with 7 additions and 2 deletions

View file

@ -45,6 +45,7 @@ import Utility.Tmp
import Logs.Remote import Logs.Remote
import Logs.Transfer import Logs.Transfer
import Utility.Gpg import Utility.Gpg
import Utility.FileMode
remote :: RemoteType remote :: RemoteType
remote = RemoteType { remote = RemoteType {
@ -325,7 +326,12 @@ retrieve r rsyncopts
remove :: Remote -> Remote.Rsync.RsyncOpts -> Key -> Annex Bool remove :: Remote -> Remote.Rsync.RsyncOpts -> Key -> Annex Bool
remove r rsyncopts k remove r rsyncopts k
| not $ Git.repoIsUrl (repo r) = guardUsable (repo r) False $ do | not $ Git.repoIsUrl (repo r) = guardUsable (repo r) False $ do
liftIO $ removeDirectoryRecursive $ parentDir $ gCryptLocation r k let f = gCryptLocation r k
let d = parentDir f
liftIO $ do
allowWrite d
allowWrite f
removeDirectoryRecursive d
return True return True
| Git.repoIsSsh (repo r) = shellOrRsync r removeshell removersync | Git.repoIsSsh (repo r) = shellOrRsync r removeshell removersync
| otherwise = unsupportedUrl | otherwise = unsupportedUrl

1
debian/changelog vendored
View file

@ -21,7 +21,6 @@ git-annex (5.20140718) UNRELEASED; urgency=medium
* Dropping an object from a bup special remote now deletes the git branch * Dropping an object from a bup special remote now deletes the git branch
for the object, although of course the object's content cannot be deleted for the object, although of course the object's content cannot be deleted
due to the nature of bup. due to the nature of bup.
*
-- Joey Hess <joeyh@debian.org> Mon, 21 Jul 2014 14:41:26 -0400 -- Joey Hess <joeyh@debian.org> Mon, 21 Jul 2014 14:41:26 -0400