hard links on windows
* annex.thin and annex.hardlink are now supported on Windows. * unannex --fast now makes hard links on Windows.
This commit is contained in:
parent
251405eca2
commit
cf06dac2b8
8 changed files with 29 additions and 26 deletions
|
@ -49,13 +49,9 @@ copyFileExternal meta src dest = do
|
|||
{- Create a hard link if the filesystem allows it, and fall back to copying
|
||||
- the file. -}
|
||||
createLinkOrCopy :: FilePath -> FilePath -> IO Bool
|
||||
#ifndef mingw32_HOST_OS
|
||||
createLinkOrCopy src dest = go `catchIO` const fallback
|
||||
where
|
||||
go = do
|
||||
createLink src dest
|
||||
return True
|
||||
fallback = copyFileExternal CopyAllMetaData src dest
|
||||
#else
|
||||
createLinkOrCopy = copyFileExternal CopyAllMetaData
|
||||
#endif
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{- POSIX files (and compatablity wrappers).
|
||||
-
|
||||
- This is like System.PosixCompat.Files, except with a fixed rename.
|
||||
- This is like System.PosixCompat.Files, but with a few fixes.
|
||||
-
|
||||
- Copyright 2014 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
|
@ -21,6 +21,7 @@ import System.PosixCompat.Files as X hiding (rename)
|
|||
import System.Posix.Files (rename)
|
||||
#else
|
||||
import qualified System.Win32.File as Win32
|
||||
import qualified System.Win32.HardLink as Win32
|
||||
#endif
|
||||
|
||||
{- System.PosixCompat.Files.rename on Windows calls renameFile,
|
||||
|
@ -32,3 +33,10 @@ import qualified System.Win32.File as Win32
|
|||
rename :: FilePath -> FilePath -> IO ()
|
||||
rename src dest = Win32.moveFileEx src dest Win32.mOVEFILE_REPLACE_EXISTING
|
||||
#endif
|
||||
|
||||
{- System.PosixCompat.Files.createLink throws an error, but windows
|
||||
- does support hard links. -}
|
||||
#ifdef mingw32_HOST_OS
|
||||
createLink :: FilePath -> FilePath -> IO ()
|
||||
createLink = Win32.createHardLink
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue