git-annex/Command/Uninit.hs

57 lines
1.4 KiB
Haskell
Raw Normal View History

2010-12-03 04:33:41 +00:00
{- git-annex command
-
- Copyright 2010 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Command.Uninit where
import Control.Monad.State (liftIO)
import System.Directory
2011-07-04 19:50:30 +00:00
import System.Exit
2010-12-03 04:33:41 +00:00
import Command
import Messages
import Types
import Utility
import qualified Git
2010-12-03 04:33:41 +00:00
import qualified Annex
import qualified Command.Unannex
import qualified Command.Init
2011-07-04 19:50:30 +00:00
import qualified Branch
import Content
2010-12-03 04:33:41 +00:00
command :: [Command]
command = [repoCommand "uninit" paramPath seek
"de-initialize git-annex and clean out repository"]
seek :: [CommandSeek]
seek = [withFilesInGit Command.Unannex.start, withNothing start]
2010-12-03 04:33:41 +00:00
start :: CommandStartNothing
2011-07-04 19:50:30 +00:00
start = next perform
2010-12-03 04:33:41 +00:00
perform :: CommandPerform
2011-07-04 19:50:30 +00:00
perform = next cleanup
cleanup :: CommandCleanup
cleanup = do
2010-12-03 04:33:41 +00:00
g <- Annex.gitRepo
gitPreCommitHookUnWrite g
2011-07-04 19:50:30 +00:00
saveState
liftIO $ Git.run g "branch" [Param "-D", Param Branch.name]
-- bypass normal shutdown, which writes to the deleted branch
liftIO exitSuccess
2010-12-03 04:33:41 +00:00
gitPreCommitHookUnWrite :: Git.Repo -> Annex ()
gitPreCommitHookUnWrite repo = do
let hook = Command.Init.preCommitHook repo
whenM (liftIO $ doesFileExist hook) $ do
2010-12-03 04:33:41 +00:00
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."