summaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-08-17 14:14:43 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-08-17 14:44:31 -0400
commit56f6923ccbc6fb1932137b53458a4cece47e69b0 (patch)
treea2c9a949f2c6c5163551a76f4012e7606e3c1463 /Command
parent3b5f7221305ba6e768711d8326a01b78fb1e4f79 (diff)
Now "git annex init" only has to be run once
when a git repository is first being created. Clones will automatically notice that git-annex is in use and automatically perform a basic initalization. It's still recommended to run "git annex init" in any clones, to describe them.
Diffstat (limited to 'Command')
-rw-r--r--Command/Init.hs38
-rw-r--r--Command/Uninit.hs17
2 files changed, 5 insertions, 50 deletions
diff --git a/Command/Init.hs b/Command/Init.hs
index 71e87050d..019106051 100644
--- a/Command/Init.hs
+++ b/Command/Init.hs
@@ -7,19 +7,13 @@
module Command.Init where
-import Control.Monad.State (liftIO)
-import Control.Monad (when, unless)
-import System.Directory
+import Control.Monad (when)
import Command
import qualified Annex
-import qualified Git
-import qualified Branch
import UUID
-import Version
import Messages
-import Types
-import Utility
+import Init
command :: [Command]
command = [standaloneCommand "init" paramDesc seek
@@ -39,34 +33,8 @@ start ws = do
perform :: String -> CommandPerform
perform description = do
- Branch.create
+ initialize
g <- Annex.gitRepo
u <- getUUID g
- setVersion
describeUUID u description
- unless (Git.repoIsLocalBare g) $
- gitPreCommitHookWrite g
next $ return True
-
-{- set up a git pre-commit hook, if one is not already present -}
-gitPreCommitHookWrite :: Git.Repo -> Annex ()
-gitPreCommitHookWrite repo = do
- exists <- liftIO $ doesFileExist hook
- if exists
- then warning $ "pre-commit hook (" ++ hook ++ ") already exists, not configuring"
- else liftIO $ do
- viaTmp writeFile hook preCommitScript
- p <- getPermissions hook
- setPermissions hook $ p {executable = True}
- where
- hook = preCommitHook repo
-
-preCommitHook :: Git.Repo -> FilePath
-preCommitHook repo =
- Git.workTree repo ++ "/" ++ Git.gitDir repo ++ "/hooks/pre-commit"
-
-preCommitScript :: String
-preCommitScript =
- "#!/bin/sh\n" ++
- "# automatically configured by git-annex\n" ++
- "git annex pre-commit .\n"
diff --git a/Command/Uninit.hs b/Command/Uninit.hs
index 8b8d7e364..195246aa8 100644
--- a/Command/Uninit.hs
+++ b/Command/Uninit.hs
@@ -12,13 +12,11 @@ import System.Directory
import System.Exit
import Command
-import Messages
-import Types
import Utility
import qualified Git
import qualified Annex
import qualified Command.Unannex
-import qualified Command.Init
+import Init
import qualified Branch
import Content
import Locations
@@ -47,7 +45,7 @@ perform = next cleanup
cleanup :: CommandCleanup
cleanup = do
g <- Annex.gitRepo
- gitPreCommitHookUnWrite g
+ uninitialize
mapM_ removeAnnex =<< getKeysPresent
liftIO $ removeDirectoryRecursive (gitAnnexDir g)
-- avoid normal shutdown
@@ -55,14 +53,3 @@ cleanup = do
liftIO $ do
Git.run g "branch" [Param "-D", Param Branch.name]
exitSuccess
-
-gitPreCommitHookUnWrite :: Git.Repo -> Annex ()
-gitPreCommitHookUnWrite repo = do
- let hook = Command.Init.preCommitHook repo
- whenM (liftIO $ doesFileExist hook) $ do
- c <- liftIO $ readFile hook
- if c == Command.Init.preCommitScript
- then liftIO $ removeFile hook
- else warning $ "pre-commit hook (" ++ hook ++
- ") contents modified; not deleting." ++
- " Edit it to remove call to git annex."