summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2010-11-08 16:40:42 -0400
committerGravatar Joey Hess <joey@kitenet.net>2010-11-08 16:40:42 -0400
commit98a77ab7256e484d29d67fcffc1f173fcb830f60 (patch)
treee720f42b2a0c8eeed1d972a207ef6587c2b9c5d5
parent50ec22e322ecc0538a0629e32313c0d8ec4ffd45 (diff)
add
-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