diff options
-rw-r--r-- | Annex/Content.hs | 13 | ||||
-rw-r--r-- | debian/changelog | 2 | ||||
-rw-r--r-- | doc/bugs/400_mode_leakage.mdwn | 8 |
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]] |