summaryrefslogtreecommitdiff
path: root/Init.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Init.hs')
-rwxr-xr-x[-rw-r--r--]Init.hs12
1 files changed, 12 insertions, 0 deletions
diff --git a/Init.hs b/Init.hs
index c2ddf6905..17dd6cb8c 100644..100755
--- a/Init.hs
+++ b/Init.hs
@@ -18,6 +18,7 @@ module Init (
import Common.Annex
import Utility.TempFile
import Utility.Network
+import qualified Annex
import qualified Git
import qualified Git.LsFiles
import qualified Git.Config
@@ -117,6 +118,8 @@ preCommitScript = unlines
, "git annex pre-commit ."
]
+{- A crippled filesystem is one that does not allow making symlinks,
+ - or removing write access from files. -}
probeCrippledFileSystem :: Annex Bool
probeCrippledFileSystem = do
#ifdef __WINDOWS__
@@ -147,6 +150,7 @@ checkCrippledFileSystem :: Annex ()
checkCrippledFileSystem = whenM probeCrippledFileSystem $ do
warning "Detected a crippled filesystem."
setCrippledFileSystem True
+
unlessM isDirect $ do
warning "Enabling direct mode."
top <- fromRepo Git.repoPath
@@ -157,6 +161,14 @@ checkCrippledFileSystem = whenM probeCrippledFileSystem $ do
setDirect True
setVersion directModeVersion
+ {- Normally git disables core.symlinks itself when the filesystem does
+ - not support them, but in Cygwin, git does support symlinks, while
+ - git-annex, not linking with Cygwin, does not. -}
+ whenM (coreSymlinks <$> Annex.getGitConfig) $ do
+ warning "Disabling core.symlinks."
+ setConfig (ConfigKey "core.symlinks")
+ (Git.Config.boolConfig False)
+
probeFifoSupport :: Annex Bool
probeFifoSupport = do
#ifdef __WINDOWS__