summaryrefslogtreecommitdiff
path: root/Git/UnionMerge.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Git/UnionMerge.hs')
-rw-r--r--Git/UnionMerge.hs6
1 files changed, 4 insertions, 2 deletions
diff --git a/Git/UnionMerge.hs b/Git/UnionMerge.hs
index 504147e1d..d77e9313c 100644
--- a/Git/UnionMerge.hs
+++ b/Git/UnionMerge.hs
@@ -58,9 +58,11 @@ diffOpts = ["--raw", "-z", "-r", "--no-renames", "-l0"]
{- Streams update-index changes to perform a merge,
- using git to get a raw diff. -}
doMerge :: CatFileHandle -> [String] -> Repo -> Streamer
-doMerge ch differ repo streamer = gendiff >>= go
+doMerge ch differ repo streamer = do
+ (diff, cleanup) <- pipeNullSplit (map Param differ) repo
+ go diff
+ void $ cleanup
where
- gendiff = pipeNullSplit (map Param differ) repo
go [] = noop
go (info:file:rest) = mergeFile info file ch repo >>=
maybe (go rest) (\l -> streamer l >> go rest)