summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-09-03 13:35:49 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-09-03 13:35:49 -0400
commit066cca60fdc2b90436a3356f19664d059da8580e (patch)
tree8e9b81e2cbebb14e44c37490dd8ac06d1abb9b25
parent5204ee7342bb0e5bc70d4a51bbc486f4e5e49a12 (diff)
Honor core.sharedrepository when receiving and adding files in direct mode.
-rw-r--r--Annex/Content.hs13
-rw-r--r--debian/changelog2
-rw-r--r--doc/bugs/400_mode_leakage.mdwn8
3 files changed, 23 insertions, 0 deletions
diff --git a/Annex/Content.hs b/Annex/Content.hs
index 01ad6f96f..25ee4c7db 100644
--- a/Annex/Content.hs
+++ b/Annex/Content.hs
@@ -279,6 +279,7 @@ moveAnnex key src = withObjectLoc key storeobject storedirect
then do
updateInodeCache key src
replaceFile f $ liftIO . moveFile src
+ chmodContent f
forM_ fs $
addContentWhenNotPresent key f
else ifM (goodContent key f)
@@ -500,6 +501,18 @@ freezeContent file = unlessM crippledFileSystem $
removeModes writeModes .
addModes [ownerReadMode]
+{- Adjusts read mode of annexed file per core.sharedRepository setting. -}
+chmodContent :: FilePath -> Annex ()
+chmodContent file = unlessM crippledFileSystem $
+ liftIO . go =<< fromRepo getSharedRepository
+ where
+ go GroupShared = modifyFileMode file $
+ addModes [ownerReadMode, groupReadMode]
+ go AllShared = modifyFileMode file $
+ addModes readModes
+ go _ = modifyFileMode file $
+ addModes [ownerReadMode]
+
{- Allows writing to an annexed file that freezeContent was called on
- before. -}
thawContent :: FilePath -> Annex ()
diff --git a/debian/changelog b/debian/changelog
index 68ba98b8b..98bfd9445 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -25,6 +25,8 @@ git-annex (4.20130827) unstable; urgency=low
* Debian: Run the builtin test suite as an autopkgtest.
* Debian: Recommend ssh-askpass, which ssh will use when the assistant
is run w/o a tty. Closes: #719832
+ * Honor core.sharedrepository when receiving and adding files in direct
+ mode.
-- Joey Hess <joeyh@debian.org> Tue, 27 Aug 2013 11:03:00 -0400
diff --git a/doc/bugs/400_mode_leakage.mdwn b/doc/bugs/400_mode_leakage.mdwn
index e0228a18a..63f0fb11d 100644
--- a/doc/bugs/400_mode_leakage.mdwn
+++ b/doc/bugs/400_mode_leakage.mdwn
@@ -15,3 +15,11 @@ files transit through a special remote, using modes to limit access to
individual files is not wise.)
--[[Joey]]
+
+> Revisiting this, git-annex already honors core.sharedrepository settings,
+> so I just needed to set it to `world` to allow everyone to read.
+>
+> There was a code path in direct mode where that didn't work; fixed that.
+>
+> [[done]]
+> --[[Joey]]