detect local urls on DOS

This commit is contained in:
Joey Hess 2013-05-14 15:27:39 -04:00
parent 49e9296d5f
commit 81cded2b9d
2 changed files with 10 additions and 5 deletions

View file

@ -21,6 +21,8 @@ module Git.Construct (
checkForRepo,
) where
{-# LANGUAGE CPP #-}
import System.Posix.User
import qualified Data.Map as M hiding (map, split)
import Network.URI
@ -139,6 +141,9 @@ fromRemoteLocation :: String -> Repo -> IO Repo
fromRemoteLocation s repo = gen $ calcloc s
where
gen v
#ifdef __WINDOWS__
| dosstyle v = fromRemotePath v repo
#endif
| scpstyle v = fromUrl $ scptourl v
| urlstyle v = fromUrl v
| otherwise = fromRemotePath v repo
@ -172,6 +177,11 @@ fromRemoteLocation s repo = gen $ calcloc s
| "/" `isPrefixOf` d = d
| "~" `isPrefixOf` d = '/':d
| otherwise = "/~/" ++ d
#ifdef __WINDOWS__
-- git on Windows will write a path to .git/config with "drive:",
-- which is not to be confused with a "host:"
dosstyle = hasDrive
#endif
{- Constructs a Repo from the path specified in the git remotes of
- another Repo. -}

View file

@ -3,11 +3,6 @@ now! --[[Joey]]
## status
* git-annex fails to access a clone located on the local machine
(including other drives). It thinks that `c:\clone` is a ssh remote.
(When Cygwin's build of git is used to make the clone, it puts the
slashes the other way around in .git/config, which also doesn't work
for git-annex.)
* Does not work with Cygwin's build of git (that git does not consistently
support use of DOS style paths, which git-annex uses on Windows).
Must use the upstream build of git for Windows.