Run freeze and thaw hooks on crippled filesystems

The user sets these hooks deliberately so they should always be run. For
example this allows hooks to be used to manage file permissions on NTFS
volumes in WSL1.
This commit is contained in:
Reiko Asakura 2022-09-25 15:21:24 -04:00 committed by Joey Hess
parent e05dd70544
commit 1d48153bb8
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38

View file

@ -154,7 +154,7 @@ createWorkTreeDirectory dir = do
- that happens with write permissions. - that happens with write permissions.
-} -}
freezeContent :: RawFilePath -> Annex () freezeContent :: RawFilePath -> Annex ()
freezeContent file = unlessM crippledFileSystem $ freezeContent file =
withShared $ \sr -> freezeContent' sr file withShared $ \sr -> freezeContent' sr file
freezeContent' :: SharedRepository -> RawFilePath -> Annex () freezeContent' :: SharedRepository -> RawFilePath -> Annex ()
@ -163,7 +163,7 @@ freezeContent' sr file = freezeContent'' sr file =<< getVersion
freezeContent'' :: SharedRepository -> RawFilePath -> Maybe RepoVersion -> Annex () freezeContent'' :: SharedRepository -> RawFilePath -> Maybe RepoVersion -> Annex ()
freezeContent'' sr file rv = do freezeContent'' sr file rv = do
fastDebug "Annex.Perms" ("freezing content " ++ fromRawFilePath file) fastDebug "Annex.Perms" ("freezing content " ++ fromRawFilePath file)
go sr unlessM crippledFileSystem $ go sr
freezeHook file freezeHook file
where where
go GroupShared = if versionNeedsWritableContentFiles rv go GroupShared = if versionNeedsWritableContentFiles rv
@ -253,7 +253,7 @@ thawContent' sr file = do
- permissions. -} - permissions. -}
thawPerms :: Annex () -> Annex () -> Annex () thawPerms :: Annex () -> Annex () -> Annex ()
thawPerms a hook = ifM crippledFileSystem thawPerms a hook = ifM crippledFileSystem
( void (tryNonAsync a) ( hook >> void (tryNonAsync a)
, hook >> a , hook >> a
) )
@ -263,9 +263,9 @@ thawPerms a hook = ifM crippledFileSystem
- file. - file.
-} -}
freezeContentDir :: RawFilePath -> Annex () freezeContentDir :: RawFilePath -> Annex ()
freezeContentDir file = unlessM crippledFileSystem $ do freezeContentDir file = do
fastDebug "Annex.Perms" ("freezing content directory " ++ fromRawFilePath dir) fastDebug "Annex.Perms" ("freezing content directory " ++ fromRawFilePath dir)
withShared go unlessM crippledFileSystem $ withShared go
freezeHook dir freezeHook dir
where where
dir = parentDir file dir = parentDir file
@ -287,9 +287,9 @@ createContentDir dest = do
unlessM (liftIO $ R.doesPathExist dir) $ unlessM (liftIO $ R.doesPathExist dir) $
createAnnexDirectory dir createAnnexDirectory dir
-- might have already existed with restricted perms -- might have already existed with restricted perms
unlessM crippledFileSystem $ do do
thawHook dir thawHook dir
liftIO $ allowWrite dir unlessM crippledFileSystem $ liftIO $ allowWrite dir
where where
dir = parentDir dest dir = parentDir dest