diff options
author | Joey Hess <joey@kitenet.net> | 2011-03-16 02:15:54 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-03-16 02:16:25 -0400 |
commit | a4d0250298a503c7d9093e6dd1618ff5b07b19e5 (patch) | |
tree | b47ca090446bae9c713eda47ba0425c8eb89390c /Version.hs | |
parent | e227c210ec817eca6b4409cb4cc893f791d51c00 (diff) |
slways set current version in new repos
detect v1 repos that don't have a version set
Diffstat (limited to 'Version.hs')
-rw-r--r-- | Version.hs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/Version.hs b/Version.hs index 7fdbd1a49..5f414e93b 100644 --- a/Version.hs +++ b/Version.hs @@ -21,21 +21,28 @@ currentVersion = "2" versionField :: String versionField = "annex.version" -getVersion :: Annex (Maybe String) +getVersion :: Annex String getVersion = do g <- Annex.gitRepo let v = Git.configGet g versionField "" if not $ null v - then return $ Just v + then return v else do -- version 0 was not recorded in .git/config; -- such a repo should have an gitAnnexDir but no - -- gitAnnexObjectDir + -- 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 - if d && not o - then return $ Just "0" - else return Nothing -- no version yet + case (d, o) of + (True, False) -> return "0" + (True, True) -> return "1" + _ -> do + setVersion + return currentVersion setVersion :: Annex () setVersion = Annex.setConfig versionField currentVersion |