init: Fix misbehavior when core.sharedRepository = group that caused it to
enter an adjusted branch. (Reversion in version 8.
20210630)
Commit
4b1b9d7a83f0da71665658e6234e699e182cbddc made init call
freezeContent in case there was a hook that could prevent writing in
situations where perms don't. But with the above git config, freezeContent
does not prevent write at all. So init needs to do what freezeContent does
with a non-shared git config.
Or init could check for that config, and skip the probing, since it
won't actually be preventing write to any files. But that would make init
too aware if details of Annex.Perms, and also would break if the git config
were changed after init.
Sponsored-by: Dartmouth College's Datalad project
import qualified Git.Config
import qualified Git.Objects
import Git.Types (fromConfigValue)
+import Git.ConfigTypes (SharedRepository(..))
import qualified Annex.Branch
import Logs.UUID
import Logs.Trust.Basic
probeCrippledFileSystem :: Annex Bool
probeCrippledFileSystem = withEventuallyCleanedOtherTmp $ \tmp -> do
(r, warnings) <- probeCrippledFileSystem' tmp
- (Just freezeContent)
- (Just thawContent)
+ (Just (freezeContent' UnShared))
+ (Just (thawContent' UnShared))
mapM_ warning warnings
return r
createWorkTreeDirectory,
noUmask,
freezeContent,
+ freezeContent',
isContentWritePermOk,
thawContent,
+ thawContent',
createContentDir,
freezeContentDir,
thawContentDir,
- owned by another user, so failure to set this mode is ignored.
-}
freezeContent :: RawFilePath -> Annex ()
-freezeContent file = unlessM crippledFileSystem $ do
- withShared go
+freezeContent file = unlessM crippledFileSystem $
+ withShared $ \sr -> freezeContent' sr file
+
+freezeContent' :: SharedRepository -> RawFilePath -> Annex ()
+freezeContent' sr file = do
+ go sr
freezeHook file
where
go GroupShared = liftIO $ void $ tryIO $ modifyFileMode file $
{- Allows writing to an annexed file that freezeContent was called on
- before. -}
thawContent :: RawFilePath -> Annex ()
-thawContent file = thawPerms (withShared go) (thawHook file)
+thawContent file = withShared $ \sr -> thawContent' sr file
+
+thawContent' :: SharedRepository -> RawFilePath -> Annex ()
+thawContent' sr file = thawPerms (go sr) (thawHook file)
where
go GroupShared = liftIO $ void $ tryIO $ groupWriteRead file
go AllShared = liftIO $ void $ tryIO $ groupWriteRead file
* addurl: Avoid crashing when used on beegfs.
* --debug output goes to stderr again, not stdout.
(Reversion in version 8.20210428)
+ * init: Fix misbehavior when core.sharedRepository = group that
+ caused it to enter an adjusted branch.
+ (Reversion in version 8.20210630)
-- Joey Hess <id@joeyh.name> Wed, 30 Jun 2021 17:55:10 -0400
--- /dev/null
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 3"""
+ date="2021-07-12T14:09:19Z"
+ content="""
+(Fixed the problem with git-annex init's probing.)
+"""]]