summaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-10-27 15:47:11 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-10-27 15:47:11 -0400
commit66194684acaf8dc5c72e5a163465b42050cf9212 (patch)
treea29e4f6a678036e34ff85117887301c9b4f79353 /Command
parent83d11c03c44779c000759040eca8797e70e4765c (diff)
uninit: Add guard against being run with the git-annex branch checked out.
Diffstat (limited to 'Command')
-rw-r--r--Command/Uninit.hs17
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