disable core.symlinks explicitly on crippled filesystem
Needed to make git annex drop work on cygwin, where git keeps it enabled. I think git can indeed make symlinks on Cygwin, due to being linked to the library. git-annex, however, cannot.
This commit is contained in:
parent
1093302eba
commit
9df0799df2
1 changed files with 12 additions and 0 deletions
12
Init.hs
Normal file → Executable file
12
Init.hs
Normal file → Executable file
|
@ -18,6 +18,7 @@ module Init (
|
||||||
import Common.Annex
|
import Common.Annex
|
||||||
import Utility.TempFile
|
import Utility.TempFile
|
||||||
import Utility.Network
|
import Utility.Network
|
||||||
|
import qualified Annex
|
||||||
import qualified Git
|
import qualified Git
|
||||||
import qualified Git.LsFiles
|
import qualified Git.LsFiles
|
||||||
import qualified Git.Config
|
import qualified Git.Config
|
||||||
|
@ -117,6 +118,8 @@ preCommitScript = unlines
|
||||||
, "git annex pre-commit ."
|
, "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 :: Annex Bool
|
||||||
probeCrippledFileSystem = do
|
probeCrippledFileSystem = do
|
||||||
#ifdef __WINDOWS__
|
#ifdef __WINDOWS__
|
||||||
|
@ -147,6 +150,7 @@ checkCrippledFileSystem :: Annex ()
|
||||||
checkCrippledFileSystem = whenM probeCrippledFileSystem $ do
|
checkCrippledFileSystem = whenM probeCrippledFileSystem $ do
|
||||||
warning "Detected a crippled filesystem."
|
warning "Detected a crippled filesystem."
|
||||||
setCrippledFileSystem True
|
setCrippledFileSystem True
|
||||||
|
|
||||||
unlessM isDirect $ do
|
unlessM isDirect $ do
|
||||||
warning "Enabling direct mode."
|
warning "Enabling direct mode."
|
||||||
top <- fromRepo Git.repoPath
|
top <- fromRepo Git.repoPath
|
||||||
|
@ -157,6 +161,14 @@ checkCrippledFileSystem = whenM probeCrippledFileSystem $ do
|
||||||
setDirect True
|
setDirect True
|
||||||
setVersion directModeVersion
|
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 :: Annex Bool
|
||||||
probeFifoSupport = do
|
probeFifoSupport = do
|
||||||
#ifdef __WINDOWS__
|
#ifdef __WINDOWS__
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue