completed the createDirectoryIfMissing conversion

Remaining calls in the assistant and Annex.Ssh have been audited and are ok.
This commit is contained in:
Joey Hess 2020-03-06 12:52:20 -04:00
parent 7f992ef59c
commit 093fde5abd
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
6 changed files with 23 additions and 10 deletions

View file

@ -154,8 +154,11 @@ sshConnectionCachingParams socketfile =
sshSocketDirEnv :: String sshSocketDirEnv :: String
sshSocketDirEnv = "GIT_ANNEX_SSH_SOCKET_DIR" sshSocketDirEnv = "GIT_ANNEX_SSH_SOCKET_DIR"
{- ssh connection caching creates sockets, so will not work on a {- Returns the directory where ssh connection caching sockets can be
- crippled filesystem. -} - stored.
-
- The directory will be created if it does not exist.
-}
sshCacheDir :: Annex (Maybe FilePath) sshCacheDir :: Annex (Maybe FilePath)
sshCacheDir = eitherToMaybe <$> sshCacheDir' sshCacheDir = eitherToMaybe <$> sshCacheDir'
@ -169,7 +172,10 @@ sshCacheDir' =
Just tmpdir -> Just tmpdir ->
liftIO $ catchMsgIO $ liftIO $ catchMsgIO $
usetmpdir tmpdir usetmpdir tmpdir
, Right <$> fromRepo gitAnnexSshDir , do
d <- fromRepo gitAnnexSshDir
createAnnexDirectory d
return (Right d)
) )
, return (Left "annex.sshcaching is not set to true") , return (Left "annex.sshcaching is not set to true")
) )
@ -221,7 +227,6 @@ prepSocket socketfile sshhost sshparams = do
-- Cleanup at shutdown. -- Cleanup at shutdown.
Annex.addCleanup SshCachingCleanup sshCleanup Annex.addCleanup SshCachingCleanup sshCleanup
liftIO $ createDirectoryIfMissing True $ parentDir socketfile
let socketlock = socket2lock socketfile let socketlock = socket2lock socketfile
Annex.getState Annex.concurrency >>= \case Annex.getState Annex.concurrency >>= \case

View file

@ -26,8 +26,9 @@ import qualified Command.Sync
mergeThread :: NamedThread mergeThread :: NamedThread
mergeThread = namedThread "Merger" $ do mergeThread = namedThread "Merger" $ do
g <- liftAnnex gitRepo g <- liftAnnex gitRepo
let dir = fromRawFilePath (Git.localGitDir g) </> "refs" let gitd = fromRawFilePath (Git.localGitDir g)
liftIO $ createDirectoryIfMissing True dir let dir = gitd </> "refs"
liftIO $ createDirectoryUnder gitd dir
let hook a = Just <$> asIO2 (runHandler a) let hook a = Just <$> asIO2 (runHandler a)
changehook <- hook onChange changehook <- hook onChange
errhook <- hook onErr errhook <- hook onErr

View file

@ -15,6 +15,7 @@ import Logs.Transfer
import Utility.DirWatcher import Utility.DirWatcher
import Utility.DirWatcher.Types import Utility.DirWatcher.Types
import qualified Remote import qualified Remote
import Annex.Perms
import Control.Concurrent import Control.Concurrent
import qualified Data.Map as M import qualified Data.Map as M
@ -24,7 +25,7 @@ import qualified Data.Map as M
transferWatcherThread :: NamedThread transferWatcherThread :: NamedThread
transferWatcherThread = namedThread "TransferWatcher" $ do transferWatcherThread = namedThread "TransferWatcher" $ do
dir <- liftAnnex $ gitAnnexTransferDir <$> gitRepo dir <- liftAnnex $ gitAnnexTransferDir <$> gitRepo
liftIO $ createDirectoryIfMissing True dir liftAnnex $ createAnnexDirectory dir
let hook a = Just <$> asIO2 (runHandler a) let hook a = Just <$> asIO2 (runHandler a)
addhook <- hook onAdd addhook <- hook onAdd
delhook <- hook onDel delhook <- hook onDel

View file

@ -41,6 +41,7 @@ import Remote.Helper.Encryptable (extractCipher, parseEncryptionConfig)
import Types.Crypto import Types.Crypto
import Utility.Gpg import Utility.Gpg
import Annex.UUID import Annex.UUID
import Annex.Perms
import Assistant.Ssh import Assistant.Ssh
import Config import Config
import Config.GitConfig import Config.GitConfig
@ -246,9 +247,9 @@ checkAssociatedDirectory cfg (Just r) = do
repoconfig <- M.lookup (Remote.uuid r) <$> readRemoteLog repoconfig <- M.lookup (Remote.uuid r) <$> readRemoteLog
case repoGroup cfg of case repoGroup cfg of
RepoGroupStandard gr -> case associatedDirectory repoconfig gr of RepoGroupStandard gr -> case associatedDirectory repoconfig gr of
Just d -> inRepo $ \g -> Just d -> do
createDirectoryIfMissing True $ top <- fromRawFilePath <$> fromRepo Git.repoPath
fromRawFilePath (Git.repoPath g) </> d createWorkTreeDirectory (top </> d)
Nothing -> noop Nothing -> noop
_ -> noop _ -> noop

View file

@ -1,5 +1,8 @@
git-annex (8.20200227) UNRELEASED; urgency=medium git-annex (8.20200227) UNRELEASED; urgency=medium
* Improve behavior when a directory git-annex is writing to gets
unmounted. Previously it could in some cases re-create the mount point
and directory tree, and even write object contents to the wrong disk.
* Bugfix: Don't ignore --debug when it is followed by -c. * Bugfix: Don't ignore --debug when it is followed by -c.
* whereis: If a remote fails to report on urls where a key * whereis: If a remote fails to report on urls where a key
is located, display a warning, rather than giving up and not displaying is located, display a warning, rather than giving up and not displaying

View file

@ -28,3 +28,5 @@ point, which can be either .git/annex or the top of the worktree depending
on what's being done. --[[Joey]] on what's being done. --[[Joey]]
[[!tag confirmed]] [[!tag confirmed]]
> [[fixed|done]], all relevant calls have been converted. --[[Joey]]