diff options
author | Joey Hess <joey@kitenet.net> | 2011-10-27 15:47:11 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-10-27 15:47:11 -0400 |
commit | 66194684acaf8dc5c72e5a163465b42050cf9212 (patch) | |
tree | a29e4f6a678036e34ff85117887301c9b4f79353 /Command | |
parent | 83d11c03c44779c000759040eca8797e70e4765c (diff) |
uninit: Add guard against being run with the git-annex branch checked out.
Diffstat (limited to 'Command')
-rw-r--r-- | Command/Uninit.hs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/Command/Uninit.hs b/Command/Uninit.hs index 7b3b4fe32..8214c4208 100644 --- a/Command/Uninit.hs +++ b/Command/Uninit.hs @@ -7,6 +7,8 @@ module Command.Uninit where +import qualified Data.ByteString.Lazy.Char8 as B + import Common.Annex import Command import qualified Git @@ -21,7 +23,20 @@ command = [repoCommand "uninit" paramPaths seek "de-initialize git-annex and clean out repository"] seek :: [CommandSeek] -seek = [withFilesInGit startUnannex, withNothing start] +seek = [withNothing startCheck, withFilesInGit startUnannex, withNothing start] + +startCheck :: CommandStart +startCheck = do + b <- current_branch + when (b == Annex.Branch.name) $ error $ + "cannot uninit when the " ++ b ++ " branch is checked out" + stop + where + current_branch = do + g <- gitRepo + b <- liftIO $ + Git.pipeRead g [Params "rev-parse --abbrev-ref HEAD"] + return $ head $ lines $ B.unpack b startUnannex :: FilePath -> CommandStart startUnannex file = do |