diff options
-rw-r--r-- | Command/Init.hs | 2 | ||||
-rw-r--r-- | Command/Version.hs | 3 | ||||
-rw-r--r-- | Upgrade.hs | 6 | ||||
-rw-r--r-- | Version.hs | 37 |
4 files changed, 16 insertions, 32 deletions
diff --git a/Command/Init.hs b/Command/Init.hs index dbf5666cd..df416eed3 100644 --- a/Command/Init.hs +++ b/Command/Init.hs @@ -22,7 +22,7 @@ import Types import Utility command :: [Command] -command = [repoCommand "init" paramDesc seek +command = [standaloneCommand "init" paramDesc seek "initialize git-annex with repository description"] seek :: [CommandSeek] diff --git a/Command/Version.hs b/Command/Version.hs index 755b95acc..bb7acd12d 100644 --- a/Command/Version.hs +++ b/Command/Version.hs @@ -9,6 +9,7 @@ module Command.Version where import Control.Monad.State (liftIO) import Data.String.Utils +import Data.Maybe import Command import qualified SysConfig @@ -24,7 +25,7 @@ start :: CommandStartNothing start = do liftIO $ putStrLn $ "git-annex version: " ++ SysConfig.packageversion v <- getVersion - liftIO $ putStrLn $ "local repository version: " ++ v + liftIO $ putStrLn $ "local repository version: " ++ fromMaybe "unknown" v liftIO $ putStrLn $ "default repository version: " ++ defaultVersion liftIO $ putStrLn $ "supported repository versions: " ++ vs supportedVersions liftIO $ putStrLn $ "upgrade supported from repository versions: " ++ vs upgradableVersions diff --git a/Upgrade.hs b/Upgrade.hs index 6cd75cf3e..a724ecce3 100644 --- a/Upgrade.hs +++ b/Upgrade.hs @@ -18,7 +18,7 @@ upgrade :: Annex Bool upgrade = do version <- getVersion case version of - "0" -> Upgrade.V0.upgrade - "1" -> Upgrade.V1.upgrade - "2" -> Upgrade.V2.upgrade + Just "0" -> Upgrade.V0.upgrade + Just "1" -> Upgrade.V1.upgrade + Just "2" -> Upgrade.V2.upgrade _ -> return True diff --git a/Version.hs b/Version.hs index 72d06f663..690e693e2 100644 --- a/Version.hs +++ b/Version.hs @@ -7,14 +7,11 @@ module Version where -import Control.Monad.State (liftIO) import Control.Monad (unless) -import System.Directory import Types import qualified Annex import qualified GitRepo as Git -import Locations import Config type Version = String @@ -31,40 +28,26 @@ upgradableVersions = ["0", "1", "2"] versionField :: String versionField = "annex.version" -getVersion :: Annex Version +getVersion :: Annex (Maybe Version) getVersion = do g <- Annex.gitRepo let v = Git.configGet g versionField "" if not $ null v - then return v - else do - -- version 0 was not recorded in .git/config; - -- such a repo should have an gitAnnexDir but no - -- gitAnnexObjectDir. - -- - -- version 1 may not be recorded if the user - -- forgot to init. Such a repo should have a - -- gitAnnexObjectDir already. - d <- liftIO $ doesDirectoryExist $ gitAnnexDir g - o <- liftIO $ doesDirectoryExist $ gitAnnexObjectDir g - case (d, o) of - (True, False) -> return "0" - (True, True) -> return "1" - _ -> do - setVersion - return defaultVersion + then return $ Just v + else return Nothing setVersion :: Annex () setVersion = setConfig versionField defaultVersion checkVersion :: Annex () -checkVersion = do - v <- getVersion - unless (v `elem` supportedVersions) $ do - error $ "Repository version " ++ v ++ - " is not supported. " ++ - msg v +checkVersion = getVersion >>= handle where + handle Nothing = error "First run: git-annex init" + handle (Just v) = do + unless (v `elem` supportedVersions) $ do + error $ "Repository version " ++ v ++ + " is not supported. " ++ + msg v msg v | v `elem` upgradableVersions = "Upgrade this repository: git-annex upgrade" | otherwise = "Upgrade git-annex." |