This patch allows hooks to be run in WSL1 for a repo created on an NTFS volume but I think it also applies in general.
From d4587806d8fd1ea767a8effc06edc1a4e10f5bca Mon Sep 17 00:00:00 2001
From: Reiko Asakura <asakurareiko@protonmail.ch>
Date: Sun, 25 Sep 2022 15:21:24 -0400
Subject: [PATCH] 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.
---
Annex/Perms.hs | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/Annex/Perms.hs b/Annex/Perms.hs
index 6681da7e0..69e344452 100644
--- a/Annex/Perms.hs
+++ b/Annex/Perms.hs
@@ -154,7 +154,7 @@ createWorkTreeDirectory dir = do
- that happens with write permissions.
-}
freezeContent :: RawFilePath -> Annex ()
-freezeContent file = unlessM crippledFileSystem $
+freezeContent file =
withShared $ \sr -> freezeContent' sr file
freezeContent' :: SharedRepository -> RawFilePath -> Annex ()
@@ -163,7 +163,7 @@ freezeContent' sr file = freezeContent'' sr file =<< getVersion
freezeContent'' :: SharedRepository -> RawFilePath -> Maybe RepoVersion -> Annex ()
freezeContent'' sr file rv = do
fastDebug "Annex.Perms" ("freezing content " ++ fromRawFilePath file)
- go sr
+ unlessM crippledFileSystem $ go sr
freezeHook file
where
go GroupShared = if versionNeedsWritableContentFiles rv
@@ -253,7 +253,7 @@ thawContent' sr file = do
- permissions. -}
thawPerms :: Annex () -> Annex () -> Annex ()
thawPerms a hook = ifM crippledFileSystem
- ( void (tryNonAsync a)
+ ( hook >> void (tryNonAsync a)
, hook >> a
)
@@ -263,9 +263,9 @@ thawPerms a hook = ifM crippledFileSystem
- file.
-}
freezeContentDir :: RawFilePath -> Annex ()
-freezeContentDir file = unlessM crippledFileSystem $ do
+freezeContentDir file = do
fastDebug "Annex.Perms" ("freezing content directory " ++ fromRawFilePath dir)
- withShared go
+ unlessM crippledFileSystem $ withShared go
freezeHook dir
where
dir = parentDir file
@@ -287,9 +287,9 @@ createContentDir dest = do
unlessM (liftIO $ R.doesPathExist dir) $
createAnnexDirectory dir
-- might have already existed with restricted perms
- unlessM crippledFileSystem $ do
+ do
thawHook dir
- liftIO $ allowWrite dir
+ unlessM crippledFileSystem $ liftIO $ allowWrite dir
where
dir = parentDir dest
--
2.30.2