summaryrefslogtreecommitdiff
path: root/Annex/Direct.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-10-17 15:11:21 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-10-17 15:11:21 -0400
commit6668fe0ca201fb28311ca10300afc06136d38211 (patch)
tree76b01abe2e4227f0c2ad29f71b665cfe0194c1e6 /Annex/Direct.hs
parentbf1d81bd3ec7b4128d13ca04d2a90c8165d5ee2f (diff)
update for DiffTree type change (which fixes assistant in subdir confusion bug)
Diffstat (limited to 'Annex/Direct.hs')
-rw-r--r--Annex/Direct.hs17
1 files changed, 9 insertions, 8 deletions
diff --git a/Annex/Direct.hs b/Annex/Direct.hs
index 96d3cdcc0..ea2b577b9 100644
--- a/Annex/Direct.hs
+++ b/Annex/Direct.hs
@@ -13,6 +13,7 @@ import qualified Git.LsFiles
import qualified Git.Merge
import qualified Git.DiffTree as DiffTree
import Git.Sha
+import Git.FilePath
import Git.Types
import Annex.CatFile
import qualified Annex.Queue
@@ -136,22 +137,22 @@ mergeDirect d branch g = do
mergeDirectCleanup :: FilePath -> Git.Ref -> Git.Ref -> Annex ()
mergeDirectCleanup d oldsha newsha = do
(items, cleanup) <- inRepo $ DiffTree.diffTreeRecursive oldsha newsha
- forM_ items updated
+ makeabs <- flip fromTopFilePath <$> gitRepo
+ forM_ items (updated makeabs)
void $ liftIO cleanup
liftIO $ removeDirectoryRecursive d
where
- updated item = do
+ updated makeabs item = do
+ let f = makeabs (DiffTree.file item)
void $ tryAnnex $
- go DiffTree.srcsha DiffTree.srcmode moveout moveout_raw
+ go f DiffTree.srcsha DiffTree.srcmode moveout moveout_raw
void $ tryAnnex $
- go DiffTree.dstsha DiffTree.dstmode movein movein_raw
+ go f DiffTree.dstsha DiffTree.dstmode movein movein_raw
where
- go getsha getmode a araw
+ go f getsha getmode a araw
| getsha item == nullSha = noop
- | otherwise =
- maybe (araw f) (\k -> void $ a k f)
+ | otherwise = maybe (araw f) (\k -> void $ a k f)
=<< catKey (getsha item) (getmode item)
- f = DiffTree.file item
moveout = removeDirect