diff options
author | Joey Hess <joey@kitenet.net> | 2013-11-22 16:04:20 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-11-22 16:04:20 -0400 |
commit | b45b9d64280be90e552a187ab2e99a2e77f8346f (patch) | |
tree | 44d8b76f84013d2d3ceedb2295e540efec9ed337 | |
parent | 8e6e6c47702e2af19b2b319b0ebc37e5a749ff27 (diff) |
annex.autoupgrade setting
-rw-r--r-- | Assistant/Threads/Upgrader.hs | 18 | ||||
-rw-r--r-- | Types/Distribution.hs | 16 | ||||
-rw-r--r-- | Types/GitConfig.hs | 3 | ||||
-rw-r--r-- | doc/git-annex.mdwn | 17 |
4 files changed, 47 insertions, 7 deletions
diff --git a/Assistant/Threads/Upgrader.hs b/Assistant/Threads/Upgrader.hs index 95000fbef..c6cf82520 100644 --- a/Assistant/Threads/Upgrader.hs +++ b/Assistant/Threads/Upgrader.hs @@ -17,6 +17,7 @@ import Assistant.DaemonStatus import Assistant.Alert import Utility.NotificationBroadcaster import Utility.Tmp +import qualified Annex import qualified Build.SysConfig import qualified Utility.Url as Url import qualified Annex.Url as Url @@ -31,6 +32,7 @@ import qualified Data.Text as T upgraderThread :: UrlRenderer -> NamedThread upgraderThread urlrenderer = namedThread "Upgrader" $ do + checkUpgrade urlrenderer when (isJust Build.SysConfig.upgradelocation) $ do h <- liftIO . newNotificationHandle False . networkConnectedNotifier =<< getDaemonStatus go h Nothing @@ -40,12 +42,16 @@ upgraderThread urlrenderer = namedThread "Upgrader" $ do - check. -} go h lastchecked = do liftIO $ waitNotification h - now <- liftIO getCurrentTime - if maybe True (\t -> diffUTCTime now t > halfday) lastchecked - then do - checkUpgrade urlrenderer - go h =<< Just <$> liftIO getCurrentTime - else go h lastchecked + autoupgrade <- liftAnnex $ annexAutoUpgrade <$> Annex.getGitConfig + if autoupgrade == NoAutoUpgrade + then go h lastchecked + else do + now <- liftIO getCurrentTime + if maybe True (\t -> diffUTCTime now t > halfday) lastchecked + then do + checkUpgrade urlrenderer + go h =<< Just <$> liftIO getCurrentTime + else go h lastchecked halfday = 12 * 60 * 60 checkUpgrade :: UrlRenderer -> Assistant () diff --git a/Types/Distribution.hs b/Types/Distribution.hs index 4382dd072..4201f49ad 100644 --- a/Types/Distribution.hs +++ b/Types/Distribution.hs @@ -9,6 +9,7 @@ module Types.Distribution where import Types.Key import Data.Time.Clock +import Git.Config (isTrue, boolConfig) data GitAnnexDistribution = GitAnnexDistribution { distributionUrl :: String @@ -20,3 +21,18 @@ data GitAnnexDistribution = GitAnnexDistribution deriving (Read, Show, Eq) type GitAnnexVersion = String + +data AutoUpgrade = AskUpgrade | AutoUpgrade | NoAutoUpgrade + deriving (Eq) + +toAutoUpgrade :: (Maybe String) -> AutoUpgrade +toAutoUpgrade Nothing = AskUpgrade +toAutoUpgrade (Just s) + | s == "ask" = AskUpgrade + | isTrue s == Just True = AutoUpgrade + | otherwise = NoAutoUpgrade + +fromAutoUpgrade :: AutoUpgrade -> String +fromAutoUpgrade AskUpgrade = "ask" +fromAutoUpgrade AutoUpgrade = boolConfig True +fromAutoUpgrade NoAutoUpgrade = boolConfig False diff --git a/Types/GitConfig.hs b/Types/GitConfig.hs index b573a9a25..7224f43ff 100644 --- a/Types/GitConfig.hs +++ b/Types/GitConfig.hs @@ -17,6 +17,7 @@ import qualified Git import qualified Git.Config import Utility.DataUnits import Config.Cost +import Types.Distribution {- Main git-annex settings. Each setting corresponds to a git-config key - such as annex.foo -} @@ -42,6 +43,7 @@ data GitConfig = GitConfig , annexCrippledFileSystem :: Bool , annexLargeFiles :: Maybe String , annexFsckNudge :: Bool + , annexAutoUpgrade :: AutoUpgrade , coreSymlinks :: Bool , gcryptId :: Maybe String } @@ -70,6 +72,7 @@ extractGitConfig r = GitConfig , annexCrippledFileSystem = getbool (annex "crippledfilesystem") False , annexLargeFiles = getmaybe (annex "largefiles") , annexFsckNudge = getbool (annex "fscknudge") True + , annexAutoUpgrade = toAutoUpgrade $ getmaybe (annex "autoupgrade") , coreSymlinks = getbool "core.symlinks" True , gcryptId = getmaybe "core.gcrypt-id" } diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn index 15b8fd204..25e1045db 100644 --- a/doc/git-annex.mdwn +++ b/doc/git-annex.mdwn @@ -544,7 +544,7 @@ subdirectories). to their local `git-annex` branches. So the forgetfulness will automatically propigate out from its starting point until all repositories running git-annex have forgotten their old history. (You may need to force - git to push the branch to any git repositories not running git-annex. + git to push the branch to any git repositories not running git-annex.) * `repair` @@ -1147,6 +1147,21 @@ Here are all the supported configuration settings. When set to false, prevents the webapp from reminding you when using repositories that lack consistency checks. +* `annex.autoupgrade` + + When set to ask (the default), the webapp will check for new versions + and prompt if they should be upgraded to. When set to true, automatically + upgrades without prompting (on some supported platforms). When set to + false, disables any upgrade checking. + + Note that upgrade checking is only done when git-annex is installed + from one of the prebuilt images from its website. This does not + bypass eg, a Linux distribution's own upgrade handling code. + + This setting also controls whether to restart the git-annex assistant + when the git-annex binary is detected to have changed. That is useful + no matter how you installed git-annex. + * `annex.autocommit` Set to false to prevent the git-annex assistant from automatically |