init: Probe whether the filesystem supports fifos, and if not, disable ssh connection caching.

This commit is contained in:
Joey Hess 2013-04-04 13:14:55 -04:00
parent 0a74f4931a
commit bd5d664a0c
3 changed files with 25 additions and 0 deletions

20
Init.hs
View file

@ -18,6 +18,7 @@ import Utility.TempFile
import Utility.Network
import qualified Git
import qualified Git.LsFiles
import qualified Git.Config
import qualified Annex.Branch
import Logs.UUID
import Annex.Version
@ -44,6 +45,7 @@ initialize mdescription = do
prepUUID
setVersion defaultVersion
checkCrippledFileSystem
checkFifoSupport
Annex.Branch.create
gitPreCommitHookWrite
createInodeSentinalFile
@ -144,3 +146,21 @@ checkCrippledFileSystem = whenM probeCrippledFileSystem $ do
void $ liftIO clean
setDirect True
setVersion directModeVersion
probeFifoSupport :: Annex Bool
probeFifoSupport = do
tmp <- fromRepo gitAnnexTmpDir
let f = tmp </> "gaprobe"
liftIO $ do
createDirectoryIfMissing True tmp
nukeFile f
createNamedPipe f ownerReadMode
ms <- tryIO $ getFileStatus f
nukeFile f
return $ either (const False) isNamedPipe ms
checkFifoSupport :: Annex ()
checkFifoSupport = unlessM probeFifoSupport $ do
warning "Detected a filesystem without fifo support."
warning "Disabling ssh connection caching."
setConfig (annexConfig "sshcaching") (Git.Config.boolConfig False)

2
debian/changelog vendored
View file

@ -28,6 +28,8 @@ git-annex (4.20130324) UNRELEASED; urgency=low
from git.
* Update working tree files fully atomically.
* webapp: Improved transfer queue management.
* init: Probe whether the filesystem supports fifos, and if not,
disable ssh connection caching.
-- Joey Hess <joeyh@debian.org> Mon, 25 Mar 2013 10:21:46 -0400

View file

@ -61,3 +61,6 @@ However ssh connection caching breaks things on NTFS volumes. If I turn off con
but it would be nifty if git-annex could detect the filesystem type and do The Right Thing.
Thanks for all the work on git-annex -- it's an awesome project!
> [[done]], `git annex init` now probes for fifo support and disables ssh
> connection caching if it cannot make one. --[[Joey]]