summaryrefslogtreecommitdiff
path: root/Git/FilePath.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <id@joeyh.name>2013-05-12 17:18:48 -0500
committerGravatar Joey Hess <id@joeyh.name>2013-05-12 17:29:49 -0500
commitb02c68304aa5051086e29a0cb6547fdf856aa93d (patch)
tree104139431d5e4df6258a7b7f000ecd605a3bf096 /Git/FilePath.hs
parentac86f7dbae96c5b813147bf8de5fe40df002671e (diff)
deal with git using / internally, even on DOS
Diffstat (limited to 'Git/FilePath.hs')
-rwxr-xr-x[-rw-r--r--]Git/FilePath.hs26
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