aboutsummaryrefslogtreecommitdiff
path: root/Command/Direct.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-12-18 15:04:44 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-12-18 15:04:44 -0400
commit10d77d95f454a2fb2806c031a14344dd7cdea006 (patch)
treeb9ba63e2f844031d4fd1d8248e5b01e7b5be7902 /Command/Direct.hs
parent19e46a374225bc37131454774f20da4c6a7779d9 (diff)
direct mode merging works!
Automatic merge resoltion code needs to be fixed to preserve objects from direct mode files.
Diffstat (limited to 'Command/Direct.hs')
-rw-r--r--Command/Direct.hs25
1 files changed, 6 insertions, 19 deletions
diff --git a/Command/Direct.hs b/Command/Direct.hs
index 598a7b4b3..991930c38 100644
--- a/Command/Direct.hs
+++ b/Command/Direct.hs
@@ -13,8 +13,7 @@ import qualified Git
import qualified Git.Command
import qualified Git.LsFiles
import Config
-import Annex.Content
-import Annex.Content.Direct
+import Annex.Direct
def :: [Command]
def = [command "direct" paramNothing seek "switch repository to direct mode"]
@@ -41,25 +40,13 @@ perform = do
void $ liftIO clean
next cleanup
where
- {- Walk tree from top and move all present objects to the
- - files that link to them, while updating direct mode mappings. -}
go = whenAnnexed $ \f (k, _) -> do
- loc <- inRepo $ gitAnnexLocation k
- createContentDir loc -- thaws directory too
- locs <- filter (/= f) <$> addAssociatedFile k f
- case locs of
- [] -> whenM (liftIO $ doesFileExist loc) $ do
- {- Move content from annex to direct file. -}
+ r <- toDirect k f
+ case r of
+ Nothing -> noop
+ Just a -> do
showStart "direct" f
- updateCache k loc
- thawContent loc
- liftIO $ replaceFile f $ moveFile loc
- showEndOk
- (loc':_) -> do
- {- Another direct file has the content, so
- - hard link to it. -}
- showStart "direct" f
- liftIO $ replaceFile f $ createLink loc'
+ a
showEndOk
return Nothing