summaryrefslogtreecommitdiff
path: root/Annex/AdjustedBranch.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Annex/AdjustedBranch.hs')
-rw-r--r--Annex/AdjustedBranch.hs16
1 files changed, 16 insertions, 0 deletions
diff --git a/Annex/AdjustedBranch.hs b/Annex/AdjustedBranch.hs
index e9e6ab461..26a24d8e6 100644
--- a/Annex/AdjustedBranch.hs
+++ b/Annex/AdjustedBranch.hs
@@ -21,6 +21,8 @@ module Annex.AdjustedBranch (
updateAdjustedBranch,
propigateAdjustedCommits,
checkAdjustedClone,
+ isGitVersionSupported,
+ checkVersionSupported,
) where
import Annex.Common
@@ -39,6 +41,8 @@ import Git.Env
import Git.Index
import Git.FilePath
import qualified Git.LockFile
+import qualified Git.Version
+import Annex.Version
import Annex.CatFile
import Annex.Link
import Annex.AutoMerge
@@ -507,3 +511,15 @@ checkAdjustedClone = go =<< inRepo Git.Branch.current
setBasisBranch basis remotebranch
unlessM (inRepo $ Git.Ref.exists origbranch) $
inRepo $ Git.Branch.update' origbranch remotebranch
+
+-- git 2.2.0 needed for GIT_COMMON_DIR which is needed
+-- by updateAdjustedBranch to use withWorkTreeRelated.
+isGitVersionSupported :: IO Bool
+isGitVersionSupported = not <$> Git.Version.older "2.2.0"
+
+checkVersionSupported :: Annex ()
+checkVersionSupported = do
+ unlessM versionSupportsAdjustedBranch $
+ error "Adjusted branches are only supported in v6 or newer repositories."
+ unlessM (liftIO isGitVersionSupported) $
+ error "Your version of git is too old; upgrade it to 2.2.0 or newer to use adjusted branches."