diff options
Diffstat (limited to 'Git/LsFiles.hs')
-rw-r--r-- | Git/LsFiles.hs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/Git/LsFiles.hs b/Git/LsFiles.hs index 0de86383d..201d76d1d 100644 --- a/Git/LsFiles.hs +++ b/Git/LsFiles.hs @@ -65,7 +65,13 @@ typeChanged :: [FilePath] -> Repo -> IO [FilePath] typeChanged = typeChanged' [] typeChanged' :: [CommandParam] -> [FilePath] -> Repo -> IO [FilePath] -typeChanged' ps l = pipeNullSplit $ prefix ++ ps ++ suffix +typeChanged' ps l repo = do + fs <- pipeNullSplit (prefix ++ ps ++ suffix) repo + -- git diff returns filenames relative to the top of the git repo; + -- convert to filenames relative to the cwd, like git ls-files. + let top = workTree repo + cwd <- getCurrentDirectory + return $ map (\f -> relPathDirToFile cwd $ top </> f) fs where prefix = [Params "diff --name-only --diff-filter=T -z"] suffix = Param "--" : map File l |