diff options
author | Joey Hess <joey@kitenet.net> | 2013-10-17 14:51:19 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-10-17 14:51:19 -0400 |
commit | 8b8506748c362241d39cbf4cf04714f8462489da (patch) | |
tree | f6eadd37acce7dff2304ad2288335df7ed8f77c9 /Git | |
parent | e1562f96d2193259e642d417a27bd8275fbc0144 (diff) |
use TopFilePath for DiffTree and LsTree
Diffstat (limited to 'Git')
-rw-r--r-- | Git/DiffTree.hs | 5 | ||||
-rw-r--r-- | Git/FilePath.hs | 6 | ||||
-rw-r--r-- | Git/LsTree.hs | 5 |
3 files changed, 12 insertions, 4 deletions
diff --git a/Git/DiffTree.hs b/Git/DiffTree.hs index 62330612c..e7787caee 100644 --- a/Git/DiffTree.hs +++ b/Git/DiffTree.hs @@ -20,6 +20,7 @@ import Common import Git import Git.Sha import Git.Command +import Git.FilePath import qualified Git.Filename import qualified Git.Ref @@ -29,7 +30,7 @@ data DiffTreeItem = DiffTreeItem , srcsha :: Sha -- nullSha if file was added , dstsha :: Sha -- nullSha if file was deleted , status :: String - , file :: FilePath + , file :: TopFilePath } deriving Show {- Diffs two tree Refs. -} @@ -86,7 +87,7 @@ parseDiffTree l = go l [] , srcsha = fromMaybe (error "bad srcsha") $ extractSha ssha , dstsha = fromMaybe (error "bad dstsha") $ extractSha dsha , status = s - , file = Git.Filename.decode f + , file = asTopFilePath $ Git.Filename.decode f } where readmode = fst . Prelude.head . readOct diff --git a/Git/FilePath.hs b/Git/FilePath.hs index 891f9991d..37d740f25 100644 --- a/Git/FilePath.hs +++ b/Git/FilePath.hs @@ -14,6 +14,7 @@ module Git.FilePath ( TopFilePath, + fromTopFilePath, getTopFilePath, toTopFilePath, asTopFilePath, @@ -27,6 +28,11 @@ import Git {- A FilePath, relative to the top of the git repository. -} newtype TopFilePath = TopFilePath { getTopFilePath :: FilePath } + deriving (Show) + +{- Returns an absolute FilePath. -} +fromTopFilePath :: TopFilePath -> Git.Repo -> FilePath +fromTopFilePath p repo = absPathFrom (repoPath repo) (getTopFilePath p) {- The input FilePath can be absolute, or relative to the CWD. -} toTopFilePath :: FilePath -> Git.Repo -> IO TopFilePath diff --git a/Git/LsTree.hs b/Git/LsTree.hs index 6e4cd8470..031dba0cf 100644 --- a/Git/LsTree.hs +++ b/Git/LsTree.hs @@ -20,13 +20,14 @@ import Common import Git import Git.Command import Git.Sha +import Git.FilePath import qualified Git.Filename data TreeItem = TreeItem { mode :: FileMode , typeobj :: String , sha :: String - , file :: FilePath + , file :: TopFilePath } deriving Show {- Lists the complete contents of a tree, with lazy output. -} @@ -48,7 +49,7 @@ parseLsTree l = TreeItem { mode = fst $ Prelude.head $ readOct m , typeobj = t , sha = s - , file = Git.Filename.decode f + , file = asTopFilePath $ Git.Filename.decode f } where -- l = <mode> SP <type> SP <sha> TAB <file> |