summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-03-28 16:19:20 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-03-28 16:19:20 -0400
commit0956f0dd15f3114d7227787578499210f0c17db8 (patch)
tree6ba30e31f661a79e36ebabe6710ef5bccd120abb
parentcf99575d74d2a68004efa152ea9e7ac1c2866935 (diff)
fsck: Ensure that files and directories in .git/annex/objects have proper permissions.
-rw-r--r--Command/Fsck.hs11
-rw-r--r--debian/changelog7
-rw-r--r--doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn2
3 files changed, 19 insertions, 1 deletions
diff --git a/Command/Fsck.hs b/Command/Fsck.hs
index 216c87493..bedb9fb99 100644
--- a/Command/Fsck.hs
+++ b/Command/Fsck.hs
@@ -7,6 +7,7 @@
module Command.Fsck where
+import Control.Monad (when)
import Control.Monad.State (liftIO)
import Command
@@ -18,6 +19,7 @@ import Messages
import Utility
import Content
import LocationLog
+import Locations
command :: [Command]
command = [repoCommand "fsck" (paramOptional $ paramRepeating paramPath) seek
@@ -47,9 +49,16 @@ perform key file backend numcopies = do
in this repository only. -}
verifyLocationLog :: Key -> FilePath -> Annex Bool
verifyLocationLog key file = do
+ g <- Annex.gitRepo
present <- inAnnex key
- g <- Annex.gitRepo
+ -- Since we're checking that a key's file is present, throw
+ -- in a permission fixup here too.
+ when present $ liftIO $ do
+ let f = gitAnnexLocation g key
+ preventWrite f
+ preventWrite (parentDir f)
+
u <- getUUID g
uuids <- liftIO $ keyLocations g key
diff --git a/debian/changelog b/debian/changelog
index 7251ab665..1b0916553 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+git-annex (0.20110329) UNRELEASED; urgency=low
+
+ * fsck: Ensure that files and directories in .git/annex/objects
+ have proper permissions.
+
+ -- Joey Hess <joeyh@debian.org> Mon, 28 Mar 2011 16:17:59 -0400
+
git-annex (0.20110328) experimental; urgency=low
* annex.diskreserve can be given in arbitrary units (ie "0.5 gigabytes")
diff --git a/doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn b/doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn
index ec8b6d233..c649ff9f7 100644
--- a/doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn
+++ b/doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn
@@ -4,3 +4,5 @@ The fsck command should check that they are still correct.
The fix command should fix them.
PS: Thanks for this nice tool!
+
+> Good idea, [[done]] (actually, fsck just fixes them too)! --[[Joey]]