summaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-12-18 17:15:16 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-12-18 17:15:16 -0400
commitea7dc8c893299331684ac0f68b78e96ad037baef (patch)
tree0953358a62c7c9e7dc7aa3de6c733d702f114606 /Command
parent845de8f36631f8bb18abba43d00e44fa38e91cbf (diff)
partial and incomplete automatic merging in direct mode
Handles our file right, but not theirs.
Diffstat (limited to 'Command')
-rw-r--r--Command/Direct.hs2
-rw-r--r--Command/Sync.hs11
2 files changed, 10 insertions, 3 deletions
diff --git a/Command/Direct.hs b/Command/Direct.hs
index 991930c38..8e7f40145 100644
--- a/Command/Direct.hs
+++ b/Command/Direct.hs
@@ -41,7 +41,7 @@ perform = do
next cleanup
where
go = whenAnnexed $ \f (k, _) -> do
- r <- toDirect k f
+ r <- toDirectGen k f
case r of
Nothing -> noop
Just a -> do
diff --git a/Command/Sync.hs b/Command/Sync.hs
index 2d1b2fb9c..d6736a616 100644
--- a/Command/Sync.hs
+++ b/Command/Sync.hs
@@ -15,6 +15,7 @@ import qualified Annex
import qualified Annex.Branch
import qualified Annex.Queue
import Annex.Content
+import Annex.Content.Direct
import Annex.Direct
import Annex.CatFile
import qualified Git.Command
@@ -234,7 +235,8 @@ resolveMerge' :: LsFiles.Unmerged -> Annex Bool
resolveMerge' u
| issymlink LsFiles.valUs && issymlink LsFiles.valThem =
withKey LsFiles.valUs $ \keyUs ->
- withKey LsFiles.valThem $ \keyThem -> go keyUs keyThem
+ withKey LsFiles.valThem $ \keyThem -> do
+ go keyUs keyThem
| otherwise = return False
where
go keyUs keyThem
@@ -242,7 +244,10 @@ resolveMerge' u
makelink keyUs
return True
| otherwise = do
- liftIO $ nukeFile file
+ ifM isDirect
+ ( maybe noop (\k -> removeDirect k file) keyUs
+ , liftIO $ nukeFile file
+ )
Annex.Queue.addCommand "rm" [Params "--quiet -f --"] [file]
makelink keyUs
makelink keyThem
@@ -257,6 +262,8 @@ resolveMerge' u
nukeFile dest
createSymbolicLink l dest
Annex.Queue.addCommand "add" [Param "--force", Param "--"] [dest]
+ whenM (isDirect) $
+ toDirect key dest
makelink _ = noop
withKey select a = do
let msha = select $ LsFiles.unmergedSha u