add support for staging other types of blobs, like symlinks, into the index

Also added a utility TopFilePath type, which could stand to be used more
widely.
This commit is contained in:
Joey Hess 2012-06-06 14:26:15 -04:00
parent 993e6459a3
commit 91db540769
4 changed files with 53 additions and 7 deletions

34
Git/FilePath.hs Normal file
View file

@ -0,0 +1,34 @@
{- git FilePath library
-
- Different git commands use different types of FilePaths to refer to
- files in the repository. Some commands use paths relative to the
- top of the repository even when run in a subdirectory. Adding some
- types helps keep that straight.
-
- Copyright 2012 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Git.FilePath (
TopFilePath,
getTopFilePath,
toTopFilePath,
asTopFilePath,
) where
import Common
import Git
{- A FilePath, relative to the top of the git repository. -}
newtype TopFilePath = TopFilePath { getTopFilePath :: FilePath }
{- The input FilePath can be absolute, or relative to the CWD. -}
toTopFilePath :: FilePath -> Git.Repo -> IO TopFilePath
toTopFilePath file repo = TopFilePath <$>
relPathDirToFile (repoPath repo) <$> absPath file
{- The input FilePath must already be relative to the top of the git
- repository -}
asTopFilePath :: FilePath -> TopFilePath
asTopFilePath file = TopFilePath file