summaryrefslogtreecommitdiff
path: root/Version.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Version.hs')
-rw-r--r--Version.hs39
1 files changed, 39 insertions, 0 deletions
diff --git a/Version.hs b/Version.hs
new file mode 100644
index 000000000..ce39c0c1b
--- /dev/null
+++ b/Version.hs
@@ -0,0 +1,39 @@
+{- git-annex repository versioning
+ -
+ - Copyright 2010 Joey Hess <joey@kitenet.net>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Version where
+
+import Control.Monad.State (liftIO)
+import System.Directory
+
+import Types
+import qualified Annex
+import qualified GitRepo as Git
+import Locations
+
+currentVersion :: String
+currentVersion = "1"
+
+versionField :: String
+versionField = "annex.version"
+
+getVersion :: Annex (Maybe String)
+getVersion = do
+ g <- Annex.gitRepo
+ let v = Git.configGet g versionField ""
+ if (not $ null v)
+ then return $ Just v
+ else do
+ -- version 0 was not recorded in .git/config;
+ -- such a repo should have an annexDir
+ d <- liftIO $ doesDirectoryExist $ annexDir g
+ if (d)
+ then return $ Just "0"
+ else return Nothing -- no version yet
+
+setVersion :: Annex ()
+setVersion = Annex.setConfig versionField currentVersion