summaryrefslogtreecommitdiff
path: root/Core.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-10-14 16:13:43 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-10-14 16:13:43 -0400
commitaa2f4bd81049e3bcaad6f5f1334864ce14887527 (patch)
treec95789d863313ab610a6ebd4514ed2623801dd28 /Core.hs
parentd4ce0724527fa0155f737b5d3e94e190c27d29dc (diff)
bug
Diffstat (limited to 'Core.hs')
-rw-r--r--Core.hs65
1 files changed, 26 insertions, 39 deletions
diff --git a/Core.hs b/Core.hs
index 431c9c9e6..644bedd00 100644
--- a/Core.hs
+++ b/Core.hs
@@ -6,52 +6,39 @@ import System.IO
import System.Directory
import Control.Monad.State (liftIO)
import Types
-import BackendList
import Locations
import UUID
import qualified GitRepo as Git
import qualified Annex
-
-{- Create and returns an Annex state object.
- - Examines and prepares the git repo.
- -}
-start :: IO AnnexState
-start = do
- g <- Git.repoFromCwd
- let s = Annex.new g
- (_,s') <- Annex.run s (prep g)
- return s'
- where
- prep g = do
- -- setup git and read its config; update state
- g' <- liftIO $ Git.configRead g
- Annex.gitRepoChange g'
- liftIO $ gitSetup g'
- prepUUID
-
+
{- Sets up a git repo for git-annex. May be called repeatedly. -}
-gitSetup :: Git.Repo -> IO ()
-gitSetup repo = do
- -- configure git to use union merge driver on state files
- exists <- doesFileExist attributes
- if (not exists)
- then do
- writeFile attributes $ attrLine ++ "\n"
- commit
- else do
- content <- readFile attributes
- if (all (/= attrLine) (lines content))
+gitSetup :: Annex ()
+gitSetup = do
+ g <- Annex.gitRepo
+ liftIO $ setupattributes g
+ prepUUID
+ where
+ -- configure git to use union merge driver on state files
+ setupattributes repo = do
+ exists <- doesFileExist attributes
+ if (not exists)
then do
- appendFile attributes $ attrLine ++ "\n"
+ writeFile attributes $ attrLine ++ "\n"
commit
- else return ()
- where
- attrLine = stateLoc ++ "/*.log merge=union"
- attributes = Git.attributes repo
- commit = do
- Git.run repo ["add", attributes]
- Git.run repo ["commit", "-m", "git-annex setup",
- attributes]
+ else do
+ content <- readFile attributes
+ if (all (/= attrLine) (lines content))
+ then do
+ appendFile attributes $ attrLine ++ "\n"
+ commit
+ else return ()
+ where
+ attrLine = stateLoc ++ "/*.log merge=union"
+ attributes = Git.attributes repo
+ commit = do
+ Git.run repo ["add", attributes]
+ Git.run repo ["commit", "-m", "git-annex setup",
+ attributes]
{- Checks if a given key is currently present in the annexLocation -}
inAnnex :: Backend -> Key -> Annex Bool