diff options
author | Joey Hess <id@joeyh.name> | 2013-05-12 17:18:48 -0500 |
---|---|---|
committer | Joey Hess <id@joeyh.name> | 2013-05-12 17:29:49 -0500 |
commit | b02c68304aa5051086e29a0cb6547fdf856aa93d (patch) | |
tree | 104139431d5e4df6258a7b7f000ecd605a3bf096 /Git/FilePath.hs | |
parent | ac86f7dbae96c5b813147bf8de5fe40df002671e (diff) |
deal with git using / internally, even on DOS
Diffstat (limited to 'Git/FilePath.hs')
-rwxr-xr-x[-rw-r--r--] | Git/FilePath.hs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/Git/FilePath.hs b/Git/FilePath.hs index 6344353d6..c3813fe9e 100644..100755 --- a/Git/FilePath.hs +++ b/Git/FilePath.hs @@ -5,16 +5,21 @@ - top of the repository even when run in a subdirectory. Adding some - types helps keep that straight. - - - Copyright 2012 Joey Hess <joey@kitenet.net> + - Copyright 2012-2013 Joey Hess <joey@kitenet.net> - - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Git.FilePath ( TopFilePath, getTopFilePath, toTopFilePath, asTopFilePath, + InternalGitPath, + toInternalGitPath, + fromInternalGitPath ) where import Common @@ -32,3 +37,22 @@ toTopFilePath file repo = TopFilePath <$> - repository -} asTopFilePath :: FilePath -> TopFilePath asTopFilePath file = TopFilePath file + +{- Git may use a different representation of a path when storing + - it internally. For example, on Windows, git uses '/' to separate paths + - stored in the repository, despite Windows using '\' -} +type InternalGitPath = String + +toInternalGitPath :: FilePath -> InternalGitPath +#ifndef __WINDOWS__ +toInternalGitPath = id +#else +toInternalGitPath = replace "\\" "/" +#endif + +fromInternalGitPath :: InternalGitPath -> FilePath +#ifndef __WINDOWS__ +fromInternalGitPath = id +#else +fromInternalGitPath = replace "/" "\\" +#endif |