summaryrefslogtreecommitdiff
path: root/Command/Uninit.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-06-11 10:33:58 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-06-11 10:33:58 -0400
commit7f70767bfb2ada474274c1dfad0e1a6d60955402 (patch)
treef9abf52f8f9cc25a334a80cbdd4fb7255df71154 /Command/Uninit.hs
parent28242b3bf8d75bf5b789830b66b90cec92e296d5 (diff)
uninit: Refuse to run in a subdirectory. Closes: #677076
Diffstat (limited to 'Command/Uninit.hs')
-rw-r--r--Command/Uninit.hs6
1 files changed, 5 insertions, 1 deletions
diff --git a/Command/Uninit.hs b/Command/Uninit.hs
index d6283a77d..5724bffd0 100644
--- a/Command/Uninit.hs
+++ b/Command/Uninit.hs
@@ -23,9 +23,13 @@ def = [addCheck check $ command "uninit" paramPaths seek
check :: Annex ()
check = do
- b <- current_branch
+ b <- current_branch
when (b == Annex.Branch.name) $ error $
"cannot uninit when the " ++ show b ++ " branch is checked out"
+ top <- fromRepo Git.repoPath
+ cwd <- liftIO getCurrentDirectory
+ whenM ((/=) <$> liftIO (absPath top) <*> liftIO (absPath cwd)) $ error $
+ "can only run uninit from the top of the git repository"
where
current_branch = Git.Ref . Prelude.head . lines <$> revhead
revhead = inRepo $ Git.Command.pipeRead